R oblox S Cript Exec Utor(RSEXEC)は、主にWeareDevs APIを使用してRōbloxクライアントでスクリプトを実行するコマンドラインインターフェイスです。個人のRobloxクライアントスクリプトの姉妹リポジトリ。
私のプログラムを実行するには、Pythonがインストールされ、Windowsを使用していることを確認してください。
PIPインストール-R要件.txtpython src/main.py
私は数年間JJSploitを使用しましたが、他のワークフローのほとんどがPowershellに住んでいるときにGUIに対処しなければならないことがわかりました。新しいファイルセレクターウィンドウを開き、いくつかの初期値を変更して、実行するために保存したスクリプトを取得するのは面倒でした。クリックが多すぎます!
その問題を解決するために、私は反復しなければなりませんでした。私は/workspace
と他のいくつかのパラメーターに比べて、ファイルパスに渡されるグローバル関数getrenv().exec
を追加することから始めました。次に、パラメーター化システムで動作するために既存のスクリプトを変更する必要がありました。 Tが必要な場合に備えて、スクリプトも返すことができることを確認しました。これにより、私の初歩的なスクリプトハブが拡張可能な関数ライブラリに変わりました!
私はまだ終わっていません! finj.exe
を介してwearedevs dllをフックし、ターミナルの快適さから名前付きパイプと接続するためのpythonプログラムを作成しました。出力はまだ開発者コンソールに印刷されていましたが、マウスの介入が必要でした。そのため、モジュール出力をコンソールにパイプする(rconsoleprintを使用していない)という不機嫌なラッパーコードを書きました。それ以来、劇的に改善されました。
表示されているコマンドは、lua getrenv()
またはgetfenv()
環境で利用可能なものを反映していません。
コマンドは、頭と体の2つの主要な部分で構成されています。
頭は、最初の非白色文字からその後の最初の空間までの範囲のサブストリングです。
ヘッドは、多くの場合、次の形式のファイルであるエイリアスを指しています。
$ {root_folder}/workspace/$ {base_name} .lua
体はその後すべてです。
いくつかのコマンド( find
など)は、スペースデリミタを使用してボディを別のパラメーターにさらに分割します。その他( output
など)は、全身を単一の引数として扱います。
コマンドはどちらで前に付けられます;
または:
、どちらもlua(u)で声明を開始するために使用されていないため。
> ;output 6+4 10
> ;output "string" string
> ;output workspace game.Workspace
接頭辞のoutput
o
の代わりに使用できます。
マルチバリュータプルをワークスペーススクリプトにLUA変数_E.OUTPUT
に保存することができます(「出力フォーマット」を参照)。複数の返品値から生成された出力は、次のことによって分離されます;
。たとえば、luaのstring.gsub()
関数は、常に(string、number)で構成されるタプルを返します。
> ;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のカウンターパートとは異なり、提供されたURLからLUAコードをつかむため、ここで誤解を招くものです。 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íaOnclienteventに送信されたイベントも、リモートスパイの他の高度な実装とは異なり、受信されます。画面を乱雑にするためのGUIはありません。ただし、リモコンは、セッションごとに/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
の結果は、親の名前が「ヘッド」であるワークスペース内のすべてのオブジェクトです。
文字列:
[[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
の代わりに使用できます。