发布于:2015-11-2 14:31 | 213178次阅读 作者: 管理员 | 原作者: TP
外挂版本:逆战地图透视sp1 功能描述: 地图透视:不显示游戏中设置的物体,直接看到障碍物背后的玩家。 正常游戏截图: 开启地图透视截图: 实现原理: 外挂修改游戏虚表,在游戏调用函数DrawIndexedPrimitive(地址是0x00D44390)进入外挂模块功能函数,进入外挂模块的地址在该函数头偏移0xa4位置,还原eax中的数据,地图透视功能无效。Hook该函数打印函数调用信息: 正常游戏调用函数:dwFuncAddr:0x054448840,是d3d9.dll中的函数。
开启外挂修改虚表后调用模块:dwFuncAddr:0x0b671792,是外模块中的函数,地址的前4位随着每次模块加载的不同会有所不同,后4位偏移基本是不变的。 下面是外挂修改虚表后进入的外挂模块中的函数,因为基址每次加载都不同,偏移是0x1792。 实现地图透视功能函数: 下面是实现地图透视功能函数调用的sub_b5316ae函数的实现,调用d3d9.dll中的GetStreamSource(0,&pStreamData,&iOffsetInBytes,&iStride),返回iStride的值用于区分目标对象。 下面是实现地图透视功能函数调用的loc_b53170b函数的实现,调用d3d9.dll中的SetRenderState函数。 外挂通过直接读取内存地址就可以获取虚表起始地址, [[[015fa50c]]+ 0xe4]获取SetRenderState函数地址, [[[015fa50c]]+ 0x194]获取GetStreamSource函数地址, [[[015fa50c]]+ 0x148]获取DrawIndexedPrimitive函数地址。 其中是游戏015fa50c全局变量地址。
|
最新评论
发表评论