单片机反汇编程序为何不能修改?
51单片机反汇编程序,编译后可正常运行,但若增添一行或注释掉任何一行程序显示就不准确了,显示采用的数码管,改后亮度倒可以,就是段码就完全不对了,请各位大虾解释一下啊,谢啦 1.无语2.研究出其中的规律、原理。写论文、申专利........ 你使用什么反汇编工具? 能共享吗? 我有两个文件一直反汇编不成功 z7001 发表于 2012-7-4 09:18 static/image/common/back.gif
你使用什么反汇编工具? 能共享吗? 我有两个文件一直反汇编不成功
叫智能反编译器。。 哦,这个我试过,反汇编失败 那是你反汇编没有反完全.有些代码会认为是数据. babysnail 发表于 2012-7-4 09:15 static/image/common/back.gif
1.无语
2.研究出其中的规律、原理。写论文、申专利........
小弟才开始学,不懂的太多,想了很久也没想出来为什么,所以就想问问大虾们,为什么稍微改动就不对了 52eda 发表于 2012-7-4 09:25 static/image/common/back.gif
那是你反汇编没有反完全.有些代码会认为是数据.
不过反汇编后再编译后运行正常呀 各功能都试了 都没问题 ytx1689567 发表于 2012-7-4 09:26 static/image/common/back.gif
小弟才开始学,不懂的太多,想了很久也没想出来为什么,所以就想问问大虾们,为什么稍微改动就不对了 ...
是学生就不调侃了,6楼已经说了。你改到数据了。 有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直接删除,添加的话计算好字节数用jmp跳转,新添加的程序放到空白的存储区域。 反汇编主要是代码段和数据段不好区分。{:curse:} 那个反汇编的工具我也用过,把反汇编的结果和List文件比较,发现很多问题。 mored 发表于 2012-7-4 09:55 static/image/common/back.gif
有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直 ...
这个是关键 mored 发表于 2012-7-4 09:55 static/image/common/back.gif
有绝对地址的访问
反汇编的程序,没读懂之前,最好不改变原来代码的位置,比如注释一行程序要用nop而不是直 ...
谢啦你说很准确!修改指令时只要保证字节数不变就可以正常运行的 学习了 啊!不过还是没看懂 肯定可以改啊,估计是你改错了
我也想知道,怎么看懂反汇编的程序而修改 10楼说的是对的。
51的没试过,以前玩破爆软件时反汇编过,原理是一样的。
本来一条转跳语句,你直接注释了或NOP代替了,从上执行下来,本来应该转跳的可顺序执行,后面必然错误。
还有运算也一样,你简单更改后参数可能会导致后面计算结果溢出。
所以要修改必须至少看懂当前完整的函数执行过程。 跳转地址还是绝对地址,你加指令,删指令,会影响代码。
如果是删行,别直接删, 用nop
想加指令,先跳到没用到的地方,写完在跳回来。
最好是整个程序完整的反汇编掉。 这个嘛、、好像在学习debug时,汇编也不能再修改,只有重写了 反汇编修改主要是地址问题。或者你方便的话贴出来
来自: amoBBS 阿莫电子论坛 iPhone客户端 不要使用优化模式,因为优化模式是使用的相对地址,这样你加入代码后会造成相对地址的变化,建议将相对地址改为绝对地址 对,要熟悉指令。改变程序需要JMP到一个空白地址!
页:
[1]