Android 如何对apk文件进行反编译以及重新打包签名

最近在看视频的时候看到有关apk文件如何反编译的,顿时提起了自己的兴趣,记得在刚刚学习Android的时候就对这方面有兴趣,只是当时自己的技术…咳…现在自己…咳咳..咳…

注:以下的前提是Java相关环境变量配置完成
我觉得反编译无非就是能够得到其apk的资源文件,以及java代码等
常用的工具有:apktool、jeb、Smali2Java等,下面我会一一介绍这几种工具的用法,展示下自己这两天的百度成果

Apktool
下载地址:
http://download.csdn.net/detail/w18756901575/9515620
中文版:
http://download.csdn.net/detail/w18756901575/9515642

查看帮助:
输入:

java -jar apktool-v2.0.0RC2.jar

当你把文件下载下来之后是一个.jar文件,我一开始也不知道.jar文件是如何使用,仅仅知道是个架包可以导入libs下使用,还可以解压,但这个.jar文件并不是这样用的.
在你下载的.jar包所在文件夹下,在搜索栏输入cmd回车,打开dos窗口,或者是直接打开dos,cd到.jar文件所在的目录
反编译
输入命令:
apktool-v2.0.0RC2.jar 是.jar文件名称
d 是反编译
a.apk 是文件路径加名称,因为我的a.apk和架包apktool在一个文件夹下所以直接输入文件名称就可以了

apktool-v2.0.0RC2.jar d a.apk

然后在apktool所在文件夹下会生成一个以apk文件的名称命名的文件夹

文件结构如下:

其中assets、res文件夹对应原来工程中的文件,这样就可以原原本本的拿到原项目的图片、xml文件,并根据自己的需要进行修改
smali文件夹对应的是原Java文件,里面都是.smali文件,这个文件是可以修改的,修改他就相当于修改java代码。
.smali文件的内容是用smali语法编写的,我们一般编写都是对.java文件进行编写.smali文件阅读起来着实费力,初学者根本看不懂.smali代码,额..至少我看着很晕,如何将其转化成java代码可供阅读呢?不要着急,在下面我会讲到了。

接下来来讲解如何对修改后的文件进行重新打包

输入以下命令
b 是对修改后的文件重新打包
a 是刚刚解压的文件夹

apktool-v2.0.0RC2.jar b a

如果没有错误的话就会生成dist文件夹里面就是打包的apk文件

记住如果修改的文件有错误的话,是编译不通过的,那么就只会生成
build\apk 文件夹而其中没有任何东西,也不会生成dist文件夹

这个时候我们已经得到了apk文件,注意这个时候,因为没有签名文件,apk是无法安装的

如何对apk文件重新签名

想要对apk文件进行重新签名,这个时候我们就用到了另外一种工具
re-sign
输入:jarsigner可查看re-sign的帮助
下载地址:
http://download.csdn.net/detail/w18756901575/9515623

输入命令:

jarsigner -keystore G:\FuZa\WeChatSDK_sample_Android221cbf\debug.keystore -storepass android -keypass android D:\apktool\a\dist\a.apk androiddebugkey

其中:
G:\FuZa\WeChatSDK_sample_Android221cbf\debug.keystore是debug.keystore路径
D:\apktool\a\dist\a.apk 是需要重新签名的文件路径加文件名

这个时候我们就对刚刚的apk文件进行了重新签名,然后就可以安装了

如何查看java源码:

使用jeb
下载地址:
http://download.csdn.net/detail/w18756901575/9515633

下载下来之后解压:
然后在xxxx\jeb-1.5.201404100_modified_by_scz(20140711)\64-bits\bin
文件夹下运行dos命令(它有32位和64位两个文件夹,根据自己的需要去运行)

java -jar jeb.jar

然后就会启动jeb

启动之后的事情就很简单了,只需要直接将apk文件拖入其中就可以了,apk文件比较大的会有一小会的卡顿是正常现象。

这个时候就是可以查看源码了,
tab键可以在smali代码和java代码中切换
需要注意的是,在jeb中是不可以修改其代码的

Smali2Java

下载地址:
http://download.csdn.net/detail/w18756901575/9515648

使用Smali2Java查看java源代码
Smali2Java就跟简单了,下载文件之后解压,得到Smali2JavaUI.exe可执行文件,打开文件,然后文件→打开 打开一个apk文件就可以查看源码了
注意:Smali2Java也不可修改java代码

Android Studio中,生成签名文件可以按照以下步骤操作: 1. 打开Android Studio并打开您的项目。 2. 点击菜单栏中的“Build”,然后点击“Generate Signed Bundle / APK”。 3. 选择“APK”并单击“Next”。 4. 在下一个屏幕上,选择“Create new”并填写有关您的密钥的详细信息,例如名称,密码,别名和有效期等。 5. 单击“OK”并填写有关您的应用程序的信息,例如版本号和版本名。 6. 单击“Next”并选择“Release”作为构建变体。 7. 单击“Finish”并等待编译完成。 一旦您的应用程序构建成功并生成签名文件,您可以使用以下步骤对其进行反编译修改打包签名: 1. 下载并安装Apktool(可在https://ibotpeaches.github.io/Apktool/上找到)。 2. 将您的APK文件复制到Apktool所在的文件夹中。 3. 打开终端或命令提示符并导航到Apktool文件夹。 4. 输入以下命令以反编译您的APK文件apktool d your-apk-file.apk 5. 对您的应用程序进行任何修改。 6. 输入以下命令以重新打包您的应用程序:apktool b your-modified-app-folder 7. 使用Java keytool生成新的签名文件。例如,使用以下命令生成新的签名文件:keytool -genkey -v -keystore your-keystore-file.jks -alias your-alias -keyalg RSA -keysize 2048 -validity 10000 8. 使用以下命令将您的应用程序签名:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your-keystore-file.jks your-modified-apk-file.apk your-alias 9. 安装已签名APK文件并测试它。 请注意,修改重新打包应用程序可能会违反某些法律和条款。请确保您有权执行此操作,否则可能会面临法律后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值