2013-05-19 82 views
1

我正在尝试对cydia应用程序(二进制)进行反向工程,并使用GDB和IDA Pro。GDB调试保护

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

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

_mh_execute_header<br> 
_mh_execute_header<br> 

这是main()应该的。

有没有人见过这些?

从我读的ptrace()不会让你附加的过程,但这会让我。我试图绕过sysctl(),但我不认为这种方法已被使用。

有没有人知道它还能是什么?

另外我没有源文件。

回答

1

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

的main()是不是在BT堆栈,

这是相当常见的完全剥离的可执行文件。如果您运行的是nm a.out | grep main而没有看到main,那么main不能显示在任何堆栈跟踪中。

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

+0

'这对于完全剥离的可执行文件来说很常见'你还能访问这些函数吗?每次我尝试在一个函数中断开它永远不会停止或被识别,并且如果我使用十六进制地址,由于某种原因,它仍然不会在该地址中断。 – user2391866

+0

'break sysctl if $ r1 == 4 && *(int *)$ r0 == 1 && *(int *)($ r0 + 4)== 14 && *(int *)($ r0 + 8)== 1' 在该点断裂后我得到 方案接收信号SIGABRT,中止在__pthread_kill
0x3b17a350()< – user2391866

+0

纳米结果在'纳米:用于架构CPUTYPE(12)cpusubtype(9)对象:桥式格式错误的对象(未知加载命令4)' – user2391866