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

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

2006-1-15 19:05
4636


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

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 47147
活跃值: (20415)
能力值: (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
游客
登录 | 注册 方可回帖
返回
//