|
|
11精币
他原来的是这样
1:cdq
mov [ebx],eax
mov [ebx+04],edx
2:******
我把这段改成 jmp 跳转到我申请的内存 然后我申请的内存里面的代码 也是这一段
cdq
mov [ebx],eax
mov [ebx+04],edx
然后我在从我的内存这边 跳过来 jmp 2 继续执行
等于说 就是把这段代码换个地方运行 并且什么都没改。一点都没改动。
但是这样会崩溃。我不知道为啥。 按我的理解 不是 jmp 跳过去 在 jmp 跳回来。没有影响任何东西吗?为啥会崩溃。求助一下。我不是很懂汇编这块在学习
|
最佳答案
查看完整内容
调试器里单步跟踪一下就知道了,检查是不是破坏掉了执行结构,你没图,不过我猜可能是,不过也有其他可能,都要自己检查,比如可能你申请的内存地址属性只有读写并没有可执行,也会崩溃。汇编代码不一定是一行一 行按序执行,如果上面刚好有跳转跳下来,而目标地点刚好被你上面一行的JMP填充了5字节,破坏掉了汇编,就会出现这种情况
比如这是正常的代码 有一个跳转要跳到C1处
你在BE处通过JMP跳走了 因为需要5字节 就 把下面的 ...
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|