ytx1689567 发表于 2012-7-4 08:57:11

单片机反汇编程序为何不能修改?

51单片机反汇编程序,编译后可正常运行,但若增添一行或注释掉任何一行程序显示就不准确了,显示采用的数码管,改后亮度倒可以,就是段码就完全不对了,请各位大虾解释一下啊,谢啦

babysnail 发表于 2012-7-4 09:15:10

1.无语

2.研究出其中的规律、原理。写论文、申专利........

z7001 发表于 2012-7-4 09:18:39

你使用什么反汇编工具? 能共享吗?   我有两个文件一直反汇编不成功

ytx1689567 发表于 2012-7-4 09:23:23

z7001 发表于 2012-7-4 09:18 static/image/common/back.gif
你使用什么反汇编工具? 能共享吗?   我有两个文件一直反汇编不成功

叫智能反编译器。。

z7001 发表于 2012-7-4 09:24:33

哦,这个我试过,反汇编失败

52eda 发表于 2012-7-4 09:25:32

那是你反汇编没有反完全.有些代码会认为是数据.

ytx1689567 发表于 2012-7-4 09:26:02

babysnail 发表于 2012-7-4 09:15 static/image/common/back.gif
1.无语

2.研究出其中的规律、原理。写论文、申专利........

小弟才开始学,不懂的太多,想了很久也没想出来为什么,所以就想问问大虾们,为什么稍微改动就不对了

ytx1689567 发表于 2012-7-4 09:28:39

52eda 发表于 2012-7-4 09:25 static/image/common/back.gif
那是你反汇编没有反完全.有些代码会认为是数据.

不过反汇编后再编译后运行正常呀   各功能都试了 都没问题      

babysnail 发表于 2012-7-4 09:40:09

ytx1689567 发表于 2012-7-4 09:26 static/image/common/back.gif
小弟才开始学,不懂的太多,想了很久也没想出来为什么,所以就想问问大虾们,为什么稍微改动就不对了 ...

是学生就不调侃了,6楼已经说了。你改到数据了。

mored 发表于 2012-7-4 09:55:32

有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直接删除,添加的话计算好字节数用jmp跳转,新添加的程序放到空白的存储区域。

121854416 发表于 2012-7-4 09:58:14

反汇编主要是代码段和数据段不好区分。{:curse:}

XA144F 发表于 2012-7-4 09:59:46

那个反汇编的工具我也用过,把反汇编的结果和List文件比较,发现很多问题。

albert_w 发表于 2012-7-4 10:31:44

mored 发表于 2012-7-4 09:55 static/image/common/back.gif
有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直 ...

这个是关键

ytx1689567 发表于 2012-7-4 14:25:17

mored 发表于 2012-7-4 09:55 static/image/common/back.gif
有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直 ...

谢啦你说很准确!修改指令时只要保证字节数不变就可以正常运行的

llz0734 发表于 2012-7-8 00:02:10

学习了 啊!不过还是没看懂

raxb 发表于 2012-7-8 12:18:59

肯定可以改啊,估计是你改错了
我也想知道,怎么看懂反汇编的程序而修改

sniper.q 发表于 2012-7-8 19:24:46

10楼说的是对的。
51的没试过,以前玩破爆软件时反汇编过,原理是一样的。
本来一条转跳语句,你直接注释了或NOP代替了,从上执行下来,本来应该转跳的可顺序执行,后面必然错误。
还有运算也一样,你简单更改后参数可能会导致后面计算结果溢出。
所以要修改必须至少看懂当前完整的函数执行过程。

canback 发表于 2012-7-8 19:34:17

跳转地址还是绝对地址,你加指令,删指令,会影响代码。
如果是删行,别直接删, 用nop
想加指令,先跳到没用到的地方,写完在跳回来。

最好是整个程序完整的反汇编掉。

Hisen-lv 发表于 2012-7-9 00:19:11

这个嘛、、好像在学习debug时,汇编也不能再修改,只有重写了

winterw 发表于 2012-7-9 00:39:19

反汇编修改主要是地址问题。或者你方便的话贴出来
来自: amoBBS 阿莫电子论坛 iPhone客户端

marshallemon 发表于 2012-7-9 01:06:50

不要使用优化模式,因为优化模式是使用的相对地址,这样你加入代码后会造成相对地址的变化,建议将相对地址改为绝对地址

fooint 发表于 2012-10-21 20:12:44

对,要熟悉指令。改变程序需要JMP到一个空白地址!
页: [1]
查看完整版本: 单片机反汇编程序为何不能修改?