2011-04-10 5 views
0

gdb에서이 작업을 수행하는 방법을 알고 있습니다. 첨부하고 따르십시오 :호출 할 때 중단 점을 설정하십시오. return and continue

C에서이 작업을 수행하는 방법이 궁금합니다. 이미 메모리 주소를 읽고 메모리 주소에 쓰는 코드가 있습니다. 그리고 자동으로 pid를 찾고 관련된 것들을합니다. 나는 breakpoint의 사용을 구현하는 데 어려움을 겪고있다.

답변

0

손으로 작성한 디버거에 대해 이야기하는 경우 IP 값을 사용하여 중단 점을 설정할 수 있습니다. 문자 그대로 IP가 특정 값에 도달하면 디버깅중인 프로그램을 중지하고 일부 루틴을 수행합니다 (예 : 디버거 프로세스로 이동). 함수 이름을 사용하려면, GDB에서했던 것처럼 심볼 테이블을 사용해야한다.

0

달성하려는 목표가 명확하지 않습니다.

표시 한 GDB 시퀀스는 즉시 myfunction을 반환합니다.

당신이 당신의 mini-debugger는, 단순히 myfunction의 주소로 ret (x86에서 0xC3)의 연산 코드를 쓰기 같은 효과를 갖고 싶어 가정; 중단 점을 전혀 할 필요가 없습니다.

+0

문제의 기능은 외부 프로그램에 있습니다. 프로그램이 프로그램에 첨부되어 메모리에서 읽기/쓰기 작업을 수행하는 순간입니다. 그래서 솔루션은 목표 메모리와 관련이 있어야하고 그걸로 무엇을해야하는지 ... – JamesT

+0

정확히. 프로그램은 대상에 RET opcode를 기록하고 작업이 완료되면 분리 될 수 있습니다. –

관련 문제