unity 发表于 2017-9-7 22:00

弓箭手大作战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

且听风影 发表于 2019-10-23 18:56

notaperson 发表于 2017-9-15 15:24
1.死亡一次就不能升级/2.不死亡也会掉线/3.不掉线也会卡死!鉴定完毕!

太真实了,下过了

尘缘丶 发表于 2017-9-7 22:33

哎,正在努力学安卓中

ljx588 发表于 2017-9-7 22:34

没玩明白游戏咋玩

吾爱装B 发表于 2017-9-7 22:35

liu66434280 发表于 2017-9-8 08:05

帅气的大牛

夏雨微凉 发表于 2017-9-8 08:08

分析,,协议?厉害厉害

微笑男孩 发表于 2017-9-8 08:22

感谢楼主分享

li15103428 发表于 2017-9-8 08:29


分析,,协议?厉害厉害

北海巡洋舰 发表于 2017-9-8 08:32

感谢楼主分享

endzz 发表于 2017-9-8 10:36

一会试试
页: [1] 2 3 4 5
查看完整版本: 弓箭手大作战1.0.50 无限技能下载 和分析实现过程。