弓箭手大作战1.0.50 无限技能下载 和分析实现过程。
附:成品下载地址下载地址: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个技能选择了
// SkillManager
public void SkillFirstClick(GameObject obj)
{
if (!Singleton<GameValues>.Instance.canChooseSkill)
{
return;
}
this.SkillObject.SetActive(false);
this.switchSkillType(this.skillShow);
Singleton<EnemyManager>.Instance.isShowingMachine = false;
Singleton<GuideManager>.Instance.removeChooseSkillLabel();
}
这是第一个技能点击的处理方法;
为了实现无限技能,我们可以在点击以后,重新再现实技能选择框;也就是在最后面加入一行代码 showSkill();
修改完成后重新打包签名,运行;完美实现无限技能;
总结:
最开始是用安卓反编译,修改在正编译,失败。 后来直接用winrar 打开解压Assembly-CSharp.dll修改,在覆盖apk包,成功(别忘记签名了哦)。
这个游戏为什么可以直接在本地修改无限技能。因为我分析了他的socket 封包协议,知道客户端做了什么。服务端做了什么。 感觉手游协议脱机分析也挺简单的。而且即使战略游戏是实现也不是很复杂。
等我以后有空了在写一些先关的帖子吧。
修改过程太过无脑,我第一次搞unity3d 自己都被自己吓住了。
notaperson 发表于 2017-9-15 15:24
1.死亡一次就不能升级/2.不死亡也会掉线/3.不掉线也会卡死!鉴定完毕!
太真实了,下过了 哎,正在努力学安卓中 没玩明白游戏咋玩 帅气的大牛 分析,,协议?厉害厉害 感谢楼主分享
分析,,协议?厉害厉害 感谢楼主分享
一会试试