2008-08-22 40 views
2

有谁知道反编译器为ARMV4i可执行文件和DLL?ARMV4i(Windows Mobile 6)原生代码反汇编器

我有一个插件DLL我与一个非常罕见的data abort(时间< 5%),写作,我已经缩小到一个特定的功能(通过DUMPBIN并通过data abort输出地址) 。但是,这是一个相当大的功能,我想稍微缩小它的范围。我知道这是发生在memset()调用中,但该特定函数约有35个函数,所以我希望通过查看反汇编,我可以找出问题的实际位置。

+0

另外有用的将是一个编译器生成的组件列表;它可能更容易与来源相关联。通常'数据中止'打印堆栈和帧指针;链接寄存器`lr`肯定会有帮助。我希望Windows Mobile提供这些信息。 – 2013-03-01 04:56:04

回答

2

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

我从http://www.datarescue.com/idabase/看到公司有一些重新安排,但我猜这仍然是一个很好的产品。

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

0

几年前,我发现了一个我在做一些嵌入式工作时使用的ARM反汇编程序。不过,我不记得它的名字 - 尽管我认为它是仿真器之类的大型软件包的一部分。

在你的情况,你可以问你的编译器生成编译代码的汇编清单吗?这可能有助于给你一些范围。

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

更新:我发现我使用的软件包:ARMphetamine。它适用于我正在开发的ARM9代码,但看起来它在一段时间内还没有更新。

4

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

1

ChARMeD是Windows移动/掌上电脑/的Win CE(用于ARM CPU)的反汇编器和汇编

你也可以看看BDASM,一个共享的反汇编 - 更高版本有ARM插件。该网站似乎已关闭,但如果您搜索它,您会发现共享软件分发。

简单ARM反汇编器的源代码DISARM也可用。

Binutils的(++编译工具)objdump的可用于产生拆卸, “objdump的-b二进制-m ARM7TDMI -D FILE_NAME”

- 亚当