R oblox s cript exec ector (rsexec) هي واجهة سطر الأوامر التي تستخدم في المقام الأول واجهة برمجة تطبيقات Wereedevs لتشغيل البرامج النصية على عميل Rōblox. مستودع أخت إلى برامج نصية عميل روبوكس الشخصية.
لتشغيل برنامجي ، تأكد من تثبيت Python وأنك تستخدم Windows.
PIP تثبيت -r متطلبات. txtpython src/main.py
لقد استخدمت JJSploit لبضع سنوات ووجدت أن الاضطرار إلى التعامل مع واجهة المستخدم الرسومية هناك عندما تعيش معظم مهام سير العمل الأخرى في PowerShell للإنتاجية. لقد كان من المتاعب بالنسبة لي فتح نافذة جديدة للملفات وتعديل بعض القيم الأولية لمجرد الحصول على برنامج نصي تم حفظه لتشغيله. الكثير من النقرات!
لحل هذه المشكلة ، اضطررت إلى التكرار. لقد بدأت بإضافة وظيفة عالمية getrenv().exec
التي تمر في مسار الملف ، نسبة إلى /workspace
وبعض المعلمات الأخرى. ثم اضطررت إلى تعديل البرامج النصية الموجودة للعمل مع نظام المعلمات الخاص بي. لقد تأكدت من أن البرامج النصية يمكن أن تعود أيضًا في حالة حاجة إلى T. هذا حول محور البرامج النصية بدائية إلى مكتبة دالة قابلة للتمديد!
لم أفعل بعد! لقد كتبت برنامج Python لتوصيل DLL Wereedevs من خلال finj.exe
وتواصل مع الأنابيب المسماة من راحة المحطة الخاصة بي. لا يزال المخرج مطبوعًا على وحدة التحكم في المطورين ، والذي لا يزال يتطلب تدخل الماوس - لذلك كتبت رمز الغلاف clunky الذي يخرج وحدة الأنابيب في وحدة التحكم (وعدم استخدام rconsoleprint). وقد تحسنت منذ ذلك الحين بشكل كبير.
لا تعكس الأوامر المعروضة ما هو متاح في بيئات Lua getrenv()
أو getfenv()
.
تتكون الأوامر من جزأين رئيسيين: الرأس والجسم.
الرأس هو السلسلة الفرعية التي تتراوح من أول حرف غير وايتي إلى المساحة الأولى بعده.
غالبًا ما يشير الرأس إلى الاسم المستعار وهو ملف بالتنسيق التالي:
$ {root_folder}/workspace/$ {base_name} .lua
الجسم هو كل شيء بعد ذلك.
تقسم بعض الأوامر (مثل find
) الجسم إلى معلمات مميزة باستخدام محدد المساحة. الآخرون (مثل output
) يعاملون الجسم بأكمله كحجة واحدة.
الأوامر مسبوقة من قبل إما ;
أو :
، كما لا يتم استخدام أي منهما لبدء بيان في لوا (U).
> ;output 6+4 10
> ;output "string" string
> ;output workspace game.Workspace
يمكن استبدال output
البادئة بـ o
من الممكن تخزين tuples متعددة القيمة في متغير LUA _E.OUTPUT
في برنامج نصي مساحة العمل (انظر "تنسيق الإخراج"). يتم فصل الإخراج الناتج من قيم الإرجاع المتعددة بواسطة ;
. وظيفة string.gsub()
في لوا على سبيل المثال تُرجع دائمًا توبًا يتكون من (سلسلة ، رقم) :
> ;output (string.gsub("abb", "b", "c")) acc; 2
/workspace
> ;chat "I'm exploiting and probably will catch someone's attention!" 6
إذا كان /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
.
سيتم تمرير كتل التعليمات البرمجية بدون بادئة أمر في المقيِّم.
> 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 ، على عكس التطبيقات المتقدمة الأخرى للتجسس البعيد. لا توجد واجهة المستخدم الرسومية هناك لتفكيك الشاشة. ومع ذلك ، فإن أجهزة التحكم عن بعد تملأ /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
تعتبر Lambdas مفيدة لكتابة الولادة الديناميكية التي تستفيد من الميزات الأخرى للغة 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