游戏安全实验室 首页 游戏漏洞 查看内容

【游戏漏洞】HOOK原理以及在游戏逆向中的应用

发布于:2018-3-15 10:24   |    69837次阅读 作者: 外部投稿    |   原作者: 通化程序员

HOOk的意思是拦截, 也称钩子。

大家可以打开PCHunter 这个工具  看看任意的网游或则 游戏辅助程序,都纯在着大量的钩子。

无论是对数据的拦截还是对游戏代码的篡改还是游戏安全的被动防护,钩子都是必须的。

 

 

钩子的作用

①获取执行到某条代码的时候,所有寄存器的值 。

例如HOOK 明文包,HOOK 收包,我们可以拦截到所有的封包内容及包长,从而可以更加方便的分析封包协议。

 

②在某条代码处加入我们想处理的内容,例如某些变态功能 ,例如DXF扣血CALL ,判断是怪物对象直接赋值0将血量扣为0实现秒怪,而判断是人物对象直接不扣血,实现无敌的效果。

 

 

 

hook明文包代码实例如下:

函数,变量名 全部中文修改标注

 

void Call_Hook明文包()

{

DWORD Hook地址 = Addr_明文包-15;

DWORD Hook子程序指针 = (DWORD)Hook明文包子程序;

DWORD 跳转值=Hook子程序指针-Hook地址-5;

 

Call_提升权限(TRUE);//提升EXE权限

DWORD pid=NULL;

DWORD WriteSize=NULL;

GetWindowThreadProcessId(Call_获取窗口句柄(),&pid);//获得进程ID

hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);//打开进程

 

__try

{

byte Temp=0xE8;