首页
社区
课程
招聘
yoda异常处理堆栈的值是如何产生的?
发表于: 2006-1-15 19:05 4664

yoda异常处理堆栈的值是如何产生的?

2006-1-15 19:05
4664


我在脱yoda这个壳的时候,在转入异常处理的时候,发现图中黄线标注的地方的值每次都不一样(在不同的yoda壳所加的程序中),我想知道这个值是如何产生的,为什么是这个值?望大虾赐教。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 50161
活跃值: (20630)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
没跟过这个壳。猜想VirtualAllocEx随机分配的内存空间,然后外壳将代码解压过去,跳过去执行。
VirtualAllocEx(hProcess,,0,dwSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);//申请内存
2006-1-15 19:09
0
雪    币: 233
活跃值: (43)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
这幅图是自定义异常处理过程中堆栈的情况。内存分配是不会分配 0x80000000 以上的地址的。
也就是一条指令触发异常后由系统产生的。
这个值会在异常处理过程中取出做简单的运算然后作为返回地址写入堆栈。从异常处理过程返回后
就跳到这里执行。
2006-1-15 21:25
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
4
没跟过壳。或许是你跟踪的时候把异常处理的部分给略过去直接往下走了。
2006-1-16 12:20
0
游客
登录 | 注册 方可回帖
返回
//