本人虽然是个手残,却非常喜欢尝试各种音游,即使被虐到爆炸也停不下来。
最近看上一款某渊的音游,它的判定线移动打拍的玩法挺不错的,于是乎又手贱买了,然后被虐到体无完肤。
本着至少要给自己爽一下的原则,就准备对它下毒手了。
首先拆一下压缩包,发现是unity引擎,而且还是Assembly-CSharp.dll的方式,感觉也许会轻松不少(并不是
拖出来,上dnSpy,理所当然地出错。
拖进UltraEditor,发现可以明显地看出PE文件结构,就是有点怪而已。所以这应该不是那种简单地把整个dll文件套个加密算法,然后加载的时候解密那种方法。
大概是加密了关键部分,然后在解析的时候再解密吧。
试一下能不能Dump,ida附加,结果游戏直接闪退,估计是有反调试之类的,咱一个逆向萌新,对安卓方面的反调和反反调完全不懂,瞬间懵逼。
于是咱打算换一个歪门邪道,用GG修改器的Dump功能,这个游戏似乎没有针对GG修改器做什么。
Dump下整个游戏进程,然后在里面搜索DLL,把文件提取出来,但是发现,其他什么UnityEngine什么的都有,唯独缺了Assembly-CSharp.dll。
抱着不祥的预感在内存中搜索6D 7A 90 00 03 00 00 00 04,发现dll文件本身在内存中没有半点变化……
估计是魔改mono文件,然后用自己的一套来解析的吧……
拖libmono.so到ida里面,结果发现libmono.so也被搞了……
看一下Hex,被大量无意义字节填充了,估计是在载入so的时候再将原函数填回去……
还真是到处搞事情啊,不过so方面不比dll,到了内存里面你总得把这些函数给我还回来吧。
还是上GG(真好用),把libmono.so给Dump出来,记得选范围时要完整,宁可范围搞大一点,也别少选
修复一下Dump出来的文件,可以参考这里:内存dump 获得基于Unity3d的游戏相关代码
再拖进IDA,现在就没问题了
通过之前的试探,我们大概可以猜测一下dll被加载的过程,首先是原文件读入内存,再通过魔改后的mono使用自己的一套方法来解析文件。
看其他dll都没有事,所以在这个魔改后的mono中应该分开了两种不同的加载方式。
mono加载dll的时候,首先是进 mono_image_open_from_data_with_name这个函数(这个应该就不用细说了),然后走到 do_mono_image_load对PE文件进行分析。
顺着加载过程摸下去,我们还可以找到魔改后同时认可PE和pe的部分
修改这里两处标识后之后,继续尝试读取dll文件,仍旧失败,根据失败原因继续走,发现时dll文件的段头被加密了,在mono中对应部分找到解密方法
段头的每一项都被单独处理,加密过程中密钥会随着改变的一个流加密,有伪代码的情况下还原解密方法没什么难度。
继续读取,发现PE结构解析部分没有问题,但还是出错了,继续往后跟,发现
都被或2了,同时,在这个函数中,还发现了对函数体解密的部分,正好一起搞了
然后,采用这种方法解密函数体后,反编译仍旧出错,排查了好久,发现在使用完解密完header和函数体后,它还在mono_method_get_header对函数体每一个字节异或0x30,真是麻烦,到处下坑。
解密完全部函数体,将它拖到dnSpy中,依旧爆炸……
虽然绝大部分函数炸了,但是却还有一些极小的函数可以被正常反编译
看到这里,我大概猜到它做了什么……
它应该是打乱了Opcode表,重构了读取Opcode的方法……
我自己也干过这事……在加密dll的时候打乱Opcode……
没辙,Opcode被打乱,我就只能对照着正常dll加载的函数和魔改版来分析修改后的Opcode表
分析Opcode的函数快两万行,我的电脑配置不够,要是用伪代码的方式一下就直接卡死,只能扣掉F5,一点点看汇编……
花了两个多星期,我才把新的Opcode分析完。它不仅仅打乱顺序,一些相邻的Opcode码,比如ldarg0,ldarg1这些,原版是采用n-ldarg0的方式来一次性分析这一个系列的Opcode,但是魔改版直接将n-ldarg0这个值固定死,然后把这些必须相邻的Opcode也拆开来分析了,给我造成了巨大的麻烦……
还原Opcode之后,再用dnSpy打开
代码被还原成功,可以被直接查看和修改了
②改变PE文件结构。在这个游戏中,它加密了段头部分,除此之外,还可以修改各个值的偏移量,数值等等,如果有那个精力和实力的话,你甚至可以重构mono对PE文件结构的解析部分,自创一个结构
④针对函数的加密。这其实不是什么新鲜玩意了,很久以前就有用hook掉mscorre的方法来加密函数体,在mono中只是实现起来更加方便一点。对函数体加密的话,可以保证使用Dump的方法几乎没啥用,毕竟内存中至始至终都没有出现过被解密的dll文件,攻击者一次最多Dump一个函数……
⑤最后,是最恶心的Opcode替换了。攻击者必须忍受恶心来对一个巨大的函数进行分析,这已经不是技术手段了,这是赤果果的精神攻击!由于在mono中对Opcode分析并没有封装,所以保护者必须对Opcode有一定的了解,否则一不下心就会出错。没有时间精力来了解这个的话,也有一个办法,之前举办过一个比赛,上面就有一个替换Opcode的例子。它对解析Opcode的函数没有更改,只改了Opcode.def文件中的值而已,算是利用了一个小巧合吧。比赛题目链接:Gslab 2017游戏安全技术竞赛
这一次对游戏dll的加密分析到这里就结束了,我也就将Note判定稍微改松了一点,来慰藉我这个手残受伤的心灵……
这个游戏有内购功能,所以为了厂商着想,就不放任何成品以及解密代码了,感兴趣的人可以根据什么的过程自行走一便,知道答案的解题过程不会很难……除了还原Opcode部分(不能让我一个人恶心!!!)
在网上查dll加密,铺天盖地的是XXTEA加密文件再在读取时解密,毫无新意,保护力度为5,。代码保护这种东西,怎么能用别人的成品?那不就相当于所有门用同一把锁,那把锁的钥匙都还满大街人手一份。
所以,保护厂商在做代码保护时,可以借鉴思路,但是绝对不能套用!否则就是对自己产品的不负责!
希望这里写的一点浅薄的东西能够给没有技术大牛支持的厂商们带来一点点思路。
– End –
戳 立即购买!
热门文章阅读
1、GandCrab V2.0 详细分析
2、SSDT-HOOK
4、看雪众测平台第15期,新项目已上线!
官方微博:看雪安全
内置修改器,修改器包含以下功能
1、增加1000金币
2、清楚已占的人口
3、无限钻石
4、强制升级
5、训练无冷却
6、免费开箱子
7、无敌模式
几年前,“吃鸡”玩法火爆大江南北的时候,《绝地求生》从一众游戏中脱颖而出。巅峰时期在线人数高达326万,但不过两三年,便因为玩法单一、外挂泛滥等原因而式微。
身为一款收费的FPS类生存游戏,外挂带来的影响是天翻地覆的,空前的热度让《绝地求生》被众多外挂作者盯上,而蓝洞薄弱的防护机制在他们面前如螳臂当车。
在游戏中,使用外挂的玩家被戏称为“神仙”,因为他们飞天、遁地、穿墙、透视、百里之外取人首级,几乎是无所不能。
为了保障流畅度,像射击、赛车、格斗、动作冒险等对延迟需求较高的游戏,都会把生命、疲劳、攻击等数值计算放在玩家设备上,这就给修改器和外挂提供了很大滋生空间。
被修改器困扰的不止是端游,还有手游。海外畅销手游《第七史诗》曾上线过一个高难PVE副本,许多重度氪金玩家都在开荒路上被虐的体无完肤。
而一位低等级的玩家却率先登顶排行榜,伴随着越来越多低等级账号通关进榜,引爆了愤怒且困惑的玩家。
随后,首位通关的玩家放出了自己通关的秘诀——修改器,并录制了其使用修改器通关的视频。
最终,此事件在官方的一系列“骚操作”下,落得个满地鸡毛,游戏人气也大幅下滑。
除此之外修改器还具有反检测的功能,用来防止被游戏检测到,防护难度不言而喻。
针对外挂与修改器,FairGuard团队潜心研发了行为检测方法。不同于目前市面其他游戏保护产品使用的特征检测,无需特征即可检测,一旦发现将立即闪退,修改器无论怎样都躲不过被检测的命运,被绕过的可能性几乎近于零。
gg游戏修改器中文版下载6,GG游戏修改器中文版下载6:改变游戏体验的必备工具 大小:8.42MB1,351人安装 GG游戏修改器中文版下载6是一款改变游戏体验的必备工具。为广大游戏玩家提供许多可……
下载最新GG修改器脚本强制结束,最新GG修改器脚本强制结束 强大的游戏辅助工具 大小:8.74MB1,357人安装 如果你是一位游戏爱好者,那么你一定会遇到一些游戏难度特别大的关卡或者BOSS,为了……
下载虚拟空间GG修改器,gg修改器用的虚拟空间 大小:18.06MB2,407人安装 9.4 gg修改器网站空间免root下载是一款系统软件种类的手机软件,在系统中有很多的特……
下载不root可以用gg修改器_如何不用root使用GG修改器 大小:16.90MB2,151人安装 大家好,今天小编为大家分享关于不root可以用gg修改器_如何不用root使用GG修改器的……
下载饥饿鲨世界gg修改器中文版,饥饿鲨世界gg修改器中文版让游戏更加有趣 大小:18.09MB1,515人安装 对于大多数玩家来说,玩游戏的乐趣不仅仅是体验游戏本身,更是通过一些辅助工具来提……
下载gg游戏修改器中文版_GG游戏修改器最新版 大小:9.61MB2,266人安装 大家好,今天小编为大家分享关于gg游戏修改器中文版_GG游戏修改器最新版的内容,赶……
下载gg游戏修改器怎么修改皮肤属性,GG游戏修改器:一款神奇的工具 大小:16.11MB1,502人安装 随着电子竞技的不断兴盛,游戏玩家也开始追求更加个性化的游戏体验。其中,修改游戏……
下载gg修改器中文官网地址链接,gg修改器中文官网地址 高效游戏辅助工具 大小:7.89MB1,118人安装 喜欢玩游戏的小伙伴们有福了!如果你希望游戏变得更加有趣,想要自己的英雄不那么容……
下载GG修改器root框架,GG修改器免root框架 大小:3.06MB2,463人安装 7. GG免root框架是GG修改的一个免root版本,大家可以通过这个版本完成想要的数据修……
下载gg游戏助手修改器中文_gg中文版修改器 大小:10.27MB2,310人安装 大家好,今天小编为大家分享关于gg游戏助手修改器中文_gg中文版修改器的内容,赶快……
下载