八达网
标题:
星际争霸存录像卡死原理和解决办法
[打印本页]
作者:
tgpxyx
时间:
2009-8-7 11:54
标题:
星际争霸存录像卡死原理和解决办法
现在有星际作弊外挂为了作弊现象不给看rep录像,而采用了一种垃圾数据包使存录像时会卡死住 ,只能用任务管理器终止进程,不知道切换的人还以为是电脑死机了呢(星际是全屏),这个功能真是太恶心了!当然,还有个更恶心的就是游戏中对方让你星际直接卡死,原理也是差不多,直接发个聊天数据里包含为0x0C的字节就会使星际卡死,解决办法就是hook到接收聊天信息的地方过虑到这个字节就行了.
现在我们来分析一下存rep卡死的原理(以下以1.08B星际版本为例)
通过跟踪分析知道存rep的函数地址
.text:0047BED4 inc esi
.text:0047BED5 mov ebx, [esp+1Ch+var_C]
.text:0047BED9 xor edi, edi
.text:0047BEDB and ebx, 0FFh
.text:0047BEE1 jle short loc_47BEF5
.text:0047BEE3
.text:0047BEE3 loc_47BEE3: ; CODE XREF: sub_47BE90+63j
.text:0047BEE3 inc esi
.text:0047BEE4 mov ecx, esi
.text:0047BEE6 call sub_474D60
.text:0047BEEB lea edi, [edi+eax+1]
.text:0047BEEF add esi, eax
.text:0047BEF1 cmp edi, ebx
.text:0047BEF3 jl short loc_47BEE3
.text:0047BEF5
.text:0047BEF5 loc_47BEF5: ; CODE XREF: sub_47BE90+51j
.text:0047BEF5 mov edx, [ebp+0Ch]
.text:0047BEF8 mov ecx, [ebp+8]
.text:0047BEFB add edx, ecx
.text:0047BEFD cmp esi, edx
.text:0047BEFF jb short loc_47BECA
.text:0047BF01 mov edi, [esp+1Ch+var_8]
.text:0047BF05
从汇编代码里在 0047BEE6 call sub_474D60 返回值里如果是-1
那么会陷入死循环,星际就出现卡死现象了.
解决办法我们可以在0047BEE6 里改成跳到我们修改的地方,不给它返回-1就行了
具体代码如下
DWORD offsetAntiSaveRep = 0x0047BEE6 //要修改的地方
__fastcall signed int MyChangeAntiSaveRep(DWORD a)
{
DWORD ret;
__asm
{
mov ecx,a //原函数的参数
mov eax,dwSaveAntiSaveRep; //保存原函数地址
add eax,5 //call 后面要加5个字节
call eax //调用原函数
mov ret,eax //保存返回值
}
if( ret==-1 ) //如果是是-1 就给它为0
ret=0;
return ret;
}
//修改
void ChangeAntiSaveRep()
{
DWORD dwNew***, dwOld***;
dwNew*** = PAGE_READWRITE;
VirtualProtect((LPVOID)offsetAntiSaveRep, 6, dwNew***, &dwOld***);
__asm
{
pushad
mov eax,[offsetAntiSaveRep]
mov edx,offset MyChangeAntiSaveRep
sub edx,eax
sub edx,5 //计算出MyChangeAntiSaveRep的偏移地址
mov ebx,[eax+1]
add ebx,eax
mov dwSaveAntiSaveRep,ebx //先保存原函数的偏移地址
mov [eax+1],edx //然后把原地址改成我们函数的地址 就变成call MyChangeAntiSaveRep
popad
}
VirtualProtect((LPVOID)offsetAntiSaveRep, 6, dwOld***, &dwNew***);
}
下载地址
http://bbs.pediy.com/showthread.php?t=94553
作者:
GSF_QQ
时间:
2009-8-7 11:54
好牛X啊同志
作者:
tgpxyx
时间:
2009-8-7 11:56
转自前VCHELP 论坛 冷星客 朋友
作者:
Springsun
时间:
2009-8-7 11:57
可以贴出来么,我没有ID,下载不了。
如果这个是广告贴,就当我前面没说。
作者:
[JXSA].Zerglin
时间:
2009-8-7 11:57
看不懂啊。
作者:
TM.MaRine.Z
时间:
2009-8-7 11:59
1.14以后修复了。
作者:
tgpxyx
时间:
2009-8-7 12:02
我冷老大还是很牛逼的 做游戏开发 外号PKLANG
作者:
artofsexy
时间:
2009-8-7 13:32
提示:
作者被禁止或删除 内容自动屏蔽
作者:
嗯哪
时间:
2009-8-7 13:35
SB520更新到1.74了?
我还在用1.6呢,赶紧换
作者:
new111
时间:
2009-8-7 13:39
这么麻烦啊 还是然他卡死算了
作者:
Aphrodite
时间:
2009-8-7 13:58
1.16???
作者:
黑晶晶
时间:
2009-8-7 15:24
还是不会,我看不懂
作者:
FS_AnewTry
时间:
2009-8-7 16:32
这个。。。。
能简单说下怎么弄,然后别人无法卡死你或者存死你吗?
作者:
tgpxyx
时间:
2009-8-7 16:55
居然加分了 饿
作者:
nomm
时间:
2009-8-7 17:09
。。。那个显apm的读数 我一直按1 2 自己往上加 加到无穷大
作者:
毛片小王子
时间:
2009-8-7 18:21
提示:
作者被禁止或删除 内容自动屏蔽
作者:
毛片小王子
时间:
2009-8-7 18:22
提示:
作者被禁止或删除 内容自动屏蔽
作者:
毛片小王子
时间:
2009-8-7 20:34
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 八达网 (https://www.8-da.com/)
Powered by Discuz! X2.5