본문 바로가기
프로그래밍

[Zydis] 디스어셈블러 라이브러리

by dladbru 2018. 7. 24.

빠르고 가벼운 디스어셈블러 라이브러리로 컨셉(?) 을 밀고 있는 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을 알 수도 있으시겠다.


반응형

댓글