lihui0520
发表于 2017-1-10 13:30
楼主讲的很具体详细啊,有点基础的就能看懂,收货很大,非常感谢
yale
发表于 2017-1-10 23:11
学习楼主的教程谢谢分享
梦幻岛主
发表于 2017-1-11 08:37
Shy 发表于 2016-12-14 13:10
不过还是问一下 retn 4表示有1个参数是为什么?4在16进制和10进制中也是4啊?那么原则上来说是有4个参的 ...
修改程序主要就是平栈,这个是程序执行的规则
因为里面保存了每个函数的参数和返回值
在进入这个函数前push了多少次 每次乘于4 ,因为32位程序每个栈占4字节
进入后ret 指令相当于 popjmp 取栈上第一条地址作为返回地址并弹出栈
平盏有两种方式
你看到的是一种
还有一种是
push 1
push 2
callXXXXX <= 里面只有ret
add esp,8<= 这里也是平盏操作
宁外说下
ebp+xx是参数偏移,ebp-xx是局部变量偏移
参数 N <---
参数 2 <---
参数 1 <---
返回地址 <---
旧的ebp值(调用者的ebp) <---
局部变量 1 <---
局部变量 2 <---
za6268963
发表于 2017-1-11 08:59
厉害厉害
615198
发表于 2017-1-11 20:32
积分不够啊0 0
1459562
发表于 2017-1-21 20:12
代表4个呗!
狂放
发表于 2017-1-21 22:44
2017,让我们17吾爱汇编论坛!
lovejingqing
发表于 2017-1-22 10:24
mark一下,再详看
a779260718
发表于 2017-2-1 15:54
CALL的上层怎么找哦
MJL399062763
发表于 2017-2-2 12:05
哈哈哈哈好东西试试水