汇编之youyouyou内存图15 |
您所在的位置:网站首页 › 汇编内存分配 › 汇编之youyouyou内存图15 |
@TOC 内存图exe 程序运行时 内存的划分,定义 代码区 可读可执行 存放 if,else,while 等你写的代码.堆栈 参数,局部变量,临时数据. 比如: 一些中间结果就是临时数据 当堆栈执行完毕,其中的数据变成 垃圾数据堆 可读可写 动态申请的,大小是可变的.全局变量区 可读可写 存放了全局变量常量区 只读 存放常量的地方全局变量 int g,n = 10; int Function() { int x = 2; int y = 3; return g+n+x+y; } 全局变量 在程序编译完毕后的地址 已经确定下来了. 全局变量所占内存会一直存在,直到整个进程结束 全局变量反汇编识别 MOV 寄存器 , byte/word/dword ptr:ds[2012345678]通过寄存器宽度 或者 byte/word/dword 判断全局变量的宽度 这里最后eax 的mov 和 add, mov 是一个死的地址. 所以是一个全局变量. 这个地址是一个基质 局部变量函数内的变量 ebp - 4. 大多是局部变量判断参数有几个参数 1 有时候我们看不到 调用代码的地方. 也就看不到 push 操作 2 我们跟到代码中. 1 不考虑 ebp,esp 2 只找给别人赋值的寄存器,eax,ecx,edx,ebx,esi,edi 3 找到以后追查其来源. 如果该寄存器中的值不是在函数内赋值. 那么一定是传递进来的参数 1 寄存器 + ret 4 = 参数个数 2 寄存器 + [ebp + 8 ] + [ebp + 0x ] = 参数个数
主要功能 主要分析识别 if 语句 看到一些影响标志位的 语句,看到 jcc指令语句之后. 很可能就是 if 语句 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |