Loading... >公司两个项目公用的一个 APP,包名一致,仅仅是渠道不同,部分功能在代码中做了区分处理,然而自动更新后 A调用了 B 的 初始化接口,为了搞清楚渠道是否正确,我们需要对 apk 进行解包。 * ###工具--> Apktool 首先去[官网](https://ibotpeaches.github.io/Apktool/install/)下载,根据你的操作系统来,我这里是 mac os.  * ###安装 按照提示操作 1.右键下载脚本 ```wrapper script```,另存为 ```apktool ``` 文件类型选所有类型   2.下载 jar 包 3.重命名刚刚下载的 jar 包为 ```apktool.jar``` 4.将刚刚下载的两个文件拷贝到 ```/usr/local/bin```  打开 Finder 使用 ```shift``` + ```command``` + ```G``` 将路径输入可以直达,粘贴时会需要权限,输入密码即可。 5.打开命令行,我这里使用的是 iTerm ,进入 ```/usr/local/bin```目录  输入```sudo chmod +x apktool``` 和```suddo chmod +x apktool.jar``` 为两个文件赋予可执行权限,期间需要输入密码,成功没有提示。  6.测试是否安装成功,命令行输入```apktool```出现如下内容则说明成功了  * ###解包 1. 使用命令行进入 apk 存放目录 2. 使用命令 ```apktool -d apk全名```,例如: ```apktool -d qq.apk``` 即可在当前目录解包。(我试过在其他目录使用apktool -d 命令,然后将apk 拖进去,无法解包) ,解包过程有输出 3. 解包完成得到这个  假如只需要获取app的xml或者图片资源,到这一步就完成了 此时我已经找到 manifest文件,看到了当前的渠道了。 4. 如果要获取到java的代码,那么我们还要进行回编译 首先回编译,使用命令```apktool b app反编译的文件夹名称```,例如我这里是```apktool b qq/```  qq目录下会多出一个 build 目录  然后我们去下载 [dex2jarp](https://sourceforge.net/projects/dex2jar/files/) 下载第一个就好了  解压dex2jar-2.0.zip,当然你也可以把它放到其他目录 再终端执行sudo chmod +x d2j-dex2jar.sh 和sudo chmod +x d2j_invoke.sh 添加运行权限, 执行命令为 ```sudo sh d2j-dex2jar.sh classess.dex路径```   在dex2jar-2.0目录下得到我们想要的classes-dex2jar.jar 最后,下载[jd-gui](http://java-decompiler.github.io/) 我们下载osx 版本  解压后将刚刚生成的classes-dex2jar.jar拖入 jd-gui 应用中即可打开查看源码。 可能会出现 “sudo chmod +xr classes-dex2jar.jar”的错误 需要对生成的 jar 赋予权限```sudo chmod +xr classes-dex2jar.jar``` 再次打开就行了  大家在写程序时,一定要混淆加固,这样就算反编译出来,也是一些aabbcc字母,虽然说不能完全保护,但是能拦截掉一大批这种简单的反编译操作。 最后修改:2021 年 07 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏