彩虹显IP 后两位星号 解决方案 全显IP

    没什么技术含量,纯属无聊练练手。

    出来XX有大把的时间,看着哪个不顺眼就削谁,那个后两位是星号的彩虹显IP 2.71外挂是最欠扁的。彩虹开发团队可能出于对用户安全的考量,有意隐藏了对方IP的后两位,将其改为星号。

    思路:通过字符串格式化模板,找到回显IP格式化函数,然后修改之。

    显IP的原理非常简单,说穿了就是API HOOK,有兴趣上网能搜出一大堆的文章。彩虹安装目录下的“CaiHong.dll”文件就是被Hook QQ函数的新函数的模块,说起来有点拗口,也就是说,API HOOK能改变被HOOK函数的执行流程,比如QQ “QQHelperDll.dll”模块中IsLogin函数的参数包含了当前登录的QQ号码、状态以及上下文句柄,那么我们就可以Hook该函数,其他函数在调用该函数时就会先调用我们自己写的函数(通过查看堆栈,我们就能得我们想要的数据),在我们的函数内部再调用原函数以便程序能正常执行下去。说了这么大一堆话,简而言之就是说,“我们自己的函数”就位于“CaiHong.dll”文件中,该文件就是我们今天要削的对象。API HOOK本身并不复杂,但是要找到正确的被HOOK的函数却是一件十分艰辛的苦差事,在此向前辈们致敬。

    打开OllyDbg载入CaiHong.dll,查找字符串“%d.%d.*.*”。运气不错!验证了最初的猜测,而且只有一个地方引用该串。将*号修改成任意字符,重新启动彩虹,探测好友IP,看到对方IP已经被修改成了刚才设置的字符。进一步确认了IP回显的工作方式。然后找到引用该串的位置:

1004BC6E    8B45 08            mov eax,dword ptr ss:[ebp+8]     ; 对方IP
1004BC71    C1E8 10            shr eax,10
1004BC74    25 FF000000      and eax,0FF
1004BC79    50                    push eax                                    ; IP的B位
1004BC7A    8B4D 08            mov ecx,dword ptr ss:[ebp+8]
1004BC7D    C1E9 18            shr ecx,18
1004BC80    51                    push ecx                                     ; IP的A位
1004BC81    68 3CC50810      push CaiHong.1008C53C            ; ASCII "%d.%d.*.*"

    该动手修改代码了。首先将"%d.%d.*.*" 改成"%d.%d."%d.%d"。打算将代码放置到该段最后的空隙中,先用一个jmp跳出来,将相应的IP数据入栈后再跳回,详见代码

1004BC71    E9 8AA60300  jmp CaiHong.10086300
1004BC76    90                 nop
1004BC77    90                 nop
1004BC78    90                 nop
1004BC79    90                 nop
1004BC7A    8B4D 08        mov ecx,dword ptr ss:[ebp+8]
1004BC7D    C1E9 18        shr ecx,18
1004BC80    51                 push ecx                                        ;  IP的A段
1004BC81    68 3CC50810 push CaiHong.1008C53C                 ;  ASCII "%d.%d.%d.%d"

10086300    33D2              xor edx,edx
10086302    8AD0              mov dl,al
10086304    52                  push edx                                        ;  IP的D段
10086305    33D2              xor edx,edx
10086307    8AD4              mov dl,ah
10086309    52                  push edx                                        ;  IP的C段
1008630A    C1E8 10         shr eax,10
1008630D    33D2             xor edx,edx
1008630F    8AD0              mov dl,al
10086311    52                  push edx                                        ;  IP的B段
10086312    E9 6359FCFF   jmp CaiHong.1004BC7A                   ;  跳回原函数

    修改后的成果:
   

下面是已修改好的CaiHong.dll,下载后直接覆盖彩虹安装目录下的同名文件即可。
http://www.namipan.com/d/CaiHong.rar/a5333ee56c34d982beb7cc8578e904462058a462ce690300

你可能感兴趣的:(c,工作,api,qq,hook)