gdb를 사용하여 다음 "지시"로 이동
카나리아 값 설정 및 확인 메커니즘을 파악하려고 합니다.
# #메인(void){printf("Hi!\n")를 반환합니다.}
메인을 분해할 때, 저는
(gdb) 파렴치한0x080483f4 : lea 0x4(%esp), %ecx0x080483f8 : 및 $0xfffffff0, %esp0x080483fb : 푸슬 -0x4 (%ecx)0x080483fe : push %ebp0x080483off : 이동 %esp, %esp0x08048401 : push %ecx0x08048402 : $0x14 이하, %esp0x08048405 : 이동 %gs : 0x14, %eax0x0804840b : %eax 이동, -0x8(%ebp)0x0804840e : x 또는 %eax, %eax0x08048410 : $0x8048500, (%esp)0x08048417 : 전화 0x80483200x0804841c : mov -0x8(%ebp), %edx0x0804841f : x 또는 %gs : 0x14, %edx0x08048426 : je0x804842d0x08048428 : 전화 0x80483300x0804842d : $0x14,%esp 추가0x08048430 : 팝 %ecx0x08048431 : 팝 %ebp0x08048432 : lea -0x4(%ecx), %esp0x08048435 : ret
사용하여 중단점을 0x0804840e로 설정했습니다.
b *0x0804840e
이 중단점에서 프로그램 흐름이 멈춘 후에 저는 원합니다.gdb
C 코드의 다음 줄 대신 다음 명령으로 이동합니다.저는 사용할 수 없을 것 같습니다.next
이 일로그러면 모든 지시사항에 중단점을 설정하는 것 외에 제가 할 수 있는 다른 선택사항은 무엇입니까?
사용하고 싶으십니다.stepi
,아카si
. 그것은 하나의 기계 명령에 따라 움직입니다.
(또는ni
넘어뜨리다call
지시 사항)
GDB 매뉴얼의 계속 및 스텝에 대한 항목을 확인합니다.
아니면 GDB 안에서,help
/help running
당신에게 그것을 보여줄 것입니다.si
존재하며,help stepi
좀 더 자세히 보여드리겠습니다.
언급URL : https://stackoverflow.com/questions/7707799/jumping-to-the-next-instruction-using-gdb
'programing' 카테고리의 다른 글
Declate 문에 대한 Mariaadb 구문 오류 (0) | 2023.09.24 |
---|---|
C가 프로그램을 컴파일하는 것과 실행하는 것에 차이가 있습니까? (0) | 2023.09.24 |
C: C의 휘발성 배열 (0) | 2023.09.24 |
Windows ISO 8601 타임스탬프 (0) | 2023.09.24 |
C의 텍스트 파일에서 int 값 읽기 (0) | 2023.09.24 |