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

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

===============>>#1 票数:3

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

===============>>#2 票数:3 已采纳

IDA Pro肯定会进行ARM拆卸。 而且他们(Datarescue)曾经在当地时间晚上11点左右给我安排了许可证,所以我想向他们推荐...

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

这是新发布者的链接: http : //www.hex-rays.com/idapro/

===============>>#3 票数:1

ChARMeD是Windows Mobile / Pocket PC / Win CE(用于ARM CPU)的反汇编程序和汇编程序

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

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

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

-亚当

===============>>#4 票数:0

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

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

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

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

  ask by Adam Haile translate from so

未解决问题?本站智能推荐:

6回复

用于检查iOS编译的ARM反汇编程序/交叉编译器

任何人都可以推荐: 一个ARM反汇编程序,可以在Windows或MacOS中运行,理想情况下可以理解iOS使用的可执行格式 在MacOS中,一种直接从命令行调用XCode安装的交叉编译GCC的方法(这样我就可以在一个小的测试文件上运行它并要求汇编输出)。 基本上,我很想
1回复

gdb vs. objdump arm反汇编程序函数分支名称解析

我有一个奇怪的问题。 如果我使用objdump -d来反汇编ARM二进制文件,则它可以解析分支指令的功能(系统库)名称,例如: 因此,我看到bl 8318将调用printf。 当我使用gdb和disas命令时,我得到的反汇编没有函数名(相同的代码示例),请参见: 在gdb中,
1回复

GDB无法正确反汇编在RAM中运行的程序

我有一个使用GCC为STM32F407 ARM处理器编译的应用程序。 链接器将其存储在Flash中,但在RAM中执行。 一个小的引导程序将应用程序从闪存复制到RAM,然后分支到应用程序的ResetHandler。 一切正常,除非我尝试从RAM中调试应用程序(使用Eclipse中的GD
1回复

汇编器STRB指令armv7

我有以下代码: 它的操作码是42 54 我正在使用此表http://imrannazar.com/ARM-Opcode-Map 但是我这样54是我strb指令的操作码。 我想要的是STRB R2, 1 我需要为R2寄存器分配十进制值1。 我无法理解需要使用的
2回复

反汇编ARM / Thumb2 ELF文件

我正在尝试反汇编我使用arm-linux-gnueabihf为目标thumb-2的ELF可执行文件。 但是,ARM指令编码使我在调试反汇编程序时感到困惑。 让我们考虑以下指令: mov.w fp,#0 我使用objdump和hopper作为thumb-2指令对其进行了反汇编
3回复

ARM反汇编输出:当有两个参数而不是三个时

我正在尝试为考试练习注释一个反汇编块。 这是我到目前为止所做的: 所以我的评论非常简陋,而且可能非常不正确,但最重要的是我真的不明白像190或19a那样的指令是什么意思。 只有两个参数而不是三个,那么这些是如何工作的呢? 以此为例 到目前为止,我对此的解释是:如果不等于
4回复

使用objdump进行ARM体系结构:反汇编到ARM

我有一个目标文件,我试图反汇编它。 我用的时候: 我在代码中获得了elf64-x86-64文件格式的elf64-x86-64 。 我想把它拆成ARM,我该怎么做呢?
1回复

指令反汇编器ARM。 [ARM /拇指模式]

我想问你如何确定指令在哪个ISA(ARM / Thumb / Thumb-2)中编码? 首先,我尝试按照此处的说明进行操作 (第4.5.5节)。 但是,当我使用readelf -s ./arm_binary且arm_binary是在发行模式下.symtab时,二进制文件中似乎没有.s
1回复

如何使用aarch64-linux-gnu-objdump来反汇编V7模式指令(A32,T32)

我使用aarch64-linux-gnu-objdump来反汇编ARM v8程序的一部分。 它适用于V8 64位指令,但在模式更改为V7指令集(A32)时失败 - 代码以V8指令集开始,切换到A32(AArch32执行状态)而不是T32 - 拇指指令集。 如何拆卸A32和T32指令? 当模
1回复

Mac OS X,如何为ARM编译.c文件并在之后反汇编?

我想反汇编一个简单的.c文件: 在Mac Mini 10.8.3上获取ARM CPU的汇编代码。 我被困在这里: 如何为上述.c文件创建ARM可执行文件? 之后如何反汇编可执行文件? 谢谢你的帮助!