빠르고 가벼운 디스어셈블러 라이브러리로 컨셉(?) 을 밀고 있는 Zydis !
Github: https://github.com/zyantific/zydis
Site: https://zydis.re
x86, x64 모두 사용가능하며 정적 라이브러리로 만들어 사용할 수 도 있다. 딱 내가 찾던 모델.
이를 사용해서 파이썬 라이브러리로 만들어놓은 pydis도 존재한다.
정적라이브러리로 추가해서 사용한 모습은 아래와 같다.
<Figiure 0. Zydis 라이브러리 예제코드 >
라이브러리의 헤더파일을 include 해주고, 정적 라이브러리인 lib을 추가해도 에러가 뜬다면 프로젝트의 전처리기에
"ZYDIS_STATIC_DEFINE;ZYDIS_EXPORTS" 를 선언해보자.
나는 그렇게 해서 되었다. Visual Studio 2017을 지원한다하지만 lib를 내가 직접빌드해서 2015에서도 가능했다.
< Figure 1. 디스어셈블링한 코드영역 >
매우 성공적으로 이쁘게 나왔다. 라이브러리 소개에 있던 말대로 매우 빨랐다. printf를 찍으면 좀 걸리지만 안찍는다면 1초이내에 결과가 끝나버린다 ㅋㅋ..
printf는 연산속도를 매우느리게 만드는 주범!
<Figure 2. IDA 디스어셈블러>
결과를 믿지못해서는 아니지만 확실한게 좋으니 IDA가 주는 결과랑 비교해봤을때 차이가 없었다. 최고다.
이제 PE 파싱등을 통해서 사용되는 문자열과 API Name을 알 수도 있으시겠다.
반응형
'프로그래밍' 카테고리의 다른 글
[Lua] C에서 루아 라이브러리를 사용하는법 - (1/2) (0) | 2018.07.26 |
---|---|
[Python] 프록시 서버 - http,https 통신 예제 (0) | 2018.07.26 |
[Python] 멀티 프로세스,멀티 쓰레드 예제코드 (0) | 2018.07.16 |
안드로이드 8.1 오레오(Oreo) AOSP 빌드 (feat. 통화녹음을 하자.) (2) | 2018.04.02 |
Visual Studio / x64 아키텍쳐에서 어셈블리어를 사용하기 | 소스코드정렬 (0) | 2018.02.27 |
댓글