
Roblox/Luau용으로 리버스 엔지니어링된 런타임 엔진으로, VM 후킹, opcode 재매핑, 기능 권한 상승, 그리고 임의 스크립트 실행을 위한 UNC 스크립트 환경을 갖추고 있습니다.
tekkenbugatti가 재구성, 리버스 엔지니어링 및 문서화
대상 플랫폼: Linux x86_64 / Luau / Roblox 런타임 엔진
Linusware 1.2는 Roblox / Luau용 네이티브 Linux x86_64 런타임 확장 및 실행 엔진입니다. 이 저장소에는 ELF 런타임 구성 요소의 바이너리 리버스 엔지니어링을 통해 파생된 완전한 재구성 소스 코드가 포함되어 있으며, 가상 머신 후크, opcode 재매핑 테이블, 권한 상승 메커니즘 및 표준 UNC(Universal Naming Convention) 환경 API에 대한 전체 역분석이 포함되어 있습니다.
HookedLuaResume (0x3a21d0) — VM 스레드 인터셉션Roblox 가상 머신 스레드 디스패치 진입점(lua_resume)에 트램펄린이 있는 인라인 14바이트 64비트 절대 점프 후크로 설치됩니다.
L + 0x20 오프셋에 위치한 lua_State->global_State를 읽어 기본 게임 VM을 식별합니다.0x303fffffffffffff를 할당하고 기능 플래그에 0x7을 기록하여 실행 컨텍스트를 Identity 7(LocalUser 무제한)로 자동 상승시킵니다.autoexec/에 배치된 스크립트용 백그라운드 로더를 자동으로 스캔하고 실행합니다.HookedCapThrower (0x399900) — 보안 검사 억제cap_thrower)을 인터셉트합니다.tls_cap_depth, %fs:ef8c에 해당)를 활용하여 사용자 스크립트 실행 중 기능 위반 예외를 동적으로 억제합니다.OpcodeEncoder (0x399640) — 제자리 Luau 바이트코드 리매퍼Roblox의 VM은 정적 분석을 방해하기 위해 표준 Luau 바이트코드 opcode를 스크램블합니다. OpcodeEncoder는 메모리 내 명령어를 다시 인코딩합니다:
0x0829400003f02323): opcode 7 .. 0x42에 대한 가변 길이 명령어(AUX dwords)를 디코딩합니다.0xfe7b): opcode 0x4a .. 0x59에 대한 확장 가변 길이 명령어를 디코딩합니다.g_wire_for_opcode 조회 테이블을 사용하여 opcode 바이트를 제자리에서 교체합니다.GrantProtoCapabilities (0x39a360) — 재귀적 프로토타입 상승LuauProto)을 재귀적으로 탐색합니다.&g_capability_grant)의 주소를 모든 루트 및 중첩 자식 함수(proto->p)의 proto + 0x38에 기록합니다.표준 실행 API를 구현합니다:
hookfunction, hookmetamethod, newcclosure, clonefunction, isexecutorclosure, getrawmetatable, setrawmetatable.getupvalues, setupvalue, getconstants, setconstant, getprotos, setproto.readfile, writefile, appendfile, delfile, makefolder, delfolder, listfiles, isfolder, isfile.crypt.encrypt, crypt.decrypt (AES-CBC, AES-GCM), crypt.hash (SHA-256, SHA-384, SHA-512), crypt.base64encode, crypt.base64decode, crypt.lz4compress, crypt.lz4decompress.request, HttpGet, WebSocket.connect, decompile, cloneref, setclipboard, getfpscap, setfpscap.linusware_src/
├── include/
│ └── linusware/
│ ├── linusware.h # 핵심 엔진 인터페이스 및 공개 내보내기
│ ├── messages.h # 문자열 테이블, 오류 및 로깅 상수
│ ├── script_environment.h # UNC 함수 테이블 등록
│ ├── workspace.h # 파일시스템 샌드박스 정의
│ ├── crypto.h # OpenSSL AES 및 SHA 래퍼
│ ├── encoding.h # Base64 및 LZ4 압축 헬퍼
│ ├── websocket.h # WebSocket 클라이언트 인터페이스
│ └── decompiler.h # Luau 바이트코드 디컴파일러 정의
├── src/
│ ├── linusware/
│ │ ├── hooks.cc # HookedLuaResume, CapThrower, OpcodeEncoder, GrantProto
│ │ ├── linusware.cc # IPC 서버(exec.sock) 및 작업 큐 디스패치
│ │ ├── script_environment.cc# 58개 이상의 UNC 환경 API 구현
│ │ ├── workspace.cc # 샌드박스 IO 구현
│ │ ├── crypto.cc # 암호화 프리미티브
│ │ ├── encoding.cc # Base64 및 LZ4 구현
│ │ ├── decompiler.cc # 프로토타입 디컴파일러 구현
│ │ └── websocket.cc # 네트워크 소켓 계층
│ └── cli/
│ ├── linusware_cli.cc # 독립형 CLI 페이로드 전송기
│ └── wayland_clipboard.cc # Wayland/X11 클립보드 브리지
└── CMakeLists.txt # 빌드 구성
cd linusware_src
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
tekkenbugatti가 재구성 및 리버스 엔지니어링했습니다.