首页
社区
课程
招聘
在线游戏刀剑代码分析0.9567版(意在提醒搜狐加强国产游戏的保护机制)[原创]
发表于: 2006-7-9 23:38 7382

在线游戏刀剑代码分析0.9567版(意在提醒搜狐加强国产游戏的保护机制)[原创]

2006-7-9 23:38
7382
1.数据包的截获:
  1)数据包中发送人物动作的描述是关键的14(BYTE),其中后6个和前8个进行不同的加密运算(好象是2个CALL,不记得了,半年前的事了),后6个字节有经过3次加密运算,具体等下讲。
  2)截获和分析数据包很简单,游戏没加壳,至少这个版本是这样,用wpe收集些封包发现人物移动的封包后,自己做了一个hook类型的程序封包监视器,代码很简单,主要过滤掉不必要的封包留下正确的封包,然后bpx sendto(用的是这个协议拉),得到sendto的buffer,这里调试器会跳出来很多次,下个条件if(ecx==正确的封包的buffer)就可以了,然后在游戏中下断:bpmb xxxxxxx(buffer的地址 R)就可以来到一个CALL中具体没记住,按F12 出来CALL的后面,在这个CALL上下断,按F5,晕,狂跳,好在我自己想了个技巧,虽然是苯方法,当时有时很管用:就是在重新刚才的步骤,来到这个CALL,在运行(或按F12)到RET,在下断,还是老跳,怎么办?多试几次.......
    呵呵成功了,现在只有在人物跑动的时候才跳了,那说明什么?呵呵....
我们离目标近了。
    继续跟,发现是在另一个CALL中改的(填入)发送数据buffer内容,来到这个CALL中,RET,记下地址( 备不时之需(跟丢时) ),看看数据来源的buffer,晕,传说中的天书,没什么头绪(加了密了嘛,呵呵...)
    用刚才的方法跟这个buffer,跟不下去了,很多的岔路。另开明路吧,用FPE查到任务的坐标值,bpmb xxxxxx(坐标地址),调试器跳出来,按‘F10’跟.......咦?好熟悉的代码,刚才来过,记一下先:538dc8(这里我本子里记有呵呵。。。),回到程序,点下鼠标,让人物走两步,一点调试器跳出,马上下bpx sendto(目的看坐标改变后什么时候sendto以找到关键的CALL),走了很长一段,一直在一个大的循环里,循环了2次后,第3次,来到5289D7后sendto断点立即跳出,表明就是这个CALL了,记下8个寄存器的值,和地址,回游戏后在同样的来到这里,发现push ecx的值可疑,d ecx,呵呵不就是sendto的buffer了吗?一看记下数据,回到游戏(此时我的封包监视器开着)看下封包,和刚才的buffer一样,恩,加密在走过来的这中间完成了,找到希望了
   困了,下次在讲,讲得比较乱,毕竟是全凭记忆的
   

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呼~~~接着说;前面写得比较乱,不过在这里主要写方法跟代码说不说了,看到别人把跟的汇编也贴出来,好像没什么用,看完了后还是只能在中文上受益,呵呵...(可能是我太愚笨了 :) )
    言归正转,哦!讲到哪了?昏S,
    恩,前面讲的比较乱不过关健是要找到那个大循环啦,小女子眼力不好最恨别人用多嵌套循环来防cracker了 :) ,我们来看现在已经知道坐标的值是在循环里加的密,从循环的开头接着跟,下断bpx xxxx(坐标值),和bpx Sendto do"d esi(buffer)"按F10,凡遇到call就希望sendto会跳出来,跟了20分钟终于跳出来了,呵呵...难怪人家讲国产软件好跟,记下此Call的地址,清除所有断点,下断此Call并bd它先,回到游戏找个没人的地方,be *,点鼠标让人物走两步,一点就跳出来了,按F8跟进发现有1个call用的参数是坐标的地址,不管它按F10,奇怪坐标地址里的数据没有改变,再看看这个call的另一个指针参数,内容变化了,估记是把坐标加密后存在这个地址里了,这个call看起来是这个样子:fuc(char*,char*,char*),另一个char*是密钥(每次加完密会变化下次再用),按F5再对比加密后的数据和发送的包一看,根本不一样,说明这串数据还会再加密,用同样的方法来到这里,发现下个call也需要这串数据,又是一个加密工厂,密钥是刚才密钥的后6位,这样一路跟下去看到数据被加密了3次还扩大了8个字节,8+6=14,后面又加入了8个字节,一着这8个字节正是人物移动的封包的前8个,至此所有的数据已经和封包的一致了,相同的动作封包是不一样的,因为密钥在每次加密后都不同,至于服务端是不是也用同样的方法解包不想深究因为这时我们可以模拟客户端发包了,剩下的只是研究放原始坐标的buffer在人物打怪或干别的时在干什么了,这里不想公布这些代码,呵呵.
    好象写完了,哦还有怎么模拟发包留在第2点写吧,不然就不知道该写什么了.
    总结一下怎么防我这等菜鸟破自己的软件吧.
    首先,至少要加个壳,加壳程序自已写,不用太复杂因为市面上的壳已经被干得差不多了,加壳的重点放到隐入口点上,进入入口点不要在程序的末端,用个jnz跳到前面再运行些垃圾Call左跳右跳...都用条件跳转!
    其次,用点自检查校验和技术动态SMC,最重要的是要检测调试器了,不要用int 1和int 3这些众所周知的方法检查,我不讲了,可以用多种检查甚至可以用注册表检查,还可以用SHE,关健是多路多线程检查,检查出来干万不要出提示框!只要把结果加密后发往服务端,再由服务端断开连接(在一定的时间后,断开的时间由服务瑞控制)!
    最后就是API的调用要在壳解压后由解压的代码用SHE获得API地址(病毒呵呵...)存下API的地址,用异常中断来掉调用或用call xxxx(eax+xx)和jmp 存放有此地址的call来调用!
    下班了,我用PDA写的这篇,累...下次再说吧,不过要看跟贴的人数来定了...呵呵
2006-7-10 11:51
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
晕,居然没人回贴,看来是篇垃圾文章。惭愧中~~~~~~~~~~~~~~~~~~
2006-7-10 11:53
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
4
支持一下。
主要是你这样写看起来比较乱,能整理一下可能要好一点。
2006-7-10 12:29
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好下次改正,谢谢你的支持
2006-7-10 12:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
upm
6
支持搂主继续发!

大概很多人没太仔细看贴,偶发2个潜力点:

小女子眼力不好
像UPX这样的垃圾壳现在居然还有人用还是大公司,岂不让老外笑掉牙了?
2006-7-10 12:39
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
欢迎来这个群聊天:25933503(今天最后一个贴了)
2006-7-10 12:52
0
雪    币: 7309
活跃值: (3778)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
最初由 upm 发布
支持搂主继续发!

大概很多人没太仔细看贴,偶发2个潜力点:

小女子眼力不好
像UPX这样的垃圾壳现在居然还有人用还是大公司,岂不让老外笑掉牙了?


偶觉得以壳来判断有点偏激,魔兽世界根本不加壳,你能说魔兽世界垃圾嘛?
2006-7-10 15:11
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
9
怎么能说UPX是垃圾壳?
不要开玩笑啊
2006-7-10 16:33
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
10
很少能见到CrackGirl的,支持一下~~~

我也发现一个“潜力点”:

下班了,我用PDA写的这篇,累...

用PDA写文章那是在哪调试的啊?不会全部都是凭记忆力写的吧?偶对楼主的记忆力有如涛涛江水延绵不绝……
2006-7-10 19:23
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
全凭记忆和2张笔记纸,我是从壳和调试程序中判断的,魔兽没调过,至于UPX拉不垃圾,是个人的观点啦
2006-7-10 19:41
0
雪    币: 13617
活跃值: (4408)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
12
最初由 一民 发布
全凭记忆和2张笔记纸,至于UPX拉不垃圾,是个人的观点啦,你要认为它不错也可以多用用,方便他人哦

一个能存活10年的壳怎么可能垃圾...
2006-7-10 19:47
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
就是因为它存活了10年才垃圾啊
2006-7-10 19:49
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
14
从加壳方面来说UPX确实是比较垃圾的,

但UPX是一个EXE压缩程序呀,高压缩率和免费(不知道是不是免费的?)才是其存活10年的原因啊,呵呵
2006-7-10 20:15
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
恩,我知道,但是我是从cracker的角度思考的结论
2006-7-10 20:47
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我把关于upx的内容改过了,谢谢大家的提醒
2006-7-10 21:23
0
雪    币: 436
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主的精神让我佩服!!没想到你对游戏的辅助程序这样了解!我看了论坛的精华几次了!!
都还是有些看不懂!!!
2006-7-10 23:31
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
小女子眼力不好最恨别人用多嵌套循环来防cracker了 :)
呃句我最喜?了,其他的就
2006-7-11 13:01
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
最初由 upm 发布
支持搂主继续发!

大概很多人没太仔细看贴,偶发2个潜力点:

小女子眼力不好
........


垃圾壳!~

有什么好笑的?什么是垃圾壳?你先搞清楚壳的作用吧!~
2006-7-11 16:20
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我已经认识到错误了,并且改过来了,谢谢,我是新手,很多地方都是自己摸的,有欠妥当,看了别人的文章佩服的不得了
2006-7-11 21:57
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主!好像贴子没有头唉
2006-7-12 16:44
0
游客
登录 | 注册 方可回帖
返回
//