几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » 程序设计 » vc编程
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2007-03-27, 02:19 PM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 【转帖】利用hook拦截api的问题(附代码),

利用hook拦截api的问题
近来想研究一下外挂程序,仅仅学习之用,我尝试着用Hook进入目标进程,然后用替换api入口地址的方法,拦截api调用。部分替换代码如下:

HMODULE hModule=LoadLibrary("user32.dll");
pfMessageBoxA=GetProcAddress(hModule,"MessageBoxA");
if(pfMessageBoxA==NULL)
return false;

memcpy(OldMessageBoxACode, pfMessageBoxA, 6);
NewMessageBoxACode[0] = 0xe9;
//jmp MyMessageBoxA的相对地址的指令

DWORD jmpaddr = (DWORD)MyMessageBoxA - (DWORD)pfMessageBoxA - 5;
memcpy(&NewMessageBoxACode[1], &jmpaddr, 5);

dwIdOld=dwIdNew;
hProc=OpenProcess(PROCESS_ALL_ACCESS,0,dwIdOld);//得到所属进程的句柄
VirtualProtectEx(hProc,pfMessageBoxA,5,PAGE_READWRITE,&dwIdOld);
//修改所属进程中MessageBoxA的前5个字节的属性为可写

WriteProcessMemory(hProc,pfMessageBoxA,NewMessageBoxACode,5,0);
//将所属进程中MessageBoxA的前5个字节改为JMP 到MyMessageBoxA

VirtualProtectEx(hProc,pfMessageBoxA,5,dwIdOld,&dwIdOld);
//修改所属进程中MessageBoxA的前5个字节的属性为原来的属性

以上代码用来拦截user32.dll中的MessageBoxA是成功的,但是同样的方法我想拦截Wsock32.dll中的recv方法,结果拦截时会让目标程序非法操作,感觉是api的入口地址替换不对,请问哪位高人能够指点一下!谢谢!
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 11:16 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多