为什么我不能在声明地址上打断?

时间:2018-10-29 17:02:39

标签: gdb

学术练习:他们给了我们一个要求输入密码的二进制文件,我必须给教授这个二进制文件要我提供的“密码”。

gdb与他们的二进制文件进行了几个小时的战斗之后,我终于解决了这个任务,但是:我不知道如何在任意指令的地址处中断?每次到达一个看起来很有趣的地方时,我都必须记住如何到达那里,并且在再次运行二进制文件时,会费力地sn再次到达那个地方。相反,我希望能够b在这个地方。

让我展示一个简单的例子,我不能做什么:

m@m-X555LJ:~/szkolne/bezp$ gdb ./crackme2018
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
<cut for brevity, everyone knows what gdb spits out on startup>
Reading symbols from ./crackme2018...(no debugging symbols found)...done.
(gdb) break __libc_start_main
Breakpoint 1 at 0x630
(gdb) r
Starting program: /home/m/szkolne/bezp/crackme2018 

Breakpoint 1, 0xf7deed90 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
(gdb) quit
A debugging session is active.

    Inferior 1 [process 3526] will be killed.

Quit anyway? (y or n) y
m@m-X555LJ:~/szkolne/bezp$ gdb ./crackme2018
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
<cut for brevity, everyone knows what gdb spits out on startup>
Reading symbols from ./crackme2018...(no debugging symbols found)...done.
(gdb) break *0x630
Breakpoint 1 at 0x630
(gdb) r
Starting program: /home/m/szkolne/bezp/crackme2018 
Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x630

(gdb) quit
A debugging session is active.

    Inferior 1 [process 3532] will be killed.

Quit anyway? (y or n) y
m@m-X555LJ:~/szkolne/bezp$ 

这是持久性的:每次我启动gdb并在__libc_start_main处中断时,gdb都会说它在地址0x630处中断。但是,如果我想在那个地址上打断我,那是不允许的。

为什么会发生?如何中断地址0x630(或其他更有趣的地址)?

0 个答案:

没有答案