android 反编译及二次打包详细步骤

您所在的位置:网站首页 反汇编apk能不能拿到密码 android 反编译及二次打包详细步骤

android 反编译及二次打包详细步骤

2024-01-21 18:08| 来源: 网络整理| 查看: 265

有时候有反编译的需求,借鉴或者修改下APK的代码及资源。

先下载必须软件

ApkTool     https://ibotpeaches.github.io/Apktool/install/

ApkTool用于解压.apk文件及二次打包,直接用解压工具解压出来的文件是无法阅读和修改的;

mac下安装有时会提示权限问题,指令实例:chmod +x d2j_invoke.sh

指令解释:chmod +x 未获取权限的文件名,文件可以是相对或者绝对路径

然后下载

选择一:

dex2jar  https://sourceforge.net/projects/dex2jar/files/

最新版本是2.0,  2015年最后更新,说明有点过时了,作用是将.dex文件反编译为.jar;

jd-gui     http://java-decompiler.github.io/

最新版本是1.6.6,下载mac版本要求电脑安装JDK11,所以直接下载通用的.jar就可以运行了,作用是查看反编译后的.jar,然后修改对应的.samli文件,.samli文件是很难看懂的,不过也是能修改的。

选择一是以前的方式,有点过时了,建议用选择二;

选择二:

jadx-gui      https://github.com/skylot/jadx/releases

这个软件可以直接解压apk文件及反编译,相当方便好用。

有些需要梯子,这里直接提供了目前最新工具套装forMac,因为我现在很少用win哈:

https://download.csdn.net/download/msn465780/83369358

如何使用?

安装好ApkTool后,把.apk文件拷贝到apktoo目录下的bin目录下,和apktool这个可执行文件一级,mac系统在/usr/local/Cellar下;

指令官方文档: https://ibotpeaches.github.io/Apktool/documentation/

有解压和二次打包的各种指令;

终端进入上述bin目录,这里先解压指令例子:apktool d -s zz.apk -o zz

说明:apktool d -s [apk名字] -o [解压后的文件夹名字],d是decode

当然也可以用绝对路径哈;

解压后得到如图:

还有一个指令:apktool d  zz.apk -o zz,这个没有-s, 解压出来的就不是.dex文件,而是.smali

接下来,使用dex2jar,看名字就知道是将dex反编译为jar, 将.dex拷贝到dex2jar根目录下,

终端进入到dex2jar目录下,mac系统指令: sh d2j-dex2jar.sh classes.dex

指令解释:sh d2j-dex2jar.sh [目标dex文件的名字]

然后生成一个classes-dex2jar.jar;

在后, 用下载好的jd-gui打开这个.jar进行查看源码,如图:

 是不是有点麻烦?是的

那么新一代神器就出场了哈,jdx-gui,

用这个软件直接打开目标.apk,如图:

接着,另存为android工程,用androidstudio查阅,就相当方便了哈,如图:

 此过程可能需要几分钟,请耐心等待或者去搞其他的事,好了后用AS打开此项目,当然项目结构语法肯定有错误哈,这个的目的是为了查阅源码和资源的,是不能二次打包的哈;

再接着,找出需要修改的地方,就找到对应的.smail文件修改哈,.jar和.smali文件的名字都是一样的哈,应该找文件问题不大哈。

二次打包,

同样定位到bin下apktool文件那个目录,进入终端,指令:

apktool b zz -o new_zz.apk

指令解释:apktool b [解压后的文件名] -o [二次打包的apk名],b指build

 然后终端进入到SDK自带的platform-tools目录下,用adb指令安装新的apk, 指令示例:

adb install /Users/chenqi/Downloads/new_zz.apk

以为可以开心的玩耍了吗?还差一点点哈,

此时会发现安装不了,提示证书检验失败,简单,再次签名就好了哈,将签名文件拷贝到apktool可执行文件目录下,当然也可以写绝对路径,

指令示例:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore Untitled -storepass 123456 new_zz.apk 123456

指令解释:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystore文件路径] -storepass [keystore文件密码] [待签名APK路径] [keystore文件别名]

再次指令安装,好了,这下可以开心的玩耍了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3