프로그래밍
[Zydis] 디스어셈블러 라이브러리
dladbru
2018. 7. 24. 16:49
빠르고 가벼운 디스어셈블러 라이브러리로 컨셉(?) 을 밀고 있는 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을 알 수도 있으시겠다.
반응형