获得jmp esp地址

对于大部分想要利用缓冲区溢出的人来说,jmp esp就再熟悉不过了,我最近发现网上将如何如何利用它的人太多太多,可是就是没人告诉在shellcode 中到底jmp esp的地址在哪,有些直接给除了它的地址可是由于jmp esp随系统的不同地址也不同,有可能别人能用,你拷下就没办法,于是,我便贴出下面一个实用程序,方便大家,而且值得一提的是如果将程序稍加修改,便可以查找任何机器码所对应汇编代码的地址。注意,文中以ntdll.dll里查找,有可能在ntdll.dll中找不到ffe4(jmp esp的机器码),你可以尝试其他dll,最好是常驻内存的,至于为啥,呵呵,想必大家都知道吧。

#include<windows.h>
#include<iostream.h>

#include<tchar.h>
int main()
{
int nRetCode=0;
bool we_load_it=false;
HINSTANCE h;
TCHAR dllname[]=_T("ntdll");       
h=GetModuleHandle(dllname);
if(h==NULL)
  {h=LoadLibrary(dllname);
if(h==NULL)
 {cout<<"ERROR LOADING DLL:"<<dllname<<endl;
return 1;
}
we_load_it=true;
}
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;
}
}
if(we_load_it)
FreeLibrary(h);
return nRetCode;

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值