附:成品下载地址
下载地址:http://pan.baidu.com/s/1eStizom
第一次分析和修改unity3d游戏,目标游戏在4399下载。
这里说一下 dnSpy 还是不错的,和 jeb 有的一拼。免费开源,比那个收费的好用多了。强烈推荐;
第一步:
下载APK,APk中找到 Assembly-CSharp.dll 利用 dnSpy 打开:
没有任何加密,类名 ,方法名,成员名都被反编译的一清二楚,明码规范合理,这货简直就是C#学习的典范,话说我 java 和 c++ 就是靠分析逆向安卓的dex 和so分析,精通了好多好多;
第二步:
我们怎么找到我们要修改逻辑代码的位置呢?其实这也是修改过程中最大的难点,一般教程中都是用 coin 关键字查找,我可不是这么敢的;
我们先大概的看一下全部的类名,看看有没有一个比较好的切入点。
Skill 技能先关的类还真是不多,我们可以逐个打开看看提的的方法和成员,大致的判断在游戏中先关的功能;
我们在 SkillManager 技能管理类中发现了 SkillFirstClick ... 共3个 这应该是对应游戏中的:
3个技能选择了
[C#] 纯文本查看 复制代码 // SkillManager
public void SkillFirstClick(GameObject obj)
{
if (!Singleton<GameValues>.Instance.canChooseSkill)
{
return;
}
this.SkillObject.SetActive(false);
this.switchSkillType(this.skillShow[0]);
Singleton<EnemyManager>.Instance.isShowingMachine = false;
Singleton<GuideManager>.Instance.removeChooseSkillLabel();
}
这是第一个技能点击的处理方法;
为了实现无限技能,我们可以在点击以后,重新再现实技能选择框;也就是在最后面加入一行代码 showSkill();
修改完成后重新打包签名,运行;完美实现无限技能;
总结:
最开始是用安卓反编译,修改在正编译,失败。 后来直接用winrar 打开解压 Assembly-CSharp.dll 修改,在覆盖apk包,成功(别忘记签名了哦)。
这个游戏为什么可以直接在本地修改无限技能。因为我分析了他的socket 封包协议,知道客户端做了什么。服务端做了什么。 感觉手游协议脱机分析也挺简单的。而且即使战略游戏是实现也不是很复杂。
等我以后有空了在写一些先关的帖子吧。
修改过程太过无脑,我第一次搞unity3d 自己都被自己吓住了。
|