我目前正在练习一些RE / GDB,并且在第一/第二条指令上停止运行/启动时遇到问题。我是GDB / RE的新手,对GDB的一些内部工作有一些有限的知识。到目前为止,当我打开我已完成的程序时:
(gdb) set disassembly-flavor intel
(gdb) file /path/to/binary
(gdb) info file
Symbols from "/path/to/binary".
Local exec file:
`/path/to/binary', file type elf32-i386.
Entry point: 0x8048450
.
.
.
(gdb) b *0x8048450
(gdb) start
Temporary breakpoint 2 at 0x80485f7
Starting program: /path/to/binary
During startup program exited with code 1.
该计划的另一次尝试也产生了这个结果:
(gdb) b *0x8048450
Breakpoint 1 at 0x8048450
(gdb) run
Starting program: /bomb/bomb
During startup program exited with code 1.
如此明确地在入口点设置断点是没有用的。以下是命令的输出:
objdump /path/to/binary -M intel -D
在前面的内存地址。
08048450 <_start>:
8048450: 31 ed xor ebp,ebp
8048452: 5e pop esi
8048453: 89 e1 mov ecx,esp
8048455: 83 e4 f0 and esp,0xfffffff0
8048458: 50 push eax
8048459: 54 push esp
804845a: 52 push edx
804845b: 68 c0 86 04 08 push 0x80486c0
8048460: 68 60 86 04 08 push 0x8048660
8048465: 51 push ecx
8048466: 56 push esi
8048467: 68 e9 85 04 08 push 0x80485e9
804846c: e8 bf ff ff ff call 8048430 <__libc_start_main@plt>
8048471: f4 hlt
8048472: 66 90 xchg ax,ax
8048474: 66 90 xchg ax,ax
8048476: 66 90 xchg ax,ax
8048478: 66 90 xchg ax,ax
804847a: 66 90 xchg ax,ax
804847c: 66 90 xchg ax,ax
804847e: 66 90 xchg ax,ax
我的总体目标是使用b * Mem,jump * Mem技术跳转到程序中的特定函数,并执行该函数中的代码。为了做到这一点,我需要能够在程序运行时停止程序我相信。