吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7452|回复: 38
收起左侧

[Android 原创] 箱庭铁道物语-去除广告+修改硬币教程

  [复制链接]
我已经蓝屏 发表于 2020-12-4 08:49
本帖最后由 我已经蓝屏 于 2020-12-4 09:03 编辑

前言

本文为教程,如果只想要安装包请来这里

第一步:下载游戏

第二步:下载工具

第三步:解除广告

针对这个游戏解除广告非常方便,代{过}{滤}理商已经给我们写好了开关,我们只要改几个变量就行

  1. 打开 AndroidKiller,并将 Java 路径配置好,这个我就不写了,不会的可以在论坛里找找

    AndroidKiller打开

    AndroidKiller打开

  1. 点击界面左上角的打开,然后打开游戏,程序会自动对其解包和解析,出现对话框就都选就行,过一会就会到下图的地方。

    AndroidKiller解析

    AndroidKiller解析

  1. 咱先点击程序的入口,然后点击编辑器中间那个查看源码的按钮看看程序入口的源码

    AndroidKiller查看源码

    AndroidKiller查看源码

  1. 在源码中遨游~,向下翻找,找到类似关闭广告所在处

    AndroidKiller源码寻找

    AndroidKiller源码寻找

  1. 最小化源码,在 Smali 文件中搜索这个变量

    AndroidKiller搜索变量

    AndroidKiller搜索变量
    如上图所示,搜索结果有 5 个

    1. 这个是声明静态变量的语句

      .field public static useAD:Z
    2. 这个是我们需要的代码,作用是写入静态变量

      sput-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->useAD:Z
    3. 这个是读取静态变量的语句

      sget-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->useAD:Z
    4. 下面两个都是不相关的东西


  1. 下面我们着重来看看第二条写入静态变量的代码

    sput-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->useAD:Z
    
    # sput-boolean vx, 字段ID
    # 描述:将vx寄存器中的值复制到指定的Bool变量中

  1. 根据描述,我们得知这行代码是将 v2 寄存器中的值赋给 useAD 变量中
    我们再来找找 v2 寄存器里的值
    回到 Smali 文件,向上寻找,找到.prologue,在.prologue下方有 v1 和 v2 的定义

    .prologue
    # 方法开始
    
    const/4 v2, 0x1
    const/4 v1, 0x0
    
    # const/4 vx, lit4
    # 描述:存入4位常量到vx寄存器

    根据注释和源码,我们得知了 v1 是 False,v2 是 True
    现在我们就可以去改那三个变量了


  1. 依次修改三个变量

    AndroidKiller修改Smail代码

    AndroidKiller修改Smail代码
    源代码

    sput-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->useAD:Z
    sput-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->bannerONOFF:Z
    sput-boolean v2, Lkairogame/cn/android/main/UnityPlayerActivity;->splashONOFF:Z

    修改后代码

    sput-boolean v1, Lkairogame/cn/android/main/UnityPlayerActivity;->useAD:Z
    sput-boolean v1, Lkairogame/cn/android/main/UnityPlayerActivity;->bannerONOFF:Z
    sput-boolean v1, Lkairogame/cn/android/main/UnityPlayerActivity;->splashONOFF:Z

    随后 Ctrl+S 保存


  1. 我们现在修改好代码了,下一步来编译回 apk 包
    点击程序上方菜单栏的Android栏目,点第一个编译即可

    AndroidKiller编译输出

    AndroidKiller编译输出

    打包好的文件在工具下方的日志输出中,可以自行打开

  1. 现在我们就成功改好并重新打包好游戏了,接下来可以去安装一下试试看,是不是已经没有广告了
    :)

第四步:清除敏感权限

紧接第三步的第 2 项

  1. 点击工程信息旁边的工程管理器

    AndroidKiller工程管理器

    AndroidKiller工程管理器

  2. 点击左边目录栏AndroidManifest.xml文件

    AndroidManifest

    AndroidManifest

  3. 在右边的编辑栏中找到特殊权限并删除

    AndroidKiller删除权限

    AndroidKiller删除权限

  4. (特)权限解析

    # 访问网络,运行程序访问网络,因为本游戏用不到网络,所以想删除的话也可以
    android.permission.INTERNET
    
    # 查看网络状态,比如是否连接到网络,或者是否正在使用蜂窝网之类的,也可以删
    android.permission.ACCESS_NETWORK_STATE
    
    # 查看WiFi状态,允许了程序能够拿到SSID,可以删
    android.permission.ACCESS_WIFI_STATE
    
    # 读取手机状态和身份,运行了程序可以拿到手机号和IMEI、IMSI,同时具备监听电话能力,获取呼入呼出通话中的状态,建议删除
    android.permission.READ_PHONE_STATE
    
    # 获取大概位置,通过蜂窝基站获取手机的大概位置,建议删除
    android.permission.ACCESS_COARSE_LOCATION
    
    # 获取外部存储权限,建议保留
    android.permission.WRITE_EXTERNAL_STORAGE
    
    # 允许程序振动,建议保留
    android.permission.VIBRATE
  5. 编译然后测试即可,详细可以查看上一章节的第 7 条目


第五步:修改硬币

紧接第四步的第 3 项

  1. 右击assets\bin\Data\Managed\Assembly-CSharp.dll文件,选择打开方式->打开文件路径

    AndroidKiller打开Dll目录

    AndroidKiller打开Dll目录
  2. 打开dnspy并用他打开Assembly-CSharp.dll文件

    dnspy打开Dll

    dnspy打开Dll
  3. 由于我们要修改的是加硬币,所以我们搜索coin(搜索的快捷键是 Ctrl+Shift+K)

    dnspy搜索coin

    dnspy搜索coin
  4. 向下翻,我们能翻到一个叫AddCoin,命名空间是main.AppData的方法,双击进去看看

    dnspyAddCoin

    dnspyAddCoin
  5. 看到源码了,可以从 Clamp 看出,这应该就是增加硬币的地方了
    Clamp 是一个限制数字大小的参数,应该是用这个参数来控制硬币不会低于 0 且不会高于 9999 个

    dnspyAddCoinCode

    dnspyAddCoinCode
  6. 下面我们开始修改,在方法内右键,选择编辑方法

    dnspyAddCoinModify

    dnspyAddCoinModify
  7. 将 Clamp 函数的第二个值改为随便一个大数字,这样你的硬币就不会低于这个数,然后点击右下角的编译

    dnspyAddCoinModified

    dnspyAddCoinModified
  8. 接下来我们保存这个模块,按 Ctrl+Shift+S,或者文件菜单里选择保存,然后点确定即可

    dnspySave

    dnspySave
  9. 回到 AndroidKiller,重新编译即可,如需查看如可编译可以参考第三步的第七条。

    这样就修改好啦

免费评分

参与人数 23吾爱币 +17 热心值 +21 收起 理由
benjj2 + 1 + 1 谢谢@Thanks!
男人被毁容 + 1 + 1 我很赞同!
luoxiao + 1 用心讨论,共获提升!
ohgami_lxy + 1 + 1 谢谢@Thanks!
sunnylds7 + 1 + 1 热心回复!
qwer20001022 + 1 + 1 我很赞同!
Main丶心劫 + 1 + 1 谢谢@Thanks!
万里晴空 + 1 我很赞同!
cwpcjt + 1 + 1 用心讨论,共获提升!
pinesnow + 1 我很赞同!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
www.52pojie.cn + 1 谢谢@Thanks!
fgj45 + 1 + 1 热心回复!
一筐猪 + 1 + 1 谢谢@Thanks!
hxd97244 + 1 + 1 教程很详细,感谢分享。
_小白 + 1 + 1 很详细,不错
751811164 + 1 用心讨论,共获提升!
怒火燃烧 + 1 谢谢@Thanks!
但看鱼儿飞 + 1 + 1 我很赞同!
jiou234 + 1 + 1 用心讨论,共获提升!
jobinLi + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Zimin + 1 用心讨论,共获提升!
Wevelet + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

apie 发表于 2020-12-4 10:30
dnspy是.Net的反汇编工具,是不是意味着这个Android的app上层必须要是C#写的才可以,如果是Java写的就不能用这种方式?
我想请教的是,怎么确定这个app能用dnspy来查看和编辑,而不是用其他的工具?谢谢大佬

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
我已经蓝屏 + 1 + 1 用心讨论,共获提升!

查看全部评分

正己 发表于 2020-12-4 10:48
本帖最后由 正己 于 2020-12-4 10:51 编辑
apie 发表于 2020-12-4 10:30
dnspy是.Net的反汇编工具,是不是意味着这个Android的app上层必须要是C#写的才可以,如果是Java写的就不能 ...

一般来说,dnspy是修改dll的,你查看安装包有没有这个路径:assets/bin/Data/Managed/,这里面都是dll文件,当然有时候也会加密,需要dump处理一下才能修改。如果没有这个路径,那就要查看lib文件,康康是基于什么框架写的,比如U3d、cocos2d。U3d大部分是生成dll文件,而cocos2d则有可能是js或者lua。我的理解是这样子,有可能有错误,请指教
 楼主| 我已经蓝屏 发表于 2020-12-4 13:26
apie 发表于 2020-12-4 10:30
dnspy是.Net的反汇编工具,是不是意味着这个Android的app上层必须要是C#写的才可以,如果是Java写的就不能 ...

emm 这个我详细的不是很清楚,我给你说下我的理解
前提:
Android平台执行App的时候使用的是Dalvik虚拟机,这个虚拟机执行的是Smali代码

通常AndroidApp使用的是Java进行开发,然后在发布App的时候编译器会把Java源代码(*.java文件)转换成Java的字节码(*.class文件),然后将Java的字节码(*.class文件)再编译成Dalvik的可执行文件(*.dex文件)。
如果我们想反编译的话得先把Dalvik的可执行文件(*.dex文件)反汇编成Smali文件,就类似exe和asm,这里dex文件就相当于exe文件,smali文件就相当于asm文件

然后针对这个问题,我好像没太看懂第一行想表达什么,是问别的安卓程序能不能用dnspy查看嘛?
第二行的话,这个需要一点经验,因为我之前搞过unity开发,所以知道这几个dll是unity相关的,然后一般来说,基本上使用app第一步都需要使用android专用的分析软件先打开,然后才能知道下一步干什么,比如说这个,在分析软件打开apk之后,我看到了代码目录里有unity相关的代码,我自然而然的就会去看assest(一般别的资产都放着)里有没有什么相关的,我看到有unity相关的就会去使用C#的分析软件,也就是dnspy,如果我看到ue相关的库,那我就会用分析c++的软件等等,总之第一步就是分析apk,然后看apk里有没有套用别的程序或语言,如果有的话就使用别的语言的分析软件去分析,一般是dll文件或者so文件,你可以用peid先分析,然后有针对性的去分析上层的代码
sunyx816 发表于 2020-12-4 08:57
学到了,试试去
天象独行 发表于 2020-12-4 09:03
学习了,感谢分享
caofugui 发表于 2020-12-4 09:06
一步一步的教程,认真学习下
chenerndong 发表于 2020-12-4 09:10
感谢大佬分享
erda88 发表于 2020-12-4 09:26
支持楼主分享
芽衣 发表于 2020-12-4 09:35
上限提高到100万不行吗??
tea456 发表于 2020-12-4 09:37
厉害了我的哥。
jobinLi 发表于 2020-12-4 09:50
学习了!谢谢分享
 楼主| 我已经蓝屏 发表于 2020-12-4 09:52
芽衣 发表于 2020-12-4 09:35
上限提高到100万不行吗??

可以的,改第三个参数,就是那个9999就行,但是游戏里可能会显示不全
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表