首页
社区
课程
招聘
[旧帖] [求助]初学者提问!新手!很急! 0.00雪花
发表于: 2009-7-13 00:44 1107

[旧帖] [求助]初学者提问!新手!很急! 0.00雪花

2009-7-13 00:44
1107
第一次反汇编就遇到问题,帮忙啊!
push ebp   //堆栈变址指针   ebp=1245120
mov ebp,esp   //ebp指向栈顶  ebp=1245056
sub epb,44h        //esp,44h栈顶减44 esp=1244988   
push ebx    //ebx压入栈底
push esi        //将esi压入栈底
push edi        //将edi压入栈底,此时esp为1244988-12=1244976
lea  edi,[ebp-44h] 将偏移1244988给edi,此时edi与edp-44指向同一片地址
mov  ecx,11h   //ecx等于11
mov  eax,0cccccccch //设置为int3号异常中断。
rep stos  dword ptr[edi]
//rep 重复执行ecx中填写的次数
//stos 将eax中的值放入4字节同时edi+4
//        int nGet=1;
mov dword ptr [ebp-4],1 //现在这里是1245052不是刚才已经设置过的int3号中断吗?不是覆盖掉了?

我自己的想法是这里如果异常了就触发这片存储域的int 3中断,1则不会存进去,是不是这样啊?
int3号中断又是什么时候被改的中断向量表呢?变成对应的异常信息的呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
信息不够,我也不知道。关键点你步入看一下,
mov  eax,0cccccccch //设置为int3号异常中断。这种地方或周围步入一下
2009-7-13 10:17
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
3
这是VC在Debug情况下编译出来的代码。
往局部变量前后的堆栈空间填入0xCCCCCCCC,是为了检测可能出现的程序错误(当程序编写错误导致EIP跳到这些地方,执行时就会出现异常,从而被调试器捕获)。
后面的mov dword ptr [ebp-4], 1是正常的局部变量初始化。
2009-7-13 17:32
0
游客
登录 | 注册 方可回帖
返回
//