본문 바로가기
파이썬 스터디 과제/파이썬 해킹 프로그래밍

4장-1 브레이크포인트 확장

by laoching 2015. 1. 21.
728x90
반응형

브레이크포인트 확장

PyDbg를 이용하면 사용자 정의 콜백 함수를 구현함으로써 기본적인 이벤트 핸들러를 쉽게 확장시킬 수 있다.

소프트 브레이크포인트를 설정하는 PyDbg 함수의 프로토타입

------------------------------------------------------------

bp_set(address, description="" , restore=True, handler = None)

------------------------------------------------------------

address 파라미터는 소프트 브레이크포인트를 설정할 주소를 나타낸다.

description 파라미터는 각 브레이크포인트에 고유한 이름을 부여할때 사용한다.(선택적)

restore 파라미터는 발생한 브레이크포인트를 처리한 이후에 자동으로 해당 브레이크포인트를 해체할 것인지 여부를 나타낸다.

handler 파라미터는 브레이크포인트가 발생했을 때 호출할 함수를 지정하는 데 사용한다.

브레이크포인트 콜백 함수에는 pydbg() 클래스의 인스턴스 하나만 파라미터로 전달된다.

콜배 함수에 pydbg() 클래스가 전달될 때는 모든 컨텍스트, 스레드, 프로세스 정보 등이 pydbg() 클래스 내에서 이미 구해진 이후다.

print_loop.py 스크립트를 이용해 사용자 정의 콜백 함수를 구현해 보자.

printf() 루프에서 사용되는 counter의 값을 읽어 들이고, 그 값을 1~100 사이의 임의의 값으로 교체할 것이다.

디버깅 대상 프로세스 내부의 이벤트를 실제로 관찰하고 기록하고 변경할 수 있다는 점이 있다.



해당 소스는 printf_random.py 소스다.

하지만 이 소스는 바보다.

이 소스에서 많은것을 바꿔야 한다.

http://crattack.tistory.com/57  << 이 블로그를 보자.

저 블로그 운영하시는분은 아주 대단하신것 같다.


바꾼 소스로 실행을 해보자.

printf_loop.py를 실행한 후 PID를 입력하면 된다.

실행화면

이렇게 뜨는 사람이 있을까?

친구와 똑같은 환경에 똑같은 소스로 해봤다.

친구는 잘 돌아가고 나는 돌아가지 않았다..

728x90
반응형

댓글