| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 初次反向编译apk并进行修改 -> 正文阅读 |
|
[移动开发]初次反向编译apk并进行修改 |
使用一个app时,某个按钮因为权限问题被置灰无法点击,很烦,于是想着能不能通过修改apk的方式来防止按钮变灰,因为按钮本身是可以点的,只是时间限制被置灰了,之前从没有相关经验,所以过程中踩了很多坑,花了三天时间完成任务,在这里记录分享一下,免得以后对某个apk起色心的时候忘了怎么操作。 所需要的工具(文章尾部附上下载链接)
有了工具就可以正式开始了,下面将记录这次操作的每一步以及解决坑的方法 一、使用ApkTool对apk进行反编译1.1、下载并解压ApkTool?解压后会有这两个文件,接下来就是把要反编译的apk放在同一个目录下,打开powershell执行反编译命令:./apktool.bat d test.apk,这里的java.apk是我的安装包。 ?这里遇到了第一个问题,反编译过程中提示错误?java.util.zip.ZipException: invalid CEN header (encrypted entry),拿问题去搜了会也没搜到解决办法,后来看到别人说有些修改不反编译也行,于是就想着能不能直接zip解压后修改。 1.2、尝试修改文件后缀为zip后解压想到了就去干,于是很幸运的遇到了第二个问题 1.2.1修改安装包后缀为.zip?1.2.2 解压安装包并遇到了第二个问题?wfk,加密了?然后想着反编译不成功是不是就是因为加密的原因,想着要解密靠我这废物电脑基本上应该不可能了,但还是尝试着去搜了下apk如何解密,然后搜到的是,apk不能被加密,不然手机安装的时候咋安装,说的很有道理的样子,但是我tm这里要我输入密码是我眼花吗?于是又开始各种度,度来度去,终于找到了一个可以解决的办法,咱们的第二个工具ZipCenOp登场 1.3、使用ZipCenOp进行apk伪加密的解密?解压后就是这三个文件了,下面两个文件名已经告诉你他们是干嘛的了,但是在解密前需要打开bat修改下要解密的文件名称 ?把标红 的替换为自己的apk名称就行了,记得apk文件要放在同一路径下后双击解密.bat,解密完成后会提示你按任意键退出,然后就可以了 ?1.4、抱着必胜的信心再去反编译解密不会生成新的安装包,就是我们放进去的apk,为了确认解密是否有效,我又修改为.zip,后缀,尝试解压了一波,真的成功了,内心独白:就这?啥也不是!然后抱着必胜的信心又去反编译了,再次幸运,我又遇到坑了 ??Expected: 0x00080003 or 0x00080001, got: 0x00080000 这时候我开始怀疑是不是我找的教程不对,一番搜索,发现人家就这么一步一步的修改apk,走向人生巅峰,没有说像我这样的,一步坑,步步坑,没办法,换教程不行,还是解决问题吧,毕竟好不容易才解决了第一个坑,也不想就这么放弃了,就在那搜啊搜,试啊试,也不知道花了多久,最终还是让我搞定了:修改AndroidManifest.xml 附上启蒙帖子:https://www.cnblogs.com/annaivsu/p/5268837.html 1.5、修改AndroidManifest.xml到这一步,就要用到第三个工具了,HexEditorI,AndroidManifest.xml是一个二进制文件,我们平常用的编辑器根本无法修改,于是找到了HexEditorI这个工具 1.5.1、提取AndroidManifest.xml修改apk后缀名为zip,打开文件,拖出里面的AndroidManifest.xml文件 ?1.5.2、使用HexEditorI修改AndroidManifest.xml解压后在这个目录下会有个exe执行文件,运行然后找到要修改的文件即可 ? ?文件打开后就看到这里,一看就和错误:Expected: 0x00080003 or 0x00080001, got: 0x00080000很像啊,然后就根据错误提示,把00改为了03 ?然后保存退出就可以了 1.5.3、替换AndroidManifest.xml这步就不截图了,把压缩包里面的AndroidManifest.xml删除,然后把修改过了放进去就好了 1.6、怀着忐忑的心再去反编译依然是执行./apktool.bat d test.apk命令,然后看到了如下输出 ?我就知道我会成功的,哈哈,反编译完成,后面就是开始我们的修改大计了 二、修改反编译后的文件这里会用到dex2jar和jd-jui,并且还需要编辑器来编辑smali文件,因为程序真正运行读取的是smali文件,我这里是直接用的idea来对smali进行修改。 2.1、使用dex2jar反编译将apk文件修改后缀为.zip后解压,将解压文件里面的classes.dex放到dex2jar的目录下 ?执行命令:d2j-dex2jar classes.dex ?然后就可以看见文件夹里面多了一个\classes-dex2jar.jar文件,这个就是编译成class的文件,拖入gui就可以看到源码了 ?2.2、打开smali文件夹进行修改我这里是先根据按钮关键字在smali找到了对应的标签 ?发现是一个TextView标签,就设想会不会是根据后台的权限来设置TextView的显示和隐藏,于是根据标签的id? mute_text在gui进行搜索 ?发现在这里读取了mute_tet标签,并定义了muteText对象,然后继续搜索muteText ?全局只发现这里引用了muteText对象,并且确实找到了有修改标签可见状态的操作textView.setVisibility(b);接下来就是在smali根据类名和方法名找到对应的代码修改了 ?找到后直接把修改可见状态的代码删除就可以了,因为这个textView默认是不可见的,所以就让他一直老老实实待在幕后吧 三、apktool回编译修改后的文件完成了针对性的修改,接下来就是把我们修改后的代码还原成可安装的apk了,回编译就比较轻松了,过程中没有遇到什么坑,还是使用apktool,执行命令:?./apktool.bat b test,test是我们要回编译的文件夹 ?这样我们就算回编译成功了,在test里面就能看到新生成了build、disk两个文件,在disk里面就有打包好的apk ?这个时候一种自豪感由内而起,迫不及待的就拿着apk跑去虚拟机上安装,果不其然,无法安装,说是编译失败 ?原来是自己太不淡定了,教程说的清清楚楚,重新编译好的apk是需要加签的,不然安装时就会有问题,那接下来肯定就是跟着教程开始给apk签名了 四、给修改后的apk签名签名过程还算顺利,因为是使用jdk自带的加签工具进行加签,电脑本身就有安装jdk8的环境,所以省了一个步骤,如果你没有的话,就去搜索下jdk的安装教程,弄完再继续后面的操作 4.1、生成用来加签的keystore在test的同一目录下,进入cmd,然后执行:keytool --genkey -alias android.keystore -keyalg RSA -validity 36500 -keystore android.keystore ?执行命令后跟着提示一步一步输入就可以了,秘钥库口令是必须要记住的,后面要用,其他的随便输入就好了,最后那个输入按提示直接按回车就行 ?这样就生成了我们需要的加签工具,然后执行命令:jarsigner -verbose -keystore android.keystore -signedjar final4_signed.apk test.apk android.keystore进行加签,final4_signed.apk是加签后的apk,可以按自己喜好来命名,test.apk就是要加签的apk ?输入上一步设置的密码就可以开始加签了 ?加签完成,就可以看见文件夹中生成了我们指定名称的apk, ?大功告成,剩下的就是到模拟器中进行安装了 五、安装apk这一步其实没什么好说的,就和安装其他apk是一样的,点击安装就好了,但是因为是自己构建的apk,成就感最足的一步,不拿来说说,感觉都白忙活了,好了,来吧,拖入apk,点击安装 ?看到这个就成功了一大半了,果然后面没有在遇到什么坑,直接就安装成功了,不要问我修改有没有生效,没有生效我会有心情在这哔哔这么多? 最后加一句:记得把之前安装的先卸载再安装哦,不然安装到半路会提示安装失败,坑不大,但浪费我不少时间和脑细胞,差点让我倒在了黎明前 六、最后最后干啥呢,没啥说的,当然是附上工具包的安装链接了 链接:https://pan.baidu.com/s/1utcNaA5lOuoEk-LZapyZUw? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:00:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |