如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 通过动态分析了它的保护方法,通过改源码刷机的方法绕过了它的保护方案(也可通过hook libc.so中的execve函数绕过保护),接下来就可以直接使用GameGuardain这个神奇附加上去进行各种骚操作了。这里主要讲一下如何去从内存中获取Assembly-CSharp.dll 和 Assembly-CSharp-fristpass.dll文件。

某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下, “Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理,有效提高静态分析门槛”。

通过动态分析了它的保护方法,通过改源码刷机的方法绕过了它的保护方案(也可通过hook libc.so中的execve函数绕过保护),接下来就可以直接使用GameGuardain这个神奇附加上去进行各种骚操作了。这里主要讲一下如何去从内存中获取Assembly-CSharp.dll 和 Assembly-CSharp-fristpass.dll文件。

绕过保护后,先启动GameGuardian,再启动相关游戏,在某讯的Logo刚好出现时附加到游戏上,待游戏进入到登录页面时,通过内存搜索值的方式搜索9460301(0x4D 5A 90 00)的十进制表示方式。这也是PE文件Dos头的特征码。搜索步骤和结果如下:

记录下第一个值和最后一个的值,接下来的dump步骤需要(dump时,开始地址尽量比第一个值小,结束地址尽量比最后一个地址大,上下浮动的大小尽量大于游戏中最大的Dll文件所占内存大小)。

等待保存完毕以后就可以从手机上拉取到本地了。获取到文件的结果如下:

接下来可直接使用get_dll_from_bin.exe这个工具直接从所有的bin文件中dump出所有的dll文件。操作后可用dnSpy直接打开所有的dll文件查看是否存在Assembly-CSharp.dll和Assembly-CSharp-fristpass.dll这两个文件。结果下图(本次获取到12个dll 文件):

工具获取到dll后直接使用数字命名,直接通过dnspy打开看看是否有最终的目标dll。

获取到dll如下:

并不存在所需要获取的dll文件。后面经过分析可知这套保护方案把Dos头的前128字节清空了。接下来就需要单个文件进行操作和修复了,使用010editor打开文件,搜索PE头的文件特征(50 45 00 00 4c 01 03 00)。然后通过搜索到的位置往前查看128字节是否被清零,如果是先把正常的pe文件的前128个字节复制,再往搜索到的位置的往前128字节进行粘贴修复即可。如图:

经过反复操作和修复后,再通过get_dll_from_bin.exe操作修复的bin文件即可。

经过操作后获取到如下的Dll:

通过与解包后的资源文件大小相比较,3.dll大小和Assembly-CSharp.dll相同。

12.dll大小和Assembly-CSharp-firstpass.dll相同。

分别将3.dll 和12.dll文件拖入dnspy中,如图所示3.dll是目标文件Assembly-CSharp.dll:

12.dll是Assembly-CSharp-fristpass.dll:

到此,所有目标文件已经获取完毕。

排版有点渣,将就看吧。主要是思路。望大牛轻喷。

最后 我们分享个好用的工具。

使用ipaguard来对程序进行加固

代码加固是进一步保护应用的一种方式,通常通过特定平台来对应用进行加固处理。

这边以ipaguard为例,目前还在免费阶段,想薅羊毛的快快试试。

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性会变得非常差,接着,

到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看

然后导入自己的包就可以了,这里是流水式的走下来,所以只需要导入和导出就可以了,

添加单个文件,选择好刚刚混淆后的包,然后你做的事情就是等,等待上传完--加固完--下载完--已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名,这里可是会用到的,如果不用,则包安装包可能会出现问题

选择导出签名包,选择签名文件,输入密码,然后点击开始导出

 

导出的包是经过混淆,经过加固比较安全的包了

相关文章
|
1月前
|
存储 缓存 监控
|
1月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
195 2
|
9天前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
37 16
|
1月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
1月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第5天】麒麟系统mate-indicators进程占用内存过高问题解决
149 0
|
1月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
49 0
|
2月前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
45 1
|
1月前
|
程序员 Windows
程序员必备文件搜索工具 Everything 带安装包!!! 比windows自带的文件搜索快几百倍!!! 超级好用的文件搜索工具,仅几兆,不占内存,打开即用
文章推荐了程序员必备的文件搜索工具Everything,并提供了安装包下载链接,强调其比Windows自带搜索快且占用内存少。
45 0
|
2月前
|
存储 安全 Linux
将文件映射到内存,像数组一样访问
将文件映射到内存,像数组一样访问
31 0
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
184 6