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