반응형
# miasm
- 오픈소스의 리버싱 프레임워크, 바이너리 프로그램의 분석 수정 생성이 목적
- elfesteem을 이용한 PE / ELF 32 / 64 LE / BE 분석 수정 생성
- 어셈블링, 디스어셈블링
- IR을 이용해 어셈블리 의미분석
- JIT 라이브러리 사용
- 자동 난독화, 난독화 해제를 위한 표현식 단순화
# 설치
- elfesteem 설치
- git clone https://github.com/serpilliere/elfesteem.git
- cd elfesteem
- python setup.py build
- sudo python setup.py install
- TCC 와 LLVM 설치
- libtcc
- 충돌 제거를 위해 libtc-dev제거
- sudo apt remove libtc-dev
- git clone http://repo.or.cz/tinycc.git
- ./configure --disable-static
- make
- sudo make install
- 오류 해결
- sudo apt -y install texi2html
- sudo apt -y install texinfo
- llvm
- pip install llvmlite
- miasm 설치
- git clone https://github.com/cea-sec/miasm.git
- cd miasm_directory
- python setup.py build
- sudo python setup.py install
# Github
- basic sample 몇가지 작은 오류
- 모든 설치과정을 오류없이 진행 했음에도 jitter를 사용하여 가상으로 쉘코드를 실행시켜 볼 때 RumtimeError가 발생한다.
- 오류 : RumtimeError : Unsupported jit arch: x86
- 단순히 jitter를 생성해줄때 machine의 인자로 싱글쿼터 문자열이 주어졌을 때 인식을 못해서 발생하던 문제였다.
- 해결 : machine을 생성할 때 더블 쿼터로 인자를 넘겨준다.
- machine = Machine("x86_32")
- jitter = machine.jitter(jit_type='python')
- 참고 : https://github.com/cea-sec/miasm/issues/651
- NameError: name 'PAGE_READ' is not defined
- 해결 : from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE
- myjit는 선언 안되 있고, 현재 내가 선언한 jitter는 jitter밖에없으므로 jitter로 임의 메모리 위치 생성
1 | myjit.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, s) |
반응형
'Reversing' 카테고리의 다른 글
Reversing/Tool/Radare2 OverView (0) | 2018.05.16 |
---|---|
Reversing/Tool/gdbgui 설치 (0) | 2018.03.29 |
RCE/CodeEngn/BasicRCE07 (0) | 2018.02.05 |
RCE/CodeEngn/BasicRCE06 (0) | 2018.02.05 |
RCE/CodeEngn/BasicRCE05 (0) | 2018.02.05 |