PC下安卓逆向拆包编译打包与重新签名
1.安装jdk开发环境并设置环境变量
- 到ORCLE官网下载JDK开发环境
- 运行安装(基本一直下一步,没啥好说的,记住自己安装目录选在哪了就行)
- 配置环境变量
然后找到你的JDK安装目录下的bin文件夹
最后一路确定回来。
2.apk拆包打包工具——APLTOOL
- 到APLTOOL官网往下翻下载最新版APLTOOL
- 找一个你喜欢的地方新建一个文件夹作为安卓拆包打包的地方,然后把下载的.jar文件放进去(可以把名字改短点以防打指令时候不好打)
- 把你要拆包的.apk或者要打包成apk的文件夹也放进来
- 按住shift+右键,选择在此处打开powershell(按住shift再右键才有)
- 执行拆包/打包命令
1 | java -jar jarfilename.jar d filename.apk//拆包 |
注意!打包前最好删除 META-INF 文件夹!这里面是旧的安装包签名信息
3.使用dex2jar将dex文件转换为jar格式
在将apk逆向拆包后,apktool会将里面的dex文件逆向为可编辑的smail文件,但是smail的语法比较奇怪,并不是很适合大多数人的阅读习惯,因此我们可以
首先把apk文件拷贝一份解压缩,获取里面的dex文件,然后输入
1 | d2j-dex2jar.bat filename.dex |
将dex文件转换为jar,再经过逆向,便可通过阅读java源代码的方式来寻找需要逆向后修改的内容,找到后到smail文件内修改对应内容即可。
4.使用JD-GUI或CFR将jar文件逆向为java源码
JD-GUI和CFR都是知名的java逆向工具,通过使用JD-GUI和CFR我们可以将已经编译为字节码或jar包的java文件逆向回java源码,JD-GUI是一个图形界面的工具,而CFR则是命令行工具。
JD-GUI的使用比较简单,只要在终端内输入
1 | java -jar jarfilename.jar |
即可打开一个带图形界面的软件,在里面选中逆向出的jar打开即可查看逆向出的文件
CFR没有图形界面,但实际使用中往往比JD-GUI更稳定,一些JD-GUI无法正确逆向的文件能够在CFR下逆向成功
1 | java -jar jarfilename.jar inputjarfilename.jar --outputdir /savepath |
之后可以通过其它ide或文本编辑器查看逆向出的文件
5.生成我们自己的.keystore文件
平常我们用的一些重新签名工具里面大都是别人做好的签名文件,这里我们可以生成我们自己独有的签名文件。
- 在powershell输入
1 | keytool -genkey -alias 别名 -keyalg RSA -validity 有效天数 -keystore filename.keystore |
参数名 | 含义 |
---|---|
-genkey | 产生证书文件 |
-alias | 产生别名 |
-keystore | 密钥库名称 |
-keyalg | 密钥的算法 |
-validity | 证书有效天数 |
然后按提示分别输入
姓名、组织单位、、城市、省份、国家代码
Y确认正确
然后设置一个密码(输入的时候不会有反应但是实际上输进去了)
回车后会再让你确认一次密码
之后你就得到了自定义的.keystore密匙文件
6.为打包好的.apk签名
在powershell输入指令
1 | jarsigner -verbose -keystore filename.keystore -signedjar outputfile.apk inputfile.apk alise |
参数名 | 含义 |
---|---|
-verbose | 输出签名过程的详细信息 |
alias | 密匙证书文件的别名 |
-keystore | 密匙证书文件位置 |
-signedjar | 指定输入输出文件名 |
inputfile.apk | 未签名文件 |
outputfile.apk | 签名后文件 |
如此我们便成功的完成了对apk文件的签名