본문 바로가기

Programming/Python

API 모니터링

API 모니터링


프로그램이 어떤 API를 실행하게 될 때 그 부분을 찾아서 분석하는 것에 대해서 알아보도록 하겠습니다.


먼저 다음 소스코드를 작성합니다.




소스코드를 분석해보도록 하겠습니다.


dbg.enumerate_processes()는 해당 컴퓨터의 실행 중인 프로세스와 PID 값을 가져 옵니다.

이것을 for문을 이용해서 pid와 프로세스 이름을 가져오게 되는 것이죠.


if 문으로 server-strcpy라는 프로세스 이름이 있다면 해당  pid에 붙게 됩니다.


dbg.func_resolve('ws_32', 'send')는 winsock2 32bit를 사용하는 send 함수를 찾아내는 것입니다.


bp_set은 send()가 존재하는 곳의 주소에 breakpoint를 걸어준다고 생각하면 됩니다. 이 값을 send_bp 함수에 보내주고 dbg.dump_context(dbg.context)를 이용해 해당 레지스터들을 가져옵니다.





nc를 이용해서 가상 XP의 echo-server-strcpy에 붙은 후 hi라는 문자열을 보내면 해당 스택의 주소가 나타나게 됩니다.



'Programming > Python' 카테고리의 다른 글

PyDBG  (0) 2016.03.15
Pydasm을 이용한 디스어셈블링  (0) 2016.03.15
PE 분석  (0) 2016.03.15
Pyhook  (2) 2016.03.14
Assemble, Disassemble, Search  (0) 2016.03.14