安卓apk反编译、重新打包、签名全过程

createh53个月前 (02-01)技术教程21

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

资源文件获取,可以提取出图片文件和布局文件进行使用查看

还可以将反编译之后的apk重新打包成apk文件,但需要重新签名,才能安装使用

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

将APK直接反编译成Java代码(目录下包含的一个classes.dex文件反编译为classes-dex2jar.jar)

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

直接查看classes-dex2jar.jar文件(源代码)

下载好放在同一个文件


使用apktool

1. 反编译apk得到图片、XML配置、语言资源等文件

运行可执行jar包的命令是:

java -jar apktool_2.0.1.jar d -f apk包的位置 -o 输入名字

编译成功会生成CCC的文件夹 ,可更改xml配置文件


2.重新打包apk

java -jar apktool的名字 b(打包) 要打包的文件夹名字

CC(打包的文件夹名字)目录下面生成一个dist目录,里面就是重打包之后的apk,但是这个apk没有签名,需要重新签名之后,才能安装。


3.签名过程

生成keystore文件

keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

执行该命令会生成一个dabao.keystore证书文件。

  • -genkey 产生证书文件
  • -alias 产生别名
  • -keystore 指定密钥库的.keystore文件中
  • -keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
  • -validity 为证书有效天数,这里我们写的是40000天

apk重新签名

将dist目录下的apk拷贝到d:\apktool目录,执行下面命令

jarsigner -verbose -keystore demo.keystore demo.apk demo.keystore

  • rbose 指定生成详细输出
  • -keystore 指定数字证书存储路径


查看签名:

keytool -list -printcert -jarfile app-release.apk


使用dex2jar获取源代码源代码


将要反编译的APK后缀名改为.zip,解压得到其中的classes.dex文件(java文件编译再通过dx工具打包而成的文件)

将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内

执行:

d2j-dex2jar classes.dex

成功会生成classes-dex2jar.jar 文件(源代码件)


查看源代码

使用jd-gui.exe 打开classes-dex2jar.jar 即可查看代码信息

相关文章

这几个开源的Java、Apk反编译工具,你可曾用过

Java开发神器IDEA,有自带class反编译功能,而且调试也非常方便。那么,除了IDEA可以反编译之外,还有其它的反编译工具吗?这里就分享几个Github中开源的反编译工具。jadxJadx可以将...

达内java培训专家:7款开源Java反编译工具

反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。达内java培训(java.tedu.cn)专家今天要来分享一些关于Java的反编译...

教你如何用 IDEA 反编译 jar 源码解读

原创不易,为本文点个关注吧。背景最近有开发的小伙伴问我有没有快捷的方式打开 jar 包中的 class 源码,老夫掐指一算,问这位小哥哥是不是最近打的 jar 包老出问题?小哥哥说:"大佬神机妙算啊,...

年年势头强劲,Java不死,尔等永远是太子

小编插一句(php是世界上最好的语言)不服来战。TIOBE 编程社区指数是编程语言流行度的指标,该榜单每月更新一次,指数基于全球技术工程师、课程和第三方供应商的数量。包括流行的搜索引擎,如谷歌、必应、...

C++开发辅助工具推荐(好用的c++开发工具)

在面向C++的开发过程中,一些辅助工具的运用,往往会起到事半功倍的效果。下面是自己在学习工作中注意到的好用软件,现推荐给大家。Beyond CompareBeyond Compare是一款专业的文本文...