汇编基本指令复习,以及逆向中如何跟esp ,ebp参数
来源:互联网 发布:买口红热 知乎 编辑:程序博客网 时间:2024/06/05 16:37
mov eax , ebx // eax = ebx
lea eax , [ebx + 30] // eax = ebx + 30
push pop //入栈,出栈
pushax popax //全部入栈,全部出栈
add eax,5 // eax += 5
sub eax, 5 //eax -= 6
inc eax // eax += 1
mul //乘法
div //除法
堆栈的学习
ESP 栈顶指针
EBP栈底指针 (本层CALL的栈底)
改变堆栈的操作
push eax // sub esp , 4 mov [esp] , eax
pop eax // mov eax , [esp] add esp , 4
call 1234 //push eip jmp 1234
return 8 //pop eip add esp , 8 eip表示下步要执行的地址
add esp , xxx
sub esp , xxx
栈底指针的学习
在逆向过程中,如果遇到
mov eax , [ebp + 8]
这样的如何去跟
这样的就需要把[ebp + 8]看成一个整体来处理
跟进CALL里面看,可以看到这样的代码
push ebp //在栈中保存 栈顶的指针 (就是返回到xxx的上一个栈元素)
mov ebp , esp
sub esp , 10
...
...
mov esp , ebp
pop ebp
堆栈中的数据格式如下
如下这样的格式
本层的临时参数2
本层的临时参数1
ebp保存的当前栈底的值
返回到上一层的call xxxxx
参数1
参数2
参数3
参数4
可以看出来,ebp + 4 保存的是上层call的地址
[ebp + 8] 是参数1
同理,类推。
ESP寄存器分析:
在游戏逆向中,如何遇到
mov ecx , [esp + 20] //栈顶指针 + 偏移的格式
1.首先要确定[esp + 20]是局部变量,还是参数
那么如何确定呢?
有下面两个办法
1.通过手工的算在本层CALL中的堆栈的偏移,然后得到 [esp + 20]的具体位置
2.直接ctrl+f9返回到上层call,查看距离当前堆栈esp的位置,如果正好20在上层call的函数下面,那么就是上层call的参数。
如何在上层call的上面,那么就是局部变量,就需要在call内部进行分析了。
到这,基本的寄存器知识都结束了
lea eax , [ebx + 30] // eax = ebx + 30
push pop //入栈,出栈
pushax popax //全部入栈,全部出栈
add eax,5 // eax += 5
sub eax, 5 //eax -= 6
inc eax // eax += 1
mul //乘法
div //除法
堆栈的学习
ESP 栈顶指针
EBP栈底指针 (本层CALL的栈底)
改变堆栈的操作
push eax // sub esp , 4 mov [esp] , eax
pop eax // mov eax , [esp] add esp , 4
call 1234 //push eip jmp 1234
return 8 //pop eip add esp , 8 eip表示下步要执行的地址
add esp , xxx
sub esp , xxx
栈底指针的学习
在逆向过程中,如果遇到
mov eax , [ebp + 8]
这样的如何去跟
这样的就需要把[ebp + 8]看成一个整体来处理
跟进CALL里面看,可以看到这样的代码
push ebp //在栈中保存 栈顶的指针 (就是返回到xxx的上一个栈元素)
mov ebp , esp
sub esp , 10
...
...
mov esp , ebp
pop ebp
堆栈中的数据格式如下
如下这样的格式
本层的临时参数2
本层的临时参数1
ebp保存的当前栈底的值
返回到上一层的call xxxxx
参数1
参数2
参数3
参数4
可以看出来,ebp + 4 保存的是上层call的地址
[ebp + 8] 是参数1
同理,类推。
ESP寄存器分析:
在游戏逆向中,如何遇到
mov ecx , [esp + 20] //栈顶指针 + 偏移的格式
1.首先要确定[esp + 20]是局部变量,还是参数
那么如何确定呢?
有下面两个办法
1.通过手工的算在本层CALL中的堆栈的偏移,然后得到 [esp + 20]的具体位置
2.直接ctrl+f9返回到上层call,查看距离当前堆栈esp的位置,如果正好20在上层call的函数下面,那么就是上层call的参数。
如何在上层call的上面,那么就是局部变量,就需要在call内部进行分析了。
到这,基本的寄存器知识都结束了
0 0
- 汇编基本指令复习,以及逆向中如何跟esp ,ebp参数
- ESP,EBP 汇编关于参数的传递
- 汇编指令ebp与esp的关系与作用
- bp sp/ebp esp 汇编中参数的传递和堆栈修正
- esp跟ebp跟踪记录
- esp跟ebp跟踪记录
- 魔恩:如何找CALL参数[esp/ebp+*]来源与局部变量[ebp-*]来源
- 汇编中EBP传递参数和变量
- 汇编里ebp和esp的作用
- 汇编寄存器之 ESP和EBP
- 对于汇编代码pushl %ebp movl %esp,%ebp
- EBP ESP 以及进程的切换
- ESP && EBP
- ESP EBP
- 汇编中使用EBP传递参数和变量
- 逆向常用汇编指令
- iOS 逆向 汇编指令
- 函数参数压栈,栈帧ebp,esp怎样移动的?
- 深入理解Linux修改hostname
- hdu 1195 Open the Lock(BFS && DBFS)
- 复杂数据类型
- java的io操作
- iOS UI 03 事件和手势
- 汇编基本指令复习,以及逆向中如何跟esp ,ebp参数
- [Coursera]算法基础_Week2_枚举_Q2
- 自己写的一个简单的资源管理器
- PL/SQL Developer(解压版)连接64位的Oracle11g
- eclipse安装和卸载插件
- JAVA7 的ForkJoin框架-学习笔记
- RelativeLayout相对布局
- C#写出的软件使用Tab按钮时的选择控件的顺序
- web工程复制后改名字后遇到问题,怎么解决