브레이크포인트 확장
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를 입력하면 된다.
실행화면
이렇게 뜨는 사람이 있을까?
친구와 똑같은 환경에 똑같은 소스로 해봤다.
친구는 잘 돌아가고 나는 돌아가지 않았다..
'파이썬 스터디 과제 > 파이썬 해킹 프로그래밍' 카테고리의 다른 글
4장-3 프로세스 스냅샷 (0) | 2015.01.24 |
---|---|
4장-2 접근 위반 핸들러 (0) | 2015.01.24 |
3장-4 브레이크포인트-3 (메모리브레이크포인트) (0) | 2015.01.17 |
3장-4 브레이크포인트-2 (하드브레이크포인트) (0) | 2015.01.17 |
3장-4 브레이크포인트-1 (소프트브레이크포인트) (0) | 2015.01.16 |
댓글