R Oblox S Cript Exect 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()
환경에서 사용 가능한 모든 것을 반영하지 않습니다.
명령은 머리와 신체의 두 가지 주요 부분으로 구성됩니다.
헤드는 첫 번째 비 whitescace 문자부터 그 다음의 첫 번째 공간에 이르는 서브 스트링입니다.
헤드는 종종 다음 형식의 파일 인 별칭을 가리 킵니다.
$ {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()
함수는 항상 (문자열, 번호) 로 구성된 튜플을 반환합니다.
> ;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는 인터넷에서 스크립트를 실행할 수 있어야합니다. Lua 상대와 달리 제공된 URL에서 LUA 코드를 가져 오기 때문에 loadstring
이 여기서 오도됩니다. 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-as로 전달됩니다.
> 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 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
의 결과는 부모의 이름이 '머리'인 작업 공간의 모든 객체입니다.
문자열 :
[[function return a1.Parent.Name == 'Head']]
...로 대체됩니다.
(function(a1, a2, ...) return a1.Parent.Name == 'Head' end)
접두사 function
func
또는 f
로 대체 될 수 있습니다.
Lambdas는 Rsexec 언어의 다른 기능을 활용하는 역동적 인 One-Liners를 작성하는 데 유용합니다. 나는 개인적으로 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
로 대체 될 수있다.