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

如何使用gdb在剥离共享库的函数上设置断点?,gdb,shared-libraries,reverse,decompiling,disassembly,Gdb,Shared Libraries,Reverse,Decompiling,Disassembly,我有一个可执行文件和剥离的lib。所以可执行文件使用的文件。 我已经反编译了lib.so文件并定义了函数fun我想设置断点及其内部地址 是否可以使用gdb在函数fun上设置断点? 如何在运行时定义fun的地址 是否可以使用gdb在函数fun上设置断点 是:GDB可以在任意地址上设置断点: (gdb) break *0x12345678 如何在运行时定义fun的地址 由于GDB默认禁用ASLR,因此fun的地址不会因运行而改变(假设您从一开始就在GDB下运行程序) 因此,您只需找到fun的地址一

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

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

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

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

(gdb) break *0x12345678
如何在运行时定义fun的地址

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

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

假设您的
lib.so
链接在
0
(大多数未预链接的共享库都是)

进一步假设您在Linux上


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

非常感谢我的朋友!你救了我一天:)