본문 바로가기

[책이야기]/[파이썬 해킹프로그래밍 요약]

pydbg 설치

많은 삽질에 삽질을 거듭한 끗에 찾아낸 블로그에서 답을 찾다 -_ㅠ


소개할 건 Reverse Engineering Frame work 입니다

아마 Python 을 의미하는 Py 와 발음이 비슷한 Pai 떄문에

기존에 있던 Paimei 란 캐릭터의 이름을 따와서 이름을 지은거 같군요

아무튼 상당히 괜찮다고 평이 나있는 툴입니다

오픈소스이구요

먼저 Paimei 가 어떤 툴인지는 알고 설치 하셔야겠죠?

제작자의 홈페이지 입니다

http://pedram.redhive.com/PyDbg/docs/index.html

그리고 이건 다른 분들이 작성하신 Tutorial~

http://www.crazylazy.info/blog/content/paimei-tutorial-hands-pydbg-part-1
http://www.crazylazy.info/blog/content/paimei-tutorial-simple-heap-traceing-part-2 

또 RECON 2006 에서 제작자가 발표한  PDF 파일입니다

http://recon.cx/en/f/pamini-five-finger.pdf

근데 생각보다 설치하기가 좀 [ 많이 ] 까다롭더군요 

선행 설치되야 하는것도 장난이 아닙니다

태그를 긁어왔는데 어째 선이 안보여서 그림으로 대체합니다 -_-



이는 제작자 페이지의 Installation 부분에서 발췌한것임을 알려드립니다

게다가 이는 Python 2.4 를 기준으로 되어 있기 때문에 약간의 수정 없이는

요즘 가장 대중적으로 쓰이는 2.5에서 오류 없이 깔기가 불가능합니다 

음 그럼 설치를 시작해볼까요 

http://www.openrce.org/downloads/details/208/PaiMei

에서 Paimei 를 받습니다

물론 Python 2.5 가 깔려있다는 전제하에서 하는 거구요

위 파일에서 __install_requirements 를 실행시키면 한번에 다 설치 할 수 있도록 했는데

2.4 기준이라 위 링크된 사이트에서 자신의 버전에 맞는 파일을 받아 설치하시는게 

속 편하실거라고 봅니다 -,.-

아무튼 위 설치를 마치셨다면

__setup_mysql.py를 실행시켜서 db와 연결하셔야 합니다

__setup_mysql.py localhost <ID> <PassWord> 로 실행시켜주시면 됩니다


ID, Password 는 Mysql 계정정보를 입력시켜주시면 되구요

이제 __build_installer.bat 파일을 실행시켜야 합니다

저는 setup.py install 명령어를 쓰고 나선 한참 삽질했는데요

setup.py install 하면서 컴파일러가 다르다니 어쨌대니 mingw32 를 쓰라느니

그래서 cygwin 도 깔아보고 해봤는데도 안되고 

나중에 찾아보니 mingw32를 써서 컴파일하는건 좀 불안정하다더군요

아무튼 이런 삽질을 피하시려면

__build_installer.bat 을 실행시키면 됩니다

물론 수정점이 있지요

c:\python\python.exe setup.py bdist_wininst --bitmap=logos\installer.bmp --title=PaiMei

를 이렇게 

c:\python25\python.exe setup.py bdist_wininst --bitmap=logos\installer.bmp --title=PaiMei


바꿔주시면 됩니다

그리고 실행해주시면 주르륵 설치가 되지요

확인은 default 로 설정해주셨을때

C:\Python25\Lib\site-packages

에서 확인하실 수 있습니다

pida, pydbg, pgraph, MySqLdb 등등이 있어야 하구요

아참, 제 기억으론 setuptools 도 필요했던거 같네요

http://pypi.python.org/pypi/setuptools

버전 맞게 설치하시고

pydbg 에서 또  수정해주셔야 할게 있는데

beist lab의 ashine 님의 글을 참조하시면 OK~

http://ashine.springnote.com/pages/5585579?print=1



이제 Paimei 압축을 푼 폴더에 console 폴더에 들어가셔서

PAIMEIconsole.pyw 를 실행시키면 



Paimei 님의 살인미소가 우리를 반겨주시는게 정상입니다



Paimei 의 실행모습입니다

전체적으로 깔끔한 인터페이스네요

이걸 또 PIDA 와 연결 할 수 있는데요

조심하실 점은

Paimei 의 PIDA 이외에 

동일 이름을 가진 module 이 있다는 점입니다 -.-

저는 아무것도 모르고 Pida 치고 가장 먼저 나온 사이트에서 받아서 설치했었는데

왜 안되는지 한참 삽질했습니다 

결국 같은 module이 아니더군요 

http://pida.co.uk/

이게 아니니 조심하시길~






제가 Paimei 를   Opensrc에 있는 링크를 걸어 두었는데

googlecode에 svn에 가보니 더 최근의 소스가 있더군요 -,.-

googlecode 상에는 그런 링크 없었는데..   

아무튼 

http://paimei.googlecode.com/svn/trunk/

에 가보시면 수정된 파일을 받을 수 있습니다





저걸 일일히 언제 다 받고 있겠습니까

그래서 간단히 python 코드로 짜봤습니다


  1. import urllib  
  2. import re,os  
  3.   
  4. url = "http://paimei.googlecode.com/svn/trunk/"  
  5.   
  6.   
  7.   
  8.   
  9. def recur_get ( path ):  
  10.   
  11.     if path == '/' : path = ''  
  12.     f = urllib.urlopen(url + path)  
  13.     cont = f.read()     
  14.   
  15.     str = re.findall("<a href=\"(\S*)\"",cont)  
  16.   
  17.     for i in str:  
  18.         if(i != "../"and ( i.find("http") == -1):  
  19.             try:  
  20.                 open(path + i,"wb").write(urllib.urlopen(url +path+ i).read())  
  21.             except IOError:  
  22.                 os.makedirs(path + i)  
  23.                 recur_get( path+ i )  
  24.   
  25. if __name__ == "__main__":   
  26.     recur_get('/')   



파일 및 폴더 내용까지 싹 긁어다 오는 소스 입니다

제가 앞서 설명했던 것들을 여차 저차 하게 되면

다음과 같이 몇가지 메뉴가 추가된 Paimei 를 만나실 수 있습니다






Paimei Flash demo 를 보시면

pida 파일을 불러오는 것을 볼 수 있는데요



이 pida 파일은 IDA python 으로 생성된 파일입니다

IDA python 을 설치하시면 IDA 에서 python script를 실행시킬 수 있게되는데

여기서 paimei 폴더에 있는 pida_dump.py를 실행 시키면 얻으실 수 있습니다

혹시 xrefs 의 길이를 구할수 없다는 둥의 에러메세지가 뜨게 되면

xrefs를 list 로 변환해주셔야 합니다

xrefs 가 list 의 레퍼런스 인데 list로 연산을 하더군요

제가 뒤에 언급한 svn 에서는

이점이 변환되도록 수정 되었더군요 



구버전으로 이래저래 삽질 많이 했었는데 참 ..


 출처 : http://linkc.tistory.com/112(Hack My Mind 블로그)
반응형