0%

PC下安卓逆向拆包编译打包与重新签名

PC下安卓逆向拆包编译打包与重新签名

1.安装jdk开发环境并设置环境变量

  1. ORCLE官网下载JDK开发环境orcle官网.png
  2. 运行安装(基本一直下一步,没啥好说的,记住自己安装目录选在哪了就行)
  3. 配置环境变量搜索高级系统设置系统属性.pngpath.png添加变量.png

然后找到你的JDK安装目录下的bin文件夹

目录.png

最后一路确定回来。

2.apk拆包打包工具——APLTOOL

  1. APLTOOL官网往下翻下载最新版APLTOOLapktool官网.png
  2. 找一个你喜欢的地方新建一个文件夹作为安卓拆包打包的地方,然后把下载的.jar文件放进去(可以把名字改短点以防打指令时候不好打)
  3. 把你要拆包的.apk或者要打包成apk的文件夹也放进来
  4. 按住shift+右键,选择在此处打开powershell(按住shift再右键才有)shiftlright.png
  5. 执行拆包/打包命令
1
2
java -jar jarfilename.jar d filename.apk//拆包
java -jar jarfilename.jar b flodername//打包

注意!打包前最好删除 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文件的签名