有没有人知道 ARMV4i 可执行文件和DLL的反汇编程序?
我有一个插件DLL,我写的是一个非常罕见的data abort
(<5%的时间),我已经缩小到一个特定的功能(通过dumpbin和地址输出)由data abort
)。但是,这是一个相当大的功能,我想缩小一点。我知道这是在memset()
调用中发生的,但是这个特定函数有大约35个,所以我希望通过查看反汇编,我可以找出实际问题的位置。
答案 0 :(得分:3)
我相信IDA Pro会做你想做的事。在O'Reilly Security Warrior一书中提到过,我已经在Windows Mobile开发者论坛上看到了它。
答案 1 :(得分:3)
IDA Pro肯定会进行ARM反汇编。他们(Datarescue)曾在当地时间晚上11点左右安排了我的执照,所以我想推荐他们......
我从http://www.datarescue.com/idabase/看到公司有一些重组,但我想这仍然是一个很好的产品。
以下是新发布商的链接:http://www.hex-rays.com/idapro/
答案 2 :(得分:1)
ChARMeD是Windows Mobile / Pocket PC / Win CE(适用于ARM CPU)反汇编程序和汇编程序
你也可以看看BDASM,一个共享软件反汇编程序 - 后来的版本有ARM插件。该网站似乎已关闭,但如果您搜索它,您将找到共享软件分发。
简单的ARM反汇编程序DISARM的源代码也可用。
binutils(linux编译工具)objdump可用于生成反汇编,“objdump -b binary -m arm7tdmi -D file_name”
- 亚当
答案 3 :(得分:0)
几年前,我发现了一个我在进行嵌入式工作时使用的ARM反汇编程序。但是,我不记得它的名字 - 虽然我认为它是像模拟器之类的更大包的一部分。
在您的情况下,您是否可以要求编译器生成已编译代码的汇编列表?这可能会对你有所帮助。
如果失败了,你可以把你的函数分解成一个或多个新函数,如果能得到的就是堆栈跟踪。然后再将新功能分解为一个或多个。这是经过验证的“分而治之”的方法。如果你在一个函数中有35次调用memset(),那么从设计的角度来看也是一个好主意!
更新:我找到了我使用过的软件包:ARMphetamine。它适用于我正在开发的ARM9代码,但看起来它在相当长的一段时间内没有更新。