ruberman
驱动牛犊
驱动牛犊
  • 注册日期2003-04-08
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望15点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:3368回复:6

初学者问题

楼主#
更多 发布于:2007-08-03 17:30
小弟初学溢出,算是很晚了。希望斑竹不吝赐教。

目前正在阅读入门的教程,遇到了一些问题。
Windows 2000缓冲区溢出技术原理(http://blog.csdn.net/codeshell/archive/2005/04/25/361690.aspx
的第二部分给出了一个自己制造的溢出的例子。
在我本机上,我运用作者给出的方法在msvcrt中寻找jmp esp。但是很不幸,没有找到。不知道作者是怎么找出来的0x78024e02

更让我郁闷的还不止这个问题。
我用user32代替msvcrt,寻找到jmp esp地址后运行成功。突然试了一下直接把0x78024e02换进去,没想到也运行成功了。不知道为什么会出现这种情况。

可能问题对高手来说比较简单,但是现在它就是我的拦路虎,请大家给我一个详细的解释,谢谢!


ruberman
驱动牛犊
驱动牛犊
  • 注册日期2003-04-08
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望15点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-03 17:53
BYTE* ptr = (BYTE*)h;
bool done = false;
for(int y = 0;!done;y++)
{
try
{
if(ptr[y] == 0xFF && ptr[y+1] == 0xE4)
{
int pos = (int)ptr + y;
cout<<"OPCODE found at 0x"<<hex<<pos<<endl;
}
}
catch(...)
{
cout<<"END OF "<<dllname<<" MEMORY REACHED"<<endl;
done = true;
}
}
看代码的话是在搜索ff e4。就是jmp esp吧。
但是在我的机器上没有找到。
windows xp sp2 en
ruberman
驱动牛犊
驱动牛犊
  • 注册日期2003-04-08
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望15点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-06 08:32
我的是在msvcrt下找,也没有找到,不知道作者怎么找到的,并且他给的地址还真的能用,感到很奇怪。
ruberman
驱动牛犊
驱动牛犊
  • 注册日期2003-04-08
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望15点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-07 09:03
不好意思昨晚有事没上来。
我用了msvcrt中的一处push esp-ret,取得了成功。看来在xp en下确实没有jmp esp。
游客

返回顶部