我遇到的问题是框架似乎没有显示在我所看到的流程中的任何地方。除此之外,我不知道在将其加载到内存中以设置断点时如何附加它,以便可以开始调试。
关于特制框架的任何提示或建议,将不胜感激。
#1 楼
我没有OSX的经验,但是至少在Linux中,您可以这样做:首先,了解一下库可能使用的系统调用(Linux中的
syscall
或int 80h
),如果任何。您可以在此部分中使用自己喜欢的反汇编程序或代码跟踪程序。如果库本身没有任何系统调用,请找出或推断其子功能可能正在使用的系统调用。如果您不了解该步骤,或者由于库的大小和/或复杂性而导致此步骤变得太困难,则可以跳过此第一部分。如果现在您已经知道要捕获哪个系统调用,则仅捕获那些。否则,抓住他们。命令是gdb
。然后catch syscall
运行程序。此时,我通常会执行
r
来查看一些代码。 disp/10i $pc
打印堆栈帧。在所有断点中或仅在您感兴趣的断点中设置断点。使用的指令是backtrace
,例如break
。然后break *0xdeadbeef
。如果到达所需的库或函数,那就太好了。如果不是,请
continue
到达的断点,然后delete
,并重复直到到达您感兴趣的功能。希望有帮助。
评论
要了解有关系统调用的信息,可以使用ktrace,dtrace和struss,具体取决于OSX版本。
– 0xC0000022L♦
13年8月31日在12:12
评论
您应该更具体一些。有多种方法可以附着到分叉的孩子上。您写问题的方式有点不确定。例如。如何针对我们不知道的事物提供建议?