ARMV4i(Windows Mobile 6)本机代码反汇编程序

时间:2020-03-05 18:41:59  来源:igfitidea点击:

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

我有一个正在写的插件DLL,它使用一种非常罕见的"数据中止"(<5%的时间),我已经缩小到特定的功能(通过dumpbin和"数据中止"输出的地址)。但是,它是一个相当大的功能,我想将其范围缩小一点。我知道它是在memset()`调用中发生的,但是那个特定的函数有大约35个,所以我希望通过查看反汇编,我可以弄清楚问题出在哪里。

解决方案

回答

几年前,我发现我在做一些嵌入式工作时使用了一个ARM反汇编程序。但是,我不记得它的名字,尽管我认为它是一个更大的程序包(例如模拟器或者类似程序)的一部分。

就我们而言,我们能否要求编译器生成已编译代码的程序集列表?这可能会扩大范围。

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

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

回答

我相信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(用于ARM CPU)的反汇编程序和汇编程序

我们可能还会看到BDASM,这是一个共享软件反汇编程序的更高版本,具有ARM插件。该网站似乎已关闭,但是如果我们搜索它,则会找到共享软件发行版。

还提供了简单的ARM反汇编程序DISARM的源代码。

binutils(Linux编译器工具)objdump可用于产生反汇编," objdump -b二进制-m arm7tdmi -D file_name"

-亚当