如何反编译apk
浏览:1061 次

首先,反编译他人的APK是不好的。代码是程序员辛勤工作的结果。用这种方法不劳而获是错误的。这也表明代码混淆非常重要。本文以学习的态度,研究了在某些特殊情况下,如果需要,如何对apk进行反编译。
解压缩工具简介
Apktool,编译和反编译apk,并从apk中提取图像和布局资源
Dex2jar,反编译可运行的文件类。在jar源代码文件中创建索引
Jd-gui,查看jar源代码文件
分解
apktool的安装
Windows系统:
1.首先确保系统中安装了Java
2.下载apktool。bat脚本
3.下载apktool的最新版本。jar并将其重命名为apktool.jar
4.放置apktool。蝙蝠和apktool。jar,并且它们可以在命令行窗口中使用。
5.请参考其他系统的链接
用法

您可以直接执行apktool。点击命令行查看帮助。以下是最常用的两种:
分解
apktool。bat d[-s]-f
注意:如果未选择文件夹路径,请直接输入:apktool。bat d-f 1.apk-o 1将默认在系统目录C:用户管理员中生成;
我你需要在这里使用另外两个工具。下载dex2jar并解压。下载带有UI的appjdgui。
II将要反编译的apk的后缀名更改为.zip或。rar,然后将其解压缩到文件夹以获取类。dex文件。
III复制类。dex到提取的dex2jar-2.0文件夹。从命令行输入目录并执行
d2j-dex2jar。bat类.dex
通过反编译类获得的jar文件。dex,classs-dex2jar。jar,将生成。
然后使用jdgui打开类dex2jar。jar,您可以查看源代码。
如果apk在发布时被混淆,我们只能得到混淆的版本。通过阅读源代码很难破解他人的APK,但如果你感兴趣,可以在线学习。
修改代码
如果只修改了apk的相应资源,只需在res文件夹中找到相应的文件替换。
修改代码很麻烦,因为只有smali文件被反编译,即Java虚拟机支持的汇编语言。

如果您确实需要修改代码,则必须参考smali文件和从类反编译的源代码。dex,并根据smali规范对其进行修改。它相当于编写汇编,这很困难。
5、 签名apk文件:
(如何查看签名信息:将签名的apk文件的后缀名更改为zip,然后提取META-INF文件夹:输入命令:keytool-printcert–file<签名文件RSA的路径>)
钥匙工具。exe和jarsigner。exe是签名文件所必需的,这两个文件都在Java jdk的bin目录中:
1.打开命令行,输入以下命令,然后按enter键:
keytool-genkey-别名密钥。keystore-keyalg RSA-validity 30000-keystore key.keystore
-Genkey生成证书文件别名keystore指定密钥库文件keyalg中密钥的算法指定证书有效的天数。这里我们写了30000天
如下图所示,随机填写
2.生成的密钥库必须位于与apk相同的目录中(如果默认情况下未在系统目录中修改路径,则为C:用户管理员)
命令行输入以下命令,然后输入Enter:
jarsigner-verbose-keystore密钥。keystore-signedjar xxx签名。apk xxx无符号。apk密钥.密钥库
Xxx签名。apk是指签名的apk文件名xxx unsigned。apk原始apk文件名verbose指定生成详细的输出密钥库指定数字证书存储的路径
这样,apk的签名过程就完成了,然后您就可以安装和使用它了。请注意,如果您的手机已经安装了此APK,则需要先卸载它,否则无法安装。
那么如何防止自己开发的APP被反编译呢?这需要APP的app增强,以防止app被恶意篡改。