我想从XBee DigiMesh固件(Cortex-M3,EM357)中提取机器代码,所以我有包含3个部分的SREC文件。我猜想这些部分中有一个是代码部分,但是arm-none eabi-objdump经常报告“未知指令”。,有人知道为什么会这样吗?
我就是这样做的:
arm-none-eabi-objcopy --input-target=srec --output-target=binary -j .sec2 xbp24-dm_8073.ehx2.dec sec2.bin
arm-none-eabi-objdump -D -bbinary -marm -Mforce-thumb sec2.bin
发布于 2017-03-29 10:34:50
大脑皮层-m~3支持thumb2,它是可变指令长度,您不能简单地从开始开始并分解一个可变长度指令集,您可以/将很容易地脱离同步,输出变成垃圾,并且永远保持这种方式。在这种情况下可能不是,但您会有错误,这是预期的。很有可能他们添加了项目来混淆反汇编程序。
而且你可以在这里有很多数据,或者是压缩代码,或者谁知道还有什么.
作为一个皮层-m的第一个词块不是一个向量表,那么这是什么代码。如果以使用gnu的方式检查输出,这看起来并不像真正的代码,因此可能是加密的或压缩的或其他。您是否看到堆栈框架正在构建,函数以pop (ld与否)结尾,其中包含了一些静态单词的链接寄存器,那么下一个函数的开头是什么呢?当然,并不是所有的代码都是编译的,但是其中一些看起来应该像编译过的代码。
如果你想黑一些固件,你也许应该弄清楚它是如何/在哪里加载的,并创建/使用指令集模拟器。但是,如果没有一个向量表,那就好好享受吧。
您的反汇编方式丢失了地址内容。
S123110001BE8110204D5401BE96102452...
0x1100 : 0x01BE
0x1102 : 0x8110
0x1104 : 0x204D
0x1108 : 0x5401
0x110C : 0xBE96
0x110E : 0x1024
以此类推,或者说很可能是
0x1100 : 0xBE01
0x1102 : 0x1081
您可以使用该srec并创建一个程序:
.hword 0xbe01
.hword 0x1081
一个对于每个相邻的地址范围的项目,当地址跳转开始一个新的文件,创建一个链接脚本来覆盖每个部分的开始地址,组装,在其中之一制作一个_start标签,链接到脚本,然后你有一个精灵,你可以拆解,我仍然认为它是有问题的,但一些相对的寻址将是有意义的和或绝对的寻址。
还请注意您的入口点
S903189351
假设这是真的,就没有理由假设它是真的。
https://stackoverflow.com/questions/43090565
复制相似问题