游戏外挂设计技术探讨
日期:2008年2月25日 作者: 查看:[大字体 中字体 小字体]-
下面我们逐一介绍这几个问题的解决方法:
(1) 、定位调用API函数指令代码
我们知道,在汇编语言中使用CALL指令来调用函数或过程的,它是通过指令参数中的函数地址而定位到相应的函数代码的。那么,我们如果能寻找到程序代码中所有调用被挡截的API函数的CALL指令的话,就可以将该指令中的函数地址参数修改为替代函数的地址。虽然这是一个可行的方案,但是实现起来会很繁琐,也不稳健。庆幸的是,Windows系统中所使用的可执行文件(PE格式)采用了输入地址表机制,将所有在程序调用的API函数的地址信息存放在输入地址表中,而在程序代码CALL指令中使用的地址不是API函数的地址,而是输入地址表中该API函数的地址项,如想使程序代码中调用的API函数被代替掉,只用将输入地址表中该API函数的地址项内容修改即可。具体理解输入地址表运行机制,还需要了解一下PE格式文件结构,其中图三列出了PE格式文件的大致结构。
图三:PE格式大致结构图(003.jpg)
PE格式文件一开始是一段DOS程序,当你的程序在不支持Windows的环境中运行时,它就会显示“This Program cannot be run in DOS mode”这样的警告语句,接着这个DOS文件头,就开始真正的PE文件内容了。首先是一段称为“IMAGE_NT_HEADER”的数据,其中是许多关于整个PE文件的消息,在这段数据的尾端是一个称为Data Directory的数据表,通过它能快速定位一些PE文件中段(section)的地址。在这段数据之后,则是一个“IMAGE_SECTION_HEADER”的列表,其中的每一项都详细描述了后面一个段的相关信息。接着它就是PE文件中最主要的段数据了,执行代码、数据和资源等等信息就分别存放在这些段中。
在所有的这些段里,有一个被称为“.idata”的段(输入数据段)值得我们去注意,该段中包含着一些被称为输入地址表(IAT,Import Address Table)的数据列表。每个用隐式方式加载的API所在的DLL都有一个IAT与之对应,同时一个API的地址也与IAT中一项相对应。当一个应用程序加载到内存中后,针对每一个API函数调用,相应的产生如下的汇编指令:
JMP DWORD PTR [XXXXXXXX]
或
CALL DWORD PTR [XXXXXXXX]
其中,[XXXXXXXX]表示指向了输入地址表中一个项,其内容是一个DWORD,而正是这个DWORD才是API函数在内存中的真正地址。因此我们要想拦截一个API的调用,只要简单的把那个DWORD改为我们自己的函数的地址。
(2) 、修改调用API函数代码
从上面对PE文件格式的分析可知,修改调用API函数代码其实是修改被调用API函数在输入地址表中IAT项内容。由于Windows系统对应用程序指令代码地址空间的严密保护机制,使得修改程序指令代码非常困难,以至于许多高手为之编写VxD进入Ring0。在这里,我为大家介绍一种较为方便的方法修改进程内存,它仅需要调用几个Windows核心API函数,下面我首先来学会一下这几个API函数:
DWORD VirtualQuery(
LPCVOID lpAddress, // address of region
PMEMORY_BASIC_INFORMATION lpBuffer, // information buffer
DWORD dwLength // size of buffer
);
该函数用于查询关于本进程内虚拟地址页的信息。其中,lpAddress表示被查询页的区域地址;lpBuffer表示用于保存查询页信息的缓冲;dwLength表示缓冲区大小。返回值为实际缓冲大小。
BOOL VirtualProtect( - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] 下一页
-
- 游戏外挂设计技术探讨 相关文章:
- ·.travel旅游域名注册详细放宽条件首次批露
- ·Travel旅游域名政策放宽或引发抢注潮
- ·玩对对碰游戏注意事项
- ·让傲游更加稳定流畅
- ·傲游Maxthon设置有技巧 浏览网页更稳定
- ·旅游资讯网站首页的设计分析
- ·网游大盗关闭某些安全软件并盗号
- ·QQ游戏斯诺克贴库球的打法
- ·IT网游八大富豪身价曝光(2007年)
- ·腐败之盗多进程加载盗取众多网游
- 游戏外挂设计技术探讨 相关软件
- ·畅游系列之坦克大战
- ·《葫芦娃大战蝎子王》游戏试玩
- ·《Toribash》游戏试玩
- ·变形金刚游戏GT独占宣传片
- ·《古墓丽影十周年纪念版》正式版地图任我游工具
- ·【连环画】铁道游击队 01 血染洋行(沪美版)
- ·游戏马—边锋记牌器
- ·游戏马-QQ记牌器
- ·扑克游戏 81.17
- ·天狼星语音控制大话西游
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:成长的烦恼:进一步理解设计模式
下一篇:中文Google地图的发展前景
精品推荐
热点TOP10
- ·游戏外挂设计技术探讨
- ·Solaris 10 安装及SVC管理及X及Vmware及其它可能遇到的一些问题
- ·简单对象访问协议(SOAP)初级指南
- ·DCOM揭秘之六
- ·Java 2中的Facade设计模式
- ·DB2 数据库设计:取得最佳性能的准则
- ·ADO.NET实用经验无保留曝光
- ·游戏开发新手入门之跟踪窗口和使用GDI
- ·利用API在Windows下创建进程和线程
- ·DB2数据库优化10 佳性能技巧
- ·四种网络游戏外挂的设计方法
- ·Message dispatch,失踪的链环
- ·游戏开发新手入门之Windows编程
- ·网络监听技术概览
- ·数据结构与算法总论
- ·自建Blog网站完全图解
- ·Java 2中的adapter模式
- ·程序语言效率比较
- ·叠代器模式(Iterator)
- ·原始套接字透析之综合实例:网络黑手
