在入口点设置断点失败(GDB)

时间:2015-10-12 17:22:34

标签: x86 gdb breakpoints objdump

我目前正在练习一些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技术跳转到程序中的特定函数,并执行该函数中的代码。为了做到这一点,我需要能够在程序运行时停止程序我相信。

0 个答案:

没有答案