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 |