R OBLOX S CRIPT EXEC UTOR (RSEXEC) เป็นอินเทอร์เฟซบรรทัดคำสั่งซึ่งส่วนใหญ่ใช้ API ที่ใช้แล้วเพื่อเรียกใช้สคริปต์บนไคลเอนต์RōBlox Sister Repository ไปยังสคริปต์ลูกค้า Roblox ส่วนตัว
ในการเรียกใช้โปรแกรมของฉันตรวจสอบให้แน่ใจว่ามีการติดตั้ง Python และคุณใช้ Windows
PIP Install -r rechent.txtpython src/main.py
ฉันใช้ JJSploit มาสองสามปีแล้วและพบว่าการจัดการกับ GUIS ที่นั่นเมื่อเวิร์กโฟลว์อื่น ๆ ของฉันอาศัยอยู่ใน PowerShell นั้นไม่เหมาะสำหรับการเพิ่มผลผลิต มันเป็นเรื่องยุ่งยากสำหรับฉันที่จะเปิดหน้าต่างตัวเลือกไฟล์ใหม่และแก้ไขค่าเริ่มต้นสองสามค่าเพื่อรับสคริปต์ที่ฉันบันทึกไว้เพื่อเรียกใช้ คลิกมากเกินไป!
เพื่อแก้ปัญหานั้นฉันต้องทำซ้ำ ฉันเริ่มต้นด้วยการเพิ่มฟังก์ชั่นส่วนกลาง getrenv().exec
ซึ่งผ่านในเส้นทางไฟล์เทียบกับ /workspace
และพารามิเตอร์อื่น ๆ จากนั้นฉันต้องแก้ไขสคริปต์ที่มีอยู่เพื่อทำงานกับระบบพารามิเตอร์ของฉัน ฉันตรวจสอบให้แน่ใจว่าสคริปต์สามารถกลับมาได้ในกรณีที่พวกเขาต้องการ t สิ่งนี้เปลี่ยนฮับสคริปต์พื้นฐานของฉันให้กลายเป็นไลบรารีฟังก์ชั่นที่ขยายได้!
ฉันยังไม่เสร็จ! ฉันเขียนโปรแกรม Python เพื่อเชื่อมต่อ DLL ที่สวมใส่ผ่าน finj.exe
และเชื่อมต่อกับท่อชื่อจากความสะดวกสบายของขั้วของฉัน เอาต์พุตยังคงพิมพ์ลงบนคอนโซลนักพัฒนาซึ่งยังคงต้องใช้การแทรกแซงของเมาส์ - ดังนั้นฉันจึงเขียนรหัส wrapper clunky ที่ส่งออกโมดูลโมดูลลงในคอนโซล (และไม่ใช้ rconsoleprint) มันได้รับการปรับปรุงอย่างมาก
คำสั่งที่แสดงไม่ได้สะท้อนสิ่งที่มีอยู่ในสภาพแวดล้อม lua getrenv()
หรือ getfenv()
คำสั่งประกอบด้วยสองส่วนหลัก: หัวและร่างกาย
หัว เป็นสายย่อยตั้งแต่อักขระที่ไม่ใช่ไวท์สเปซตัวแรกไปจนถึงพื้นที่แรกหลังจากนั้น
หัวมักจะชี้ไปที่นามแฝงซึ่งเป็นไฟล์ในรูปแบบต่อไปนี้:
$ {root_folder}/workspace/$ {base_name} .lua
ร่างกาย คือทุกสิ่งหลังจากนั้น
คำสั่งบางคำ (เช่น find
) แบ่งร่างกายออกเป็นพารามิเตอร์ที่แตกต่างกันโดยใช้ตัวคั่นช่องว่าง คนอื่น ๆ (เช่น output
) ปฏิบัติต่อร่างกายทั้งหมดเป็นข้อโต้แย้งเดียว
คำสั่งจะถูกนำหน้าโดยอย่างใดอย่างหนึ่ง ;
หรือ :
ไม่ได้ใช้เพื่อเริ่มต้นคำสั่งใน lua (u)
> ;output 6+4 10
> ;output "string" string
> ;output workspace game.Workspace
output
คำนำหน้าสามารถทดแทนได้สำหรับ o
เป็นไปได้ที่จะจัดเก็บ tuples หลายค่าลงในตัวแปร lua _E.OUTPUT
ในสคริปต์พื้นที่ทำงาน (ดู 'การจัดรูปแบบเอาต์พุต') เอาต์พุตที่สร้างขึ้นจากค่าคืนหลายค่าถูกคั่นด้วย ;
- ฟังก์ชั่น string.gsub()
ใน lua ตัวอย่างเช่นส่งคืน tuple ประกอบด้วย (สตริง, ตัวเลข) :
> ;output (string.gsub("abb", "b", "c")) acc; 2
/workspace
> ;chat "I'm exploiting and probably will catch someone's attention!" 6
if /workspace/chat.lua
มีอยู่มันจะถูกดำเนินการด้วยตารางทั่วโลก _E.ARGS
เริ่มต้นเป็น:
{"ฉันใช้ประโยชน์และอาจจะดึงดูดความสนใจของใครบางคน!", 6}
สคริปต์บางอย่างกลับมา
> ;plr 'vis' game.Players.VisualPlugin
เช่นเดียวกับแพลตฟอร์มการดำเนินการสคริปต์ที่ดี RSEXEC ควรจะสามารถเรียกใช้สคริปต์จากอินเทอร์เน็ตได้ ชื่อ loadstring
ทำให้เข้าใจผิดที่นี่เพราะไม่เหมือนกับคู่ของ Lua มันยังคว้ารหัส LUA จาก URL ที่ให้ไว้ โปรดทราบว่า URL ไม่ ได้ถูกห่อด้วยคำพูดเนื่องจากไม่ได้แยกวิเคราะห์จากวัตถุ LUA
> ;ls https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source
วิธีนี้ใช้งานได้ดีกว่าเช่นเดียวกับ:
loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
คำนำหน้า ls
สามารถทดแทนสำหรับ loadstring
บล็อกรหัสที่ไม่มีคำนำหน้าคำสั่งจะถูกส่งผ่านใน AS-IS ไปยังผู้ประเมิน
> game.Players.LocalPlayer.Character.Humanoid.Health = 0
> ;snippet game.Players.LocalPlayer.Character.Humanoid.Health = 0
ตัวละครของคุณควรตายด้วยวิธีใดวิธีหนึ่ง
หรือคุณสามารถใช้ snippet
คำนำหน้า
snippet
คำนำหน้าสามารถทดแทนสำหรับ snip
หรือ s
ตัวอย่างหลายบรรทัดทำให้การรับอินพุตเป็นบรรทัดที่ว่างเปล่าแรก มีประโยชน์สำหรับการสร้างต้นแบบ ... ฉันเดา?
> ;multiline game.Players.LocalPlayer.Character.Humanoid.Health = 0 > ;o 6 6
นั่นเป็นอีกวิธีหนึ่งที่ตัวละครของคุณจะตาย นอกจากนี้ยังพิมพ์ 6 เพื่อส่งเสริมความแตกต่าง
คำนำหน้า multiline
สามารถทดแทนได้สำหรับ ml
หรือ m
> ;del [[tree game.Workspace:GetDescendants()]]
จาก /workspace/tree.lua
ส่งคืนรายการของวัตถุทั้งหมดในพื้นที่ทำงานของคุณ
จากนั้นจาก /workspace/del.lua
ลบทุกอย่างในรายการ
ในการผลิตเอาต์พุตที่เป็นมนุษย์ได้สคริปต์เวิร์กสเปซบางแห่งจะพิมพ์สตริงที่กำหนดเองเมื่อเรียกว่าที่ระดับบนสุด สคริปต์ Callee เหล่านี้เริ่มต้นตาราง _E.OUTPUT
ที่เป็นตัวเลือกใกล้ถึงจุดสิ้นสุดของร่างกาย
เอาต์พุตที่กำหนดเองจำนวนมากใช้รหัสสี ANSI เพื่อปรับปรุงความสามารถในการอ่าน
> ;tree game.ReplicatedStorage [02] game.ReplicatedStorage.EmoteBar {ModuleScript} [03] game.ReplicatedStorage.EmoteBar.clientConfig {ModuleScript} [03] game.ReplicatedStorage.EmoteBar.emotes {ModuleScript} [03] game.ReplicatedStorage.EmoteBar.enums {ModuleScript} ...
อย่างไรก็ตามพฤติกรรมนี้ไม่ได้ใช้เมื่อทำจากการโทรแบบซ้อนกัน ตัวอย่างต่อไปนี้จะพิมพ์ตาราง Lua ที่อ่านด้วยเครื่อง:
> ;output [[tree game.ReplicatedStorage]] { game.ReplicatedStorage.EmoteBar, game.ReplicatedStorage.EmoteBar.clientConfig, game.ReplicatedStorage.EmoteBar.emotes, game.ReplicatedStorage.EmoteBar.enums, ...
RSEXEC เรียกใช้สายลับระยะไกลทันทีเมื่อฉีด เหตุการณ์ที่ส่งไปยังลูกค้าVía OnClientEvent ยังได้รับซึ่งแตกต่างจากการใช้งานขั้นสูงอื่น ๆ ของสายลับระยะไกล ไม่มี GUIs ที่จะทำให้หน้าจอยุ่งเหยิง อย่างไรก็ตามรีโมตจะเติมเต็มใน /workspace/_rspy.dat
บนพื้นฐานต่อการเซสชัน RSEXEC เสนอวิธีการทิ้งบันทึกสายลับระยะไกลไปยังคอนโซลดังที่แสดงด้านล่าง การเรียกใช้งานการถ่าย dump
เริ่มต้นตัวชี้ไฟล์จากส่วนท้ายของการอ่านก่อนหน้านี้ต่อชื่อไฟล์:
> dump rspy
> ;tree game.workspace [[function return a1.Parent.Name == 'Head']] [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.Head {WrapTarget} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.NeckRigAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.FaceFrontAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.HatAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.HairAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.FaceCenterAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.Neck {Motor6D} ...
ผลลัพธ์ของ /workspace/tree.lua
นี่คือทุกวัตถุในพื้นที่ทำงานที่ชื่อของผู้ปกครองคือ 'head'
สตริง:
[[function return a1.Parent.Name == 'Head']]
... ถูกแทนที่ด้วย:
(function(a1, a2, ...) return a1.Parent.Name == 'Head' end)
function
คำนำหน้าสามารถทดแทนได้สำหรับ func
หรือ f
แลมบ์ดาสมีประโยชน์สำหรับการเขียนหนึ่งตอร์ปิโดแบบไดนามิกที่ใช้ประโยชน์จากคุณสมบัติอื่น ๆ ของภาษา RSEXEC โดยส่วนตัวแล้วฉันใช้มันมากสำหรับคำสั่ง tree
> ;tree game.workspace [[lambda a1.Parent.Name == 'Head']] [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.Head {WrapTarget} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.NeckRigAttachment {Attachment} [06] game.Workspace.InteractiveModels.AvatarEditorModel.NpcModel.Head.FaceFrontAttachment {Attachment} ...
Lambdas ทำงานคล้ายกับคำนำหน้า f
แต่เพิ่มคำหลัก return
ก่อนที่จะใช้งานฟังก์ชั่น
สตริง:
[[lambda a1.Parent.Name == 'Head']]
... ถูกแทนที่ด้วย:
(function(a1, a2, ...) return a1.Parent.Name == 'Head' end)
คำนำหน้า lambda
สามารถทดแทนได้สำหรับ l