[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

Kengwang 1

二改说明

作者在此给坛友道个歉,当时撰写时确实时间没多少,赶着上课,所以质量不高,所以来一次二次更改!希望这一次的可以让更多人理解.也希望大家有建议也可以提出,看到后会回复.

20190426 25:35:18 下暴雨了,明天继续

20190427 08:50:29 继续更新!

问&答

因为有很多坛友都在问一些问题,就在这里回答了吧.

Q1: 请问破解的软件是什么,可以发一下吗

A1: Dnspy 建议到爱盘上下载!

直链 Dnspy爱盘链接

Q2:破解的是电脑版还是手机版

A2:电脑版,手机版的话安卓可以解包后编辑Assembly-CSharp.dll 应该是差不多的方法吧

安卓的这个文件可能在assets/bin/Data/Managed/Assembly-CSharp.dll

思路差不多,毕竟一个人写出来的

修改内容

这个星期和aaaaaaccd交流了一下,发现了一些新的破解方法,也在他的说下发现了一些没有破解到的地方

  • 超级武器研究&建造时间√
  • 成就全解锁√
  • 攻击&防御的冷却√
  • 有一个国家没有解锁(哈萨克斯坦)√
  • 其他国家的速度也很快!
  • 自动防御有时会有问题(自动防御其实可以不需要,研究就行了)

二改之后会 修改一下之前的思路,然后修改

前言

第一次在52破解发帖,也不知道发到哪个区,干脆发到脱壳破解区吧.

核弹先发制人这款游戏还是aaaaaaccd推荐的,他说想找一个破解教程,52上逛了一圈,好像还没有,就自己发个坑吧......

简介游戏

这款游戏是一个即时性战略游戏,你有几个操作:

  1. 攻击
  2. 防御
  3. 拓宽领土
  4. 研究新武器/新技能

每一个都需要时间,时间就是这个游戏中的金钱......

emm,怎么说呢......下载游戏了就知道了!!

确定方向

首先我们要破解的话,要确定好破解的方向.目前我们就讲讲一下几个吧

  1. 国家全解锁
  2. 自动防御默认开启
  3. 无建造时间(这个稍稍有点困难)
  4. (未完待续)

开场分析,寻找破解软件

这个是用的Unity写的,而且还是用的Mono打包(嘿嘿),找到 .\FirstStikeFinalHour_Data\Managed\Assembly-CSharp.dll  抱着试一试的态度打开Dnspy,一拖......

[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

这下就用这Dnspy搞事情吧 /坏笑

国家全解锁

普通国家

首先,我们看得到,开始是只有美国是解锁的,中国是没有解锁的.我们就来解锁吧.

这个比较简单,字符搜索一下就ok了.

[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

可以看到,这边有一个 UnlockManager 这个类,肯定就是他了!双击点进去.在这个UnlockManager里面乱翻,得到一个方法 IsAllianceUnlocked 嗯,我们来看一看这个的代码

[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

他switch国家名称(姑且叫名称吧,其实是另一种数据类型),然后返回那个国家解锁否.emm,我们看看,这个方法的返回值是一个布尔值,而Default是false,那么我们就让他返回True吧! 点击右键->编辑方法

方法内全部内容删掉,只留下return true; 然后再编译

成果图:

[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

哈萨克斯坦

谷歌翻译 哈萨克斯坦=>Kazakhstan

Dnspy寻找一下呗,还是在UnlockMananger里面

有一个GrantAccessToKazahstan

也不知道是干什么的,好像是解锁哈萨克斯坦的,这个怎么改呢,我们分析一下代码

public void GrantAccessToKazahstan()
        {
                if (!this.unlockedKazakhstan)
                {
                        this.unlockedKazakhstan = true;
                        this.SaveState();
                }
        }

似乎是说假如说没有解锁就解锁,emm,那我们就把它放到LoadState语句吧

public void LoadState()
        {
                this.GrantAccessToKazahstan();
                   .......
        .......
        }

嘿嘿,既然到这里找到了UnlockManager,下面一个方法不就是IsSuperWeaponUnlocked

解锁成就

还是在这个UnlockManager里面

CheckGoalFinish函数全部返回Ture ,像国家一样

解锁超级武器

仍然这样吧,全部返回True,运行一下看看

[二改]FirstStikeFinalHour(核弹先发制人)破解教程(分析)

嗯,已经全部弄好了呢!,解锁的话就在UnlockManager还有什么别的解锁需求可以自己改哦!

无等待时间

防御&攻击无冷却

还在研究,下个星期和aaaaaaccd一起研究一下!

可能是这样

NationModel里面的RequestRocketLaunch函数

if (flag)
                        {
                                this._numAttacksOverall++;
                                this.CurrentState = NationState.States.cooldown;
                                this.view.WaitAfterLaunch(agent, 30f);
                        }

把他注释后成为

if (flag)
                        {
                                this._numAttacksOverall++;
                                //this.CurrentState = NationState.States.cooldown;
                                //this.view.WaitAfterLaunch(agent, 30f);
                        }

RequestInterceptorLaunch也是注释掉这样的语句

但是这样的话,他的武器显示不会更新,所以我们就加一个

this.UpdateWeaponBar();

emm,就加载之前注释的地方吧

建造无时间

我们就着简单的来,搜寻build,结果搜索结果一堆,那干脆搜索ICBM吧.

忽然发现了onBuildICBM,点进去一路追查,走到了BuildRocket

里面就是了!

我们把this.CurrentState = NationState.States.building;可以注释掉,让他认为这个还没有正在建造

然后发现一个更神奇的 this.arsenal.TotalRocketCapacity

嗯,追踪过去,让他返回10(最多建造10个)合理更改,免得游戏炸掉哦!

↑↑↑↑这个可能导致游戏崩溃,不建议修改!

其实在另一个BuildRocketSub里面还有东西!追踪到 GetTimeToBuildRocket 嗯,这个就是建造时间

我们直接让他返回0(似乎返回的试float,dnspy会自动加上f)

嘿嘿,这里好像都是和时间有关,看见GetTimeToXX全部返回0吧!

就这样吧!

超级武器研究&建造无冷却

搜索一下Super time ,一路跟踪到SuperWeaponManagerModel下面的GetProgressTime 这个应该就是返回的吧,我们直接让他返回0f

不过这样就有问题了,试试0.1f

0.1f可以通过,总之这个地方不能是0,似乎要执行一个时间减然后才可以解锁Button

扫描无冷却

还在寻找突破口!

自动防御

emm,直接说吧

寻找auto,看到个autoDefendeEnabled,我们往上翻,看到AutoDefenseEnabled函数里面设置了他的值,改成返回true

isfull也顺便改了,false

成就全解锁

UnlockManager改CheckGoalFinish改成

public bool CheckGoalFinish(int mission)
        {
                return true;
        }

变态版改变

这些建议不改,影响游戏体验,而且其他国家也会一样的执行修改后的操作

地区不被毁灭

NationModel里面的ReceiveDamage函数

if(this._health.Health <= 0){
    ...
}

改为

if(false){
...
}

LooseNation函数里面全部注释掉,OnBurn函数也全部注释掉

小结

这次可能有点乱,有问题,或者很多方面做得不好,这只是提供了一个思路,也希望52的坛友们能补充和尝试!

©Kengwang

假如说aaaaaaccd看到了的话:)

当前破解版版本链接(第二版): 链接: https://pan.baidu.com/s/1CQ4bhfFkAOI-ClJYGiL0Og 提取码: wc5j

发表评论 取消回复
您必须 [登录] 才能发表评论!
  1. Kengwang
    Kengwang 站长

    WP真的好,直接复制都可以格式自动换

分享
微信
微博
QQ