GDB调试保护

GDB调试保护,gdb,Gdb,我正在尝试对cydia应用程序(二进制)进行反向工程,并将GDB与IDA Pro一起使用 似乎有一些调试保护,因为main()不在bt堆栈中,我无法访问任何函数,class-dump-z和IDA-Pro都清楚地显示了这些函数 BT堆栈中的最后两个条目是: _mh_execute_header<br> _mh_execute_header<br> \u mh\u execute\u头 _mh_执行_头 这是main()应该位于的位置 以前有人见过这些吗 从我读到的ptr

我正在尝试对cydia应用程序(二进制)进行反向工程,并将GDB与IDA Pro一起使用

似乎有一些调试保护,因为
main()
不在bt堆栈中,我无法访问任何函数,class-dump-z和IDA-Pro都清楚地显示了这些函数

BT堆栈中的最后两个条目是:

_mh_execute_header<br>
_mh_execute_header<br>
\u mh\u execute\u头
_mh_执行_头
这是
main()
应该位于的位置

以前有人见过这些吗

从我读到的
ptrace()
不允许您附加进程,但这将允许我。我试图绕过
sysctl()
,但我认为这种方法也没有被使用

有人知道还会是什么吗


我也没有源文件

你的问题非常不清楚。你到底在问什么

main()不在bt堆栈中

这在完全剥离的可执行文件中很常见。如果运行
nm a.out | grep main
但未看到
main
,则
main
无法显示在任何堆栈跟踪中


仅此一点并不一定证明应用程序正在使用任何反调试技术。

您的问题非常不清楚。你到底在问什么

main()不在bt堆栈中

这在完全剥离的可执行文件中很常见。如果运行
nm a.out | grep main
但未看到
main
,则
main
无法显示在任何堆栈跟踪中


仅此一点并不一定证明应用程序正在使用任何反调试技术。

这在完全剥离的可执行文件中非常常见。
您仍然可以访问这些功能吗?每次我尝试在一个函数上中断时,它都不会停止或被识别,而且如果我使用十六进制地址,它也不会因为某种原因在该地址中断。
break sysctl如果$r1==4&&*(int*)$r0==1&*(int*)($r0+4)==14&*(int*)($r0+8)==1
在该点中断后,我得到程序接收到的信号SIGABRT,在uu pthread_kill()nm中中止0x3b17a350将导致
nm:对于体系结构cputype(12)cpusubtype(9)对象:桥接格式错误的对象(未知加载命令4)
这对于完全剥离的可执行文件来说非常常见
您仍然可以访问这些函数吗?每次我尝试在一个函数上中断时,它都不会停止或被识别,而且如果我使用十六进制地址,它也不会因为某种原因在该地址中断。
break sysctl如果$r1==4&&*(int*)$r0==1&*(int*)($r0+4)==14&*(int*)($r0+8)==1
在该点中断后,我得到程序接收到的信号SIGABRT,在uu pthread_kill()nm中中止0x3b17a350将导致
nm:for architecture cputype(12)cpusubtype(9)对象:桥接格式错误的对象(未知加载命令4)