比如木子、飘云、以及珊瑚虫外挂3V系列版本,获取IP的原理是一样的。
木子的代码
SetIP proc
pushad
;=================取得IP地址==================;
mov eax,dword ptr [ebp-10h]
push offset dwIp
push offset szRecentip
push eax
mov ecx, [eax]
call dword ptr [ecx+34h]
;=================取得端口号==================;
……
;=================取得版本号==================;
……
not2003:
飘云的代码。
pushad
; =================取得IP地址==================;
mov eax,dword ptr [ebp-14h]
push offset dwIp
push offset szRecentip
push eax
mov ecx,[eax]
call dword ptr [ecx+34h]
cmp dwIp,0 ;是否已经取得IP
珊瑚虫3.16的取IP部分反汇编代码:
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9EC ; ASCII对应的字符为"dwRecentIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]
………………………………………..
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9D8 ; ASCII对应的字符为"dwC2CIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]
…………………………………..
mov eax,dword ptr ss:[esp+10]
lea ecx,dword ptr ss:[esp+1C]
push ecx
push DUMPED.01B8D9C8 ; ASCII对应的字符为 "dwIP"
mov edx,dword ptr ds:[eax]
push eax
call dword ptr ds:[edx+34]
因此可以看出3V系列的珊瑚虫版本的核心功能其原理是一样的,这种方式最大的问题在于,如果QQ下定决心,只要更新一次客户端基本上可以让这些外挂要重新写过一个。
这里要提一个里程碑就是珊瑚虫V4系列,这个根据协议包来处理的,这个在游戏外挂中来说属于能制作变态外挂的范畴,因为它可以改变任何封包的问题了。
在观察这些流派的过程中,我对飘云比较有兴趣。他的主页在http://www.pyqq.cn 这个一直是继承了破解版本的思路,并且有很多东西都是由runjin一个人捣腾的。当时看到soff还在鸣谢中加上了runjin,觉得很奇怪。
QQ2003II推出后,可以说木子已达到顶峰这作了。可惜由于TX的干涉,被迫放弃。这个时候网上出现了木子继承版来了(感觉runjin当时应该是高三),木子继承版后,就把这个改名字改成飘云了。
这个小伙子汇编用得牛,人也不错,我当时学cygwin,划拉了一个QQ外挂的框架给他。最后糊涂的说成了飘云也要做外挂了,其实当时的目的也是跟runjin交流一下而已。但是既然要做,我又找到了几个人叫他们帮忙做一些东西。这个时候runjin也是要多看看VC.
目前我认为,这三个流派中的代表分别为飘云(破解型)、珊瑚虫(挂机外挂型)、luma(脱机外挂型)。 |