
명령줄용 멀티 아키텍처 어셈블리 REPL 및 에뮬레이터.
scare는 명령줄용 멀티 아키텍처 어셈블리 REPL이자 에뮬레이터입니다.
현대적인 어셈블리 REPL은 많지 않습니다. 기존에 있는 것들도 불투명한 웹 앱이거나 특정 아키텍처/플랫폼에 묶여 있습니다. scare는 어셈블리 코드를 테스트하고, 실험하고, 가지고 놀고 싶은 사람들을 위해 만들어졌습니다. 어셈블된 모든 코드는 에뮬레이터에서 실행되며, 입력한 코드만 실행합니다. 기반이 되는 scarelib 라이브러리의 멀티 아키텍처 설계는 모듈식으로 되어 있어 새로운 아키텍처를 빠르게 추가할 수 있습니다.
버전 0.3.0은 scare의 첫 공개 릴리스입니다.
주요 기능
현재 지원되는 아키텍처
요구 사항
원하는 아키텍처를 지정하여 명령줄에서 scare를 실행하세요. 그러면 기본 설정으로 REPL 인스턴스가 생성됩니다.
python3 scare.py -a x64
도움말 파일
[x64]400000> /
scare Help
/ /? /help -- Open help menu
/x /exit /q /quit -- Quit the program
/back n -- Go back n number of lines
/dis {0xaddress|$register} NUM -- Disassemble NUM bytes from 0xaddress or $register
/export FILETYPE FILENAME -- Export machine code as FILETYPE to the FILENAME
FILETYPE List:
- bin
- elf64
- pe32
/info -- Info about the emulator state
/l /list -- List the current program
/load file.asm -- Load listing from file.asm (overwrites current program)
/read {0xaddress|$register} NUM -- Read NUM bytes from 0xaddress or $register
/reset -- Reset the emulator to a clean state
/run -- Run the current program
/save file.asm -- Save assembly output to file.asm
[[: Config Commands :]] (Use /c or /config)
NOTE: Run /reset if you are changing emu/* options, otherwise the emulator may not start!
/c -- Print all config options
/c emu/arch -- Print Arch Value
/c emu/arch x64 -- Set Arch to x64
/c x86/xmm 1 -- Enable x86/xmm
어셈블리 리스팅에서 뒤로 이동하기
mov eax, 0x5555
mov ebx, 0xaaaa
xor eax, ebx
/l
/back 2
mov ecx, 0xbbbb
add eax, ecx
파일 불러오기, 파일 저장
/load examples/x64/test.asm
/l
/run
/read $rsp 32
pop rdx
/save test2.asm
바이너리로 내보내기: 여기서 실행 시 종료되는 exit55.elf라는 elf64 파일을 얻게 됩니다.
mov eax, 0x3c
mov edi, 55
syscall
/export elf64 exit55.elf
구성 옵션 사용하기
not rax
/c x86/xmm 1
movq xmm4, rax
movaps xmm5, xmm4
셸코드 디코딩:

코드를 elf64로 내보내고 실행하기:

앞으로 추가하면 좋을 것들이 많이 있습니다: 더 많은 아키텍처(잘 알려진 것과 잘 알려지지 않은 것 모두), 더 많은 CPU 모드, 더 나은 환경 에뮬레이션, emu/asm/dis 라이브러리 간 핫 스와핑 등이 있습니다. 에뮬레이터, 어셈블러, 디스어셈블러가 서로 잘 연동되도록 하는 것은 항상 간단하지 않습니다.
일부 기능은 에뮬레이터 구성에 대한 결정이 필요하기 때문에 현재 지원되지 않을 수 있습니다. 이 프로젝트의 목표는 대상 아키텍처를 위한 범용 REPL 및 에뮬레이터 솔루션이 되는 것입니다. 결과적으로 개발 로드맵은 사용과 개발이 쉽도록 유지하면서 "사람들이 제안하는 것들을 추가하는" 방식이 될 것입니다.
아이디어가 있으면 PR을 보내 주세요.
버그를 발견하면 이슈를 등록해 주세요.
감사합니다. 재미있게 사용하세요!
~ netspooky
haunted crew에게 감사 인사를 전합니다.