- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(一)将多个“堆结构体变量”所“构成”的“链表”中的“头结点”所“对应”的“堆结构体变量”本身的“首位置”的“32位虚拟地址”所“转储”到的当前“用户态进程”的“0~3G虚拟存储空间”中“加载”的“可执行程序main”中的“代码区块”中所“存储”的“全局指针变量”即“指向”该多个“堆结构体变量”所“构成”的“链表”本身的“头结点”的“32位虚拟地址”通过“CE工具”获取到:1、通过“mov [esi+18],eax”汇编执行语句或“mov ebx,[ecx+14]”汇编执行语句判断该“eax寄存器”、“ebx寄存器”、“ecx寄存器”、“esi寄存器”中所“存储”的“值”为某个“堆空间”即某个“堆结构体变量”的“首位置”的“32位虚拟地址”且仅能通过“寄存器”之间对“不相同”的“堆结构体变量”或其“内部”存储的“堆结构体变量成员变量”的“首位置”的“32位虚拟地址”进行“转储”操作:此时“esi+18”或“ecx+14”即表示某个“堆结构体变量”内部所“存储”的“堆结构体变量成员变量”的“首位置”的“32位虚拟地址”,且在当前“用户态进程”被销毁前,所有“堆存储空间”中所“新生成”的所有“堆结构体变量”的“值”全部不会被“删除”,如:C代码:typedef struct node{ int a; node *next;}node;int main(){ node *s1=new node; s1-a=320; node *s2=new node; s2-a=550; s2-next=NULL; s1-next=s2; return 0;}-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------该“C代码”所“对应”的“汇编”执行语句: 0040D450 55 push ebp0040D451 8B EC mov ebp,esp0040D453 83 EC 50 sub esp,50h0040D456 53 push ebx0040D457 56 push esi0040D458 57 push edi0040D459 8D 7D B0 lea edi,[ebp-50h]0040D45C B9 14 00 00 00 mov ecx,14h0040D461 B8 CC CC CC CC mov eax,0CCCCCCCCh0040D466 F3 AB rep stos dword ptr [edi]9: node *s1=new node;0040D468 6A 08 push 80040D46A E8 61 00 00 00 call operator new (0040d4d0)0040D46F 83 C4 04 add esp,40040D472 89 45 F4 mov dword ptr [ebp-0Ch],eax//1.1------“eax寄存器”的“值”为“new node”所“返回”的“新生成”的第“1”个的“堆结构体变量”的“首位置”的“32位虚拟地址”0040D475 8B 45 F4 mov eax,dword ptr [ebp-0Ch]0040D478 89 45 FC mov dword ptr [ebp-4],eax//1.2------此时将该“new node”所“返回”的“新生成”的第“1”个的“堆结构体变量”的“首位置”的“32位虚拟地址”,“赋值”给了在“栈空间”
原创力文档


文档评论(0)