阅读:3480回复:6
初学者问题
小弟初学溢出,算是很晚了。希望斑竹不吝赐教。
目前正在阅读入门的教程,遇到了一些问题。 Windows 2000缓冲区溢出技术原理(http://blog.csdn.net/codeshell/archive/2005/04/25/361690.aspx) 的第二部分给出了一个自己制造的溢出的例子。 在我本机上,我运用作者给出的方法在msvcrt中寻找jmp esp。但是很不幸,没有找到。不知道作者是怎么找出来的0x78024e02 更让我郁闷的还不止这个问题。 我用user32代替msvcrt,寻找到jmp esp地址后运行成功。突然试了一下直接把0x78024e02换进去,没想到也运行成功了。不知道为什么会出现这种情况。 可能问题对高手来说比较简单,但是现在它就是我的拦路虎,请大家给我一个详细的解释,谢谢! |
|
沙发#
发布于:2007-08-03 17:45
0x78024e02所对应的汇编代码是什么,有的时候可能是push esp ret,不一定完全是jmp esp.
|
|
|
板凳#
发布于: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 |
|
地板#
发布于:2007-08-04 20:30
英文版Kernel32下是找不到Jmp esp的,user32下好像能找到
|
|
|
地下室#
发布于:2007-08-06 08:32
我的是在msvcrt下找,也没有找到,不知道作者怎么找到的,并且他给的地址还真的能用,感到很奇怪。
|
|
5楼#
发布于:2007-08-06 19:29
.......不会吧
你的msvcrt那个地址不能访问? |
|
|
6楼#
发布于:2007-08-07 09:03
不好意思昨晚有事没上来。
我用了msvcrt中的一处push esp-ret,取得了成功。看来在xp en下确实没有jmp esp。 |
|