有谁知道反编译器为ARMV4i可执行文件和DLL?ARMV4i(Windows Mobile 6)原生代码反汇编器
我有一个插件DLL我与一个非常罕见的data abort
(时间< 5%),写作,我已经缩小到一个特定的功能(通过DUMPBIN并通过data abort
输出地址) 。但是,这是一个相当大的功能,我想稍微缩小它的范围。我知道这是发生在memset()
调用中,但该特定函数约有35个函数,所以我希望通过查看反汇编,我可以找出问题的实际位置。
有谁知道反编译器为ARMV4i可执行文件和DLL?ARMV4i(Windows Mobile 6)原生代码反汇编器
我有一个插件DLL我与一个非常罕见的data abort
(时间< 5%),写作,我已经缩小到一个特定的功能(通过DUMPBIN并通过data abort
输出地址) 。但是,这是一个相当大的功能,我想稍微缩小它的范围。我知道这是发生在memset()
调用中,但该特定函数约有35个函数,所以我希望通过查看反汇编,我可以找出问题的实际位置。
IDA Pro肯定会做ARM反汇编。他们(Datarescue)在当地时间晚上11点左右给我安排了许可证,所以我喜欢推荐他们......
我从http://www.datarescue.com/idabase/看到公司有一些重新安排,但我猜这仍然是一个很好的产品。
这里的链接到新的出版商:http://www.hex-rays.com/idapro/
几年前,我发现了一个我在做一些嵌入式工作时使用的ARM反汇编程序。不过,我不记得它的名字 - 尽管我认为它是仿真器之类的大型软件包的一部分。
在你的情况,你可以问你的编译器生成编译代码的汇编清单吗?这可能有助于给你一些范围。
如果失败了,你可以将你的函数分解成一个或多个新函数,如果你能得到的只是堆栈跟踪。然后再将新功能分解成一个或多个。这是久经考验的“分而治之”的方法。如果你在一个函数中调用memset()35次,从设计的角度来看,这也是一个好主意!
更新:我发现我使用的软件包:ARMphetamine。它适用于我正在开发的ARM9代码,但看起来它在一段时间内还没有更新。
我相信IDA Pro会做你想做的。它在O'Reilly Security Warrior书中被提及,并且我在Windows Mobile开发者论坛上看到了它的推荐。
另外有用的将是一个编译器生成的组件列表;它可能更容易与来源相关联。通常'数据中止'打印堆栈和帧指针;链接寄存器`lr`肯定会有帮助。我希望Windows Mobile提供这些信息。 – 2013-03-01 04:56:04