如何在剥离的共享库中使用gdb设置断点?

时间:2015-08-10 11:55:06

标签: gdb shared-libraries reverse decompiling disassembly

我有一个可执行文件和可执行文件使用的剥离 lib.so文件。 我已经反编译lib.so文件并定义了函数fun我想设置断点及其内部地址。

是否可以使用gdb在函数fun上设置断点? 如何在运行时定义fun的地址?

1 个答案:

答案 0 :(得分:1)

  

是否可以使用gdb在函数fun上设置断点?

是:GDB可以在任意地址上设置断点:

(gdb) break *0x12345678
  

如何在运行时定义乐趣的地址?

由于GDB默认禁用ASLR,因此fun的地址不会在运行之间发生变化(假设您从一开始就在GDB下运行程序)。

因此,您只需要找到fun一次的地址。

我们假设您的lib.so0相关联(大多数非预先链接的共享库)。

进一步假设你在Linux上。

然后info proc map将告诉您lib.so的加载位置(您希望第一个起始地址属于它)。将该起始地址添加到您通过反汇编找到的fun值,并在那里设置断点。