android修改dll文件,Android中dll文件的修改

news/2024/11/28 13:37:17/

Android中dll文件的修改,最近下载了一款非常不错的益智类游戏,一打开,顶部还有广告,最讨厌游戏中还带广告的,点又点不掉,又怕误点,真的看了都烦。。。作为程序员,就有种想要把它干掉的想法,作为玩游戏没耐心的人,玩到一半过不了关总想看到最后一关是什么样。不知道你们有没有这种感觉。。。

这个游戏很适合给小学生做数学题(好像小学生以上的都很适合,哈哈),游戏中所要做的就是将下面标注着数字的水球切开或是粘合起来,以符合在框框里标注的数字。如果用手指将水球像两个方向拉伸,水球就变成了大小相同的两个小水球,而上面写着的数字就变成了原来的一半。而让两个小水球合并到一起,上面的数字就会加在一起。在画面中有的区域会出现小框里面也会标注相应的数字,让水球和这些框框里的数字相吻合,紧紧地嵌入框框就可以过关。

243692_0.png

好了,下面直接进入正题吧,当前要解决的问题就是:1.去除广告 2.解锁关卡

需要的工具:

一:Android Killer

二:Reflector

拿到apk包后使用Android Killer反编译得到如下:

243692_1.png

很明显这个游戏是使用Unity3D引擎开发的,那么,一般它的游戏逻辑都会写在assetsbinDataManagedAssembly-CSharp.dll这个文件里(也有一些会写在其他文件里)。

1.去除广告:

打开它的目录结构如下:

243692_2.png

之前看过一篇去除广告的文章,一般它加载广告在smali中都会有invoke-virtual.........->loadAd........;(有些会在so文件里加载广告,这种方式更高级,这里就不说在so文件里是如何加载广告的,其实我也不懂在so文件里面是怎么加载广告的,哈哈哈。。。)那么我们直接就搜“->loadAd”看看,结果如下:

243692_3.png

看到有3处调用了“loadAd”的地方,那我们就直接把它注释掉吧,不让它调用,

只需要在被调用的地方加个“#”号就行,这样就注释掉了。简单吧,哪里不要就“#”哪里,妈妈再也不用担心话费乱扣了。。。

243692_4.png

注释掉之后,重新打包,运行如下:

243692_5.png

这就对了嘛,真干净,看了就很爽。

去除广告成功,妈妈还会担心每个月几百块的话费哪里去吗,哈哈哈。。。

2.解锁关卡:

从上面我们知道使用Unity3D引擎开发的,那么我们直接把它拖入Reflector工具里查看,看到如下:

243692_6.png

一般解锁关卡,无非就是unlock什么的,这里我们就直接在此工具下按键盘上的“F3”搜搜看:

243692_7.png

看到了吧,里面有很多有关于关卡的解锁逻辑,

尝试过把UnlockAchievements()方法内的this.Level >=XX都改为

this.Level >=1(后面给出怎么修改的方式),但是这样修改,运行之后是没有看到有解锁关卡或别的什么。那肯定是我们没改对地方,导致解锁失败。

243692_8.png

在里面我们还看到有LoadLevel(),LoadNextLevel(),这两个方法,

在游戏中我们可以看到界面中 上下关卡只有图中两个按钮。

243692_9.png

再看看LoadLevel()这个方法里面好像也没有看到什么“+1”之类的逻辑,

243692_10.png

再看看LoadNextLevel()这个方法,

243692_11.png

到这里我们就基本锁定上下关卡就是在这里做的操作,但是一旦调用这个方法,进来立马就保存当前关卡,到下面就判断是否要载入上下关卡,那我们就让它一调用这个方法就先给Level加1,也就是this.Level++; 相反的在图中的 this.Level++ 和 this.Level-- ,就要变成

this.Level+=0; this.Level-=2; 因为上面已经加1了,所以这里else if 里面的判断就不能再加1了,而else里面的判断就要多减1,具体的看图:

这里补充一点:

要修改dll文件需要在你的Reflector/Addins目录下有这个两个文件

243692_12.png

然后再配置这两个文件,如下图

243692_13.png

243692_14.png

配置完之后在Tools下就会多出Reflexil v1.6这个选项

243692_15.png

终于要开始改了。。。。。。。

继续上面说的,点击Reflexil v1.6这个选项,看到如下:

243692_16.png

那我们怎么添加呢,这里其实我也不懂,我也是参照它里面的语句

243692_17.png

找到对应的语句就好办了,我们再这样操作,如下图:

243692_18.png

添加:ldarg.0

243692_19.png

添加:dup

243692_20.png

添加ldfld System.Int32 StageController::Level ,

这里分成两步,第一步是OpCode,和Operand type

243692_21.png

第二步:

在Operand中:

243692_22.png

243692_23.png

243692_24.png

添加ldc.i4.1

243692_25.png

添加add

243692_26.png

添加stfld System.Int32 StageController::Level

这个跟上面添加ldfld System.Int32 StageController::Level 是一样的,这里就不贴图了,

最后添加成功后是这样,如下图:

243692_27.png

注意:如果上面添加标签的时候不小心点到 ”Append”,会跑到最后去,记得删掉。否则也会报错。

到这里还没完,记得上面说的this.Level++ 和 this.Level-- ,要改为

this.Level+=0; this.Level-=2 ,这里就只贴加法的修改步骤,减法的自行修改

243692_28.png

243692_29.png

到这里就全部修改完成了,那接下来就是保存了

243692_30.png

243692_31.png

保存完成之后可以按键盘“F5”刷新一下,看有没有修改成功

243692_32.png

最后就是重新打包这个apk文件,运行。。。

进入游戏后发现还是下一关卡按钮还是灰色的,说明没改对地方,这就尴尬了。。。

辛苦大半天还是一样。。。难道this.Level++不是在这改的吗,(这不是废话吗,如果改对了,还会有下文吗,哈哈哈。。。)

没办法了,回去看看哪里还有使用Level变量的。

243692_33.png

直接鼠标左击”this.Level++”中的Level会跳到Level的出处,再右键点击Level,选择Analyze

243692_34.png

243692_35.png

一个是我们刚刚的LoadNextLevel(),还有另一个,那很有可能是在另一个地方被调用了,

很明显,这个两个方法都在同一个类下,右键图中对应的方法选择Go To Member

243692_36.png

进入这个方法后看到如下:

243692_37.png

改的方法跟上面是一样的,因为是在同一个类下,所以都一样,但是这里需要注意一下,因为它本来已经有this.Level=stageData.Level,直接修改就行,或者把这句对应的语句删掉再重新添加也行,修改后样子如下:

243692_38.png

然后修改后,记得我们刚刚在LoadNextLevel()方法里添加的this.Level++记得要删除,

否则进入下一关卡的时候level就相当于加了两次。

好了,经过刚才添加,删除之后我们再保存这个文件(修改完之后最好F5刷新一下,看有没有修改成功),重新打包apk。

成功,嘿嘿

最后放一张gif动图,不知道发布出去,有没有动画效果。

243692_39.gif

总结:

1.移除XXX广告的方法,正在调用的时候就是一句话,所以只要注释掉关键点就行。

2.对dll文件的修改,利用一些关键词去修改,这只是我的一些思路,如果你有搞怪的方法,还请留言一起探讨下,我一开始也是蒙逼的,删除还好,但是增加就有点困难,特别是要用它里面的方法,一开始都不知道那是啥,哈哈,不过现在总算有点了解了。


http://www.ppmy.cn/news/455060.html

相关文章

APK反编译后修改成功打包

需求:apk需要改变一个常量,但是源码丢失 工具下载地址:http://download.csdn.net/download/intenttao/9953168 1.使用apktool反编译apk cmd定位到工具根目录,执行命令apktool.bat d apk名称;反编译成功后会在根目录生…

改之理无法安装java_用改之理3.5反编译失败

正在反编译Apk... - 失败:java.lang.UnsupportedClassVersionError: brut/apktool/Main : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:637) at java.sec…

APK可视化修改工具:APK改之理(APK IDE)

标 题: 【下载】APK可视化修改工具:APK改之理(APK IDE) 作 者: 青椒 时 间: 2013-04-10,11:03:12 链 接: http://bbs.pediy.com/showthread.php?t168001 小米人APK改之理(Apk IDE)是一款可视化的用于修改安卓Apk程序…

解决APKIDE(APK改之理)运行出现ApkIDE Exception:…报错的问题

下载好的APKIDE 只要一运行就出现ApkIDE Exception:…的问题 解决办法: 先说明:下边的都只是记录一下我在网上搜集的解决办法的悲催历程(不用看的)难受 那么多办法 废了我一个小时的时间 都不可以用(至少我的不可以&a…

apk改签名

apk改签名大致步骤 1. 文件后缀换成zip或rar,用压缩工具打开,删掉META-INF文件夹下的文件 2. 安装jdk,在jdk的bin目录打开cmd 这两个exe文件就是所需要的了 然后在当前目录输入命令 keytool -genkey -alias abc.keystore -keyalg RSA -val…

小米人APK改之理(Apk IDE)介绍

小米人APK改之理(Apk IDE)是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk打包、Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字&am…

APK改之理 手游修改改编安卓程序工具安装使用教程

APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如果你想要对apk汉化或者是破解,那么ap…