0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

请教关于MCU反汇编问题!(50分)



常听人说51的反汇编关键 是 数据 代码的分离

那其他的MCU  也有这个问题么?

比如是 TI  的DSP    MOTOROLA 的DSP
还有 ARM?

最近在看BIN  文件  希望 各位 大牛 指点下?目前是学习阶段  !
提问者:biang51 地点:- 浏览次数:4636 提问时间:06-29 11:18
我有更好的答案
提 交
14条回答
jghgfdssas 07-06 01:55
我们编译好的 下载到 MCU的都 是 BIN  文件  有生成的是 .HEX  .OUT  .S  .ELF  不管他是 啥后缀。总之到MCU里的 ROM或FLASH 中的 都是 二进制 文件  然后读 出来的  无非是BIN  和HEX 文件

我现在 知道 是  读出的这个些个  文件里总是之 包含 了代码部分(RO)和数据部分(RW)
比吥匕卟 07-08 14:36
如果要把它变成 汇编的话 那就要查  MCU公司 提供的  反汇编表格!就是 汇编指令对应的 二进制数值

相信 老 一辈  早年都经历过  把编写好的  汇编代码  翻译成机器码  然后在 下载到MCU里

老的烧写器(不需要PC机的那种) 需要人工把 汇编代码 翻译成机器码然后 人工输入到烧写器 然后在下栽到MCU里。
Sandyjia 07-05 00:14
数据代码分离  可能是PC软件 有时候 会把数据文件当成 程序代码 吧?
胡政鹏测试_21 07-08 02:37


但是如果 生成的BIN文件  里的  代码部分(RO)和数据部分(RW)

放在不同地址空间里就好办了  比如说  0X00-0XFFF放的是代码部分(RO)而0X1000-1FFF数据部分(RW)
那么PC机软件就不会把数据文件当成 程序代码 吧??????
物是人非aaa 07-05 12:53
任何处理器代码的反汇编首先都需要分离指令和数据,这基本没有例外。当然,编程者为了提高反汇编的难度会进行一些特殊处理,这些一般都没有通用的解法。

其实,抄板或反向设计基本是没有什么前途的做法。任何产品,用户只会青睐于先行者,特别是崇尚个性和时尚的当今。苹果就是一例。
harrysummer 07-09 04:30
同意,不过搞搞小家电还差不多
szbliy 07-02 23:34
以8051core为例,
LJMP  Label001   是3个字节
mov A,#22是2个字节
clr A是一个字节

你逐个字节去翻汇编,是不行的,很多指令都错位了。
可行的做法是,建立虚拟机,运行,记录运行路线,然后再进行反汇编。

曾经,反一个文件,我收客户3K的,没点难度客户能让你赚钱这么容易。
jsdfuweurw 06-29 16:17
请教  McuPlayer   一般虚拟机  在那里能找到!

是不是所有的  的MCU 的数据和代码是 搅和在一起 的?????
Peterlt 07-08 20:36
我做的反汇编工具是内置虚拟机的,反之前都有虚拟运行,所以能丢弃一些故意迷糊人的花指令。
但独立的虚拟机可以做到更深的虚拟运行深度,导出运行轨迹文件,给反汇编工具做参考用。

在我做的软件Release之前,是3K而不是300反一个文件,没有什么不正常。
后来对这些不感兴趣了,就把HT和义隆的反汇编Release出去了。
tangxi123 06-30 08:16
(1)如果没有用汇编写过功能齐全的单片机程序,可能会被玩。
(2)想被玩的话,那网上找个对应型号的反汇编软件先反汇编一下,只要数据不是放在最开始,前面的指令都是对的,或从外围器件入手、如按键输入、LED显示。重要的发挥你以前汇编写代码的功力。
(3)如果有算法,也不要忐忑,我反汇编过一个算法,用matlab仿真,才知道原理的。
(4)经过反汇编过程后,你的功力会大增,good luck!
直达成功 07-05 03:48
楼上大牛,大家正着都不会走路呢,有人已经倒着走路了。
Jaionm 07-02 18:19
需要分数据和指令。但是
不要被有的人唬住了。
用IDA反汇编,在IDA中你的问题就是 按C或D键的事。最反感的是有人把问题故意的复杂化,不这样好像不能显示出其水平。
60user177 07-07 09:57
原来这里也有反汇编强人啊
云云云3 07-09 05:14
哈哈,我要是技术处理一下,跳转指令与数据交融在一起,借用数据块作为跳转地址,你智能反汇编就头晕了.
这也是加密的方法之一哦
撰写答案
提 交
1 / 3
1 / 3