某DLsite游戏逆向

1.背景

体验版游戏进行到某一关即显示体验结束,程序自动退出,注意到同样系列正式版与体验版体量相差无几,开始猜测体验版包含正式版所有内容,只是关键逻辑被限制,因此展开后续逆向分析。

2.环境装备

本次实战采用apktool+Il2CppDumper+dnspy+UABEA工具

3.分析过程

3.1.解包apk

用apktool解包apk

	apktool d apk路径 -o 输出文件夹路径

3.2.静态分析&动态调试

查看内部文件,区分是Il2cpp还是Mono,根据不同构建进行相应处理后分析
mono:
找到assets\bin\Data\Managed\Assembly-CSharp.dll文件,用dnspy工具打开,进行静态分析

Il2cpp:
分别找到lib\arm64-v8a\libil2cpp.so文件和assets\bin\Data\Managed\Metadata\global-metadata.dat文件,使用Il2CppDumper工具进行处理得到Assembly-CSharp.dll,dump.cs文件及脚本相关文件。执行命令:

	Il2CppDumper libil2cpp.so文件路径  global-metadata.dat文件路径  输出文件夹路径

在得到Assembly-CSharp.dll文件后,可用dnspy工具进行静态分析,但由于没有方法实现代码,只能看到类,方法名称等信息,因此需要通过Il2CppInspector生成IDA脚本,导入到IDA中使用。打开Il2CppInspector图图形界面,选择libil2cpp.so和global-metadata.dat生成script.py脚本文件。
使用IDA打开Assembly-CSharp.dll文件,加载完成后导入script.py脚本文件即可进行分析。

3.3.修改逻辑

通过搜索相关关键词找到关键逻辑所在,确认关键逻辑后,可进一步进行动态调试分析,实战中未进行此步。通过分析得知关键点在于某一类成员序列化赋值,需要在资源文件中修改其赋值从而进行破解。
使用UABEA工具打开assets文件夹中的资源文件进行查找,然后修改关键值,经典文件为level0~9,data.unity3d文件等。
注意:在打开新版软件中data.unity3d文件时,需要将Il2CppDumper生成的dll文件均拷贝到assets\bin\Data\Managed文件下后进行,否则可能出现错误。

3.4.封包

修改完成后,即可通过apktool进行打包使用了,重新打包的apk需要重新签名才可以正常安装使用,操作顺序为打包-对齐-签名-安装
对齐是为了对齐资源,减少apk体积,提高运行效率,此处需要zipalign,apksigner和keytool 工具。zipalign,apksigner均为 Andorid Build Tools工具,keytool为java JDK自带工具

打包,执行命令:

	apktool b 文件夹路径 -o 名称.apk

对齐,执行命令:

	zipalign -v -p 4 名称.apk 名称_aligned.apk 

生成签名文件,得到my.keystore文件,执行命令:

	keytool -genkey -v -keystore  my.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000

签名,执行命令:

	apksigner sign --ks my.keystore --ks-pass pass:123456 名称_aligned.apk 

完成后即可安装了,到此实战结束

4.实战总结

本实战由于同系列新软件和旧软件采用同一核心代码逻辑,因此新软件在使用Il2CPP构建时,分析过程并未在IDA中进行,IDA分析较难基本上是指令,还需要后续学习,本次算是投机取巧成功,通过对旧版本代码分析得知了软件基本逻辑。

5.尾言

由于涉及资源较为敏感,因此本篇文章中没有展示任何相关图片和操作细节,望诸位海涵,此外,这是我初学者时进行的操作和学习,工具没有问题,对于封包和签名等操作亦可使用工具进行,更方便快捷。
注意!完成此实战需要一定的知识前提,需要了解Unity游戏文件结构和核心所在,该文中虽然已经提及,若要精于逆向技术,还望诸君勉之。此程序关键在于序列化赋值隐藏,逻辑方面静态分析即可完成。

作者:Reshero
来源:Reshero博客
链接:https://blog.reshero.top/%e6%9f%90dlsite%e6%b8%b8%e6%88%8f%e9%80%86%e5%90%91.html/
版 权 声 明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇