将二进制文件加载到GDB中并尝试在入口点指示的地址处反汇编代码,GDB返回垃圾,而不是任何有意义的asm。
radare2也是如此,
反汇编程序显示了相同的入口点地址,但提供了清晰的反汇编。
我试图在GDB中执行此应用程序-根本无法执行。
令人惊讶的是,从终端执行该应用程序效果很好。
我担心我的目标已被GDB / radare2无法应付的某种方式打包/压缩/混淆了。令人惊讶的是,Hopper的处理效果非常好。
不幸的是,我没有完整版本的Hopper。此外,我希望能够在GDB中调试此应用。有什么办法吗?
其他人遇到过这种情况吗?如果是这样,我应该如何进行?
#1 楼
实际上,GDB依靠GNU binutils打开和反汇编二进制文件。因此,二进制格式的管理是通过libbfd.so
来完成的。通常,MacOS X binutils附带了Mach-O管理,但可能是您使用的是错误的程序包。或者,您也可以尝试在MacOS X以外的其他系统上打开Mach-O,而在其他系统上,很少将Mach-O支持添加到默认软件包中。 获得Mach-O支持(以及GNU binutils中所有可能的格式和体系结构)的最好方法是使用选项
--enable-targets=all
编译该软件包。我个人正在使用Debian不稳定版。并且我习惯于重新编译从源头获取的整个软件包。请按照以下步骤操作:
将以下行添加到您的
/etc/apt/sources.list
中:deb-src ftp://ftp.debian.org/debian/ unstable main contrib
更新软件包列表:
su -c 'apt-get update'
获取编译
binutils
软件包所需的软件包:su -c 'apt-get build-dep binutils'
获取
binutils
软件包的源代码:apt-get source binutils
进入
binutils
源代码目录:cd binutils-x.x.x/
在
binutils-x.x.x/debian/rules
中,像这样重写以下行(删除所有其他目标): multiarch_targets = all
< br生成软件包(可能要花一些时间):
dpkg-buildpackage -rfakeroot -us -uc
安装
binutils-multiarch
软件包: #2 楼
非常感谢您的回答!我进行了更多研究,发现了以下内容:
,因为我的目标是Macintosh系统的一部分,所以所谓的“ Apple二进制保护”可防止直接拆卸/调试。
otool -l [目标]”揭示了以下信息:
br />因此,在尝试使用GDB之前,我需要找到一种解密二进制文件的方法。我读到可以使用GDB,dd和任何合适的十六进制编辑器手动进行操作,但我找不到任何逐步的方法说明。
此工具声称可以解密:
http://tumblr.alanquatermain.me/post/97884723/apple-binary-protection-tool
,但这对我不起作用。
这里有没有其他人使用过这样的二进制文件?
在此先谢谢了!
这里此保护方案的更多说明:
http://osxbook.com/book/bonus/chapter7/binaryprotection/
http:// re verse.put.as/2009/06/30/how-to-dump-an-apple-protected-binary/
更新:我终于设法使用此工具解密了目标:http ://www.insanelymac.com/forum/topic/285375-apb-decrypt-for-mountain-lion-lion-and-snow-leopard-apple-protected-binary-decryptor/
GDB使用“ disas 0xb800e5c4”显示正确的反汇编,其中0xb800e5c4表示入口点。虽然从终端启动解密后的二进制文件可以正常工作,但是在GDB内单步执行和运行仍然不起作用...
评论
不要发表评论作为答案。如有必要,请编辑问题以添加详细信息。
–伊戈尔·斯科钦斯基♦
13年7月26日在23:59
我同意伊戈尔的观点,而且,这是另一个问题。请填写另一个问题,并从头开始。
–恐怖
13年7月27日在12:19
评论
什么是二进制?如何获得“入口点指示的地址”以及如何反汇编代码?向我们展示一些屏幕截图或文本转储。细节越多越好。好的,我要分析的二进制文件是Mac OS系统软件的一部分。它似乎是所谓的“ Apple保护”二进制文件之一。我最近发现了对此保护的一些描述:osxbook.com/book/bonus/chapter7/binaryprotection甚至是一个声称能够在此处删除这种加密的命令行工具:tumblr.alanquatermain.me/post/97884723/ …我刚刚尝试过,但是会产生更多的垃圾...
您正在使用哪个端口? MacPort还是其他端口?
雷达2是否使用libbfd?我以为是用他自己的库来管理二进制格式,不是吗?
Radare2使用自己的Mach-O解析器,该解析器似乎不支持加密的二进制文件。不幸的是,它包含一些错误:反汇编列表移动了四个字节。我即将提交适当的错误报告。