首页
社区
课程
招聘
[旧帖] [原创]星际争霸存录像卡死原理和解决办法 0.00雪花
发表于: 2009-7-29 10:43 12713

[旧帖] [原创]星际争霸存录像卡死原理和解决办法 0.00雪花

2009-7-29 10:43
12713
现在有星际作弊外挂为了作弊现象不给看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***);       

}

以上代码写dll里,然后注入到星际里就可以修改了

完善的程序可以用下载我自己写的星际争霸反作弊外挂程序

PKLANG星际争霸反作弊

可以检测以下作弊行为:
1:MapHack 开全图作弊.
2:TrainHack 人族爆基地或者兵营时增加35钱和气,虫族地堡取消变农民和钱.
3:MorphHack 农民变飞龙.
4:ScaraHack 人族刷3万钱.
5:VisionHack 关闭视野建重叠建筑.
6:FreeHack 人族或神族免费造农民或兵.
7.SuicideHack 自杀和自杀农民刷钱.
8.MiningHack 农民任意地方采矿.
9.NuclearHack 远程原子弹.

APM信息显示和时间信息显示

可以防存rep死机,防游戏卡死状态等
可以对作弊者实施游戏卡死功能(回车键后输入命令:die 对方的ID序号
如输入"die 2"就是让序号为2的玩家卡死,序号在游戏左上角有显示)

可以对作弊者实施刷屏功能,如果不能用卡死对方,就有这个功能吧!(方法为回车输入命令:fuck 对方ID序号,就可以猛发垃圾信息给他了!再输入命令:stop终止发信息!)

修改游戏为没建筑单位时不用挨被迫退出游戏,依然可以OB(要点确定)

彩色ID修改!简单方便修改,一次修改永久使用!

支持1.08A,1.08B和1.13E,1.13F等星际争霸版本,如有不支持请下载相关补丁
支持在QQ平台,浩方平台,VS平台等对战平台使用
如有不能使用,可能游戏或者平台升级,请加入星际反作弊群:44322878 QQ号:27760071 下载最新版本

如有什么问题或者建议请告诉我,让们一起把功能完善!

下载
sf_2009729102231.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 202
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
后面的内容总是发不出来,卡半天就显示该网页无法显示!....真是无语
2009-7-29 10:46
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有玩过星际,不是很清楚
2009-7-29 10:50
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了非常有用

收藏了
2009-7-29 14:47
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是不是发帖也陷入了0x0C卡死

研究一下
2009-7-29 14:50
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
是的是的!
作弊无法存录像的。
我绝不会以为是死机,因为我见过很多作弊的,我直接就知道他作弊了。
其实打着打着就知道有没有作弊了,看看他的操作只会,他的兵数量,占了几片矿。。。
很多蛛丝马迹的,碰到作弊的能虐的继续虐,打不过的直接用process explorer把星际进程挂起,看谁戏弄说?!哈哈
2009-7-29 19:20
0
雪    币: 102
活跃值: (50)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
楼主水平真高,应该用汇编写个1.16的作弊器,现在貌似还没有1.16加钱的作弊器
2009-7-29 20:53
0
雪    币: 202
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
现在玩星际的变少多了~
2009-8-1 21:43
0
雪    币: 480
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
人家在说反作弊,你却让人家写作弊器,楼主还不直接让你给气吐血。
2009-8-2 06:46
0
雪    币: 20
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢啊。我经常玩星际,也经常遇到无耻的作弊者。
本来是想分析下它的水平为什么这么高,一REP存盘就死机,只有退出进程。
原来的老机器还退不出,只有重启。再次谢谢。!!
2009-8-2 15:37
0
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
爽啊,用了你的PKLANG星际争霸反作弊,
遇到zuo bi的,就die it or fuck it.爽。
谢谢,为我们弱势群体找到反抗的不公平竞技的武器!
2009-8-10 00:16
0
雪    币: 200
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
解释的很到位,学到了很有用的知识,谢了。
2009-8-10 15:12
0
游客
登录 | 注册 方可回帖
返回
//