浅尝Android手游破解

Android手游破解

Posted by danner on December 20, 2015

动手

闲来无事拿款手游决定练练手;本次使用的环境是.Net Reflector & Reflexil。unity3d手游的运行顺序是libmono.so通过mono_image_open_from_data_with_name函数加载assets\bin\Data\Managed\Assembly-CSharp.dll,手游的逻辑代码和资源都是在Assembly-CSharp.dll

本次不考虑Assembly-CSharp.dll的加密情况,有兴趣可以看参考资料(momo代码在加载Assembly-CSharp前先解密)。将Assembly-CSharp.dll直接拉入Reflector开始分析,反编译出来直接是C#代码。

根据自己修改的需求找相关的逻辑代码,确认好修改地方后点击”Tools”->”Reflexil” 打开Reflexil 准备修改。

Reflexil 显示的是IL中间语言类似Android 反编译后的smali代码。选中代码右键编辑

IL不懂怎么办?幸运的事Reflexil还提供了基于C#修改的方法:右键选中Replace all with code 调出C# 编辑窗口

代码修改之后,选中修改过的DLL,利用Reflexil 直接保存即可。需要注意,Reflexil修改过的代码不能直接在Reflector显示,需要保存后再打开才能显示修改过的代码。

本文仅作自己笔记,若侵删。

参考资料:

1、unity3d手游破解

2、关于 .Net 逆向的那些工具:反编译篇