2

有人知道ARMV4i可执行文件和 DLL 的反汇编程序吗?

我有一个插件 DLL,我正在编写一个非常罕见data abort(<5% 的时间)的插件 DLL,我已将其缩小到一个特定的函数(通过 dumpbin 和由data abort. 但是,它是一个相当大的功能,我想将其缩小一点。我知道这是在一个memset()调用中发生的,但是那个特定的函数有大约 35 个,所以我希望通过查看反汇编,我可以找出问题到底出在哪里。

4

4 回答 4

3

我相信IDA Pro会做你想做的。O'Reilly Security Warrior 书中提到了它,我在 Windows Mobile 开发者论坛上看到了它的推荐。

于 2008-08-26T18:47:47.583 回答
3

IDA Pro 肯定会做 ARM 反汇编。他们(Datarescue)曾经在当地时间晚上 11 点左右给我安排了许可证,所以我喜欢推荐他们......

我从http://www.datarescue.com/idabase/看到公司进行了一些重组,但我想它仍然是一个好产品。

这是新出版商的链接:http ://www.hex-rays.com/idapro/

于 2008-08-26T18:57:33.580 回答
1

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”

-亚当

于 2008-09-13T02:13:04.500 回答
0

几年前,我发现了一个我在做一些嵌入式工作时使用的 ARM 反汇编程序。然而,我不记得它的名字——虽然我认为它是一个更大的包的一部分,比如模拟器或其他东西。

在您的情况下,您能否要求您的编译器生成已编译代码的汇编列表?这可能有助于给你一些范围。

如果做不到这一点,你可以将你的函数分解为一个或多个新函数,如果你能得到的只是堆栈跟踪。然后再次将新功能分解为一个或多个。这是久经考验的“分而治之”的方法。如果您在一个函数中有 35 次 memset() 调用,那么从设计的角度来看,这也是一个好主意!

更新:我找到了我使用的包:ARMphetamine。它适用于我正在开发的 ARM9 代码,但看起来它已经有一段时间没有更新了。

于 2008-08-22T20:50:52.237 回答