2025-10-14 20:36:43

文章目录

一、反编译工具介绍

1:apktool 获取资源文件

2:dex2jar(源码文件获取)

3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件

二、apktool工具的反编译重打包签名的详细过程

1:使用apktool.jar进行反编译

2:修改版本号versionCode

3:通过修改后的文件重新回编成apk文件

4:将新的apk文件进行重签名以及内存对齐

1:签名工具:jarsigner和apksigner

2:V1和V2签名的区别

3:zipalign内存对齐

4:jarsigner给apk签名,只支持V1签名

5:apksigner给apk签名,默认同时使用V1和V2签名

6:验证是否签名成功

5:查看新生成的签名apk的版本号是否修改成功

三、总结

最近突然有个紧急需求,应用的某一个版本发布到应用宝时,由于应用宝自己抓包上传了一个高版本的安装包(即比当前要发布的版本高),导致上传失败,而向应用宝申诉无果,我这没有项目源码,找三方改东西太慢,所以要将这个版本反编译、修改为更高版本号、重新打包、对齐、签名在发布到应用市场,特此整理一些心得。

一、反编译工具介绍

1:apktool 获取资源文件

Apktool是一个逆向android非常有用的工具,可以用来反编译apk文件,并且能在修改部分资源文件后,重新打包成一个新的apk。

2:dex2jar(源码文件获取)

将Android的包dex文件转换成jar文件,此时拿到的时字节码文件一般和jd-gui结合使用,将字节码文件转成对应的源码

3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件

将dex2jar中的jar(字节码)文件转成源码,既可以查看源码也可以进行修改。

我的需求只涉及修改版本号,而不需要修改源代码,只需要通过apktool工具反编译拿到资源文件、修改版本号、重新回编打包成apk、内存对齐以及重签名 下面详细介绍apktool的使用过程,dex2jar和jd-gui的使用将单起一篇文章进行介绍。

二、apktool工具的反编译重打包签名的详细过程

首先下载一个最新版的apktool.jar

1:使用apktool.jar进行反编译

新建一个apktool.bat脚本 放入如下内容:

if "%PATH_BASE%" == "" set PATH_BASE=%PATH%

set PATH=%CD%;%PATH_BASE%;

chcp 65001 2>nul >nul

java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*

新建bat文件很简单直接将txt文件另存为.bat文件即可 对apk包进行反编译,将apk包和bat文件(apktool.jar)放到同一个文件夹下,目的是为了输入方便,只需要输入相对路径即可,如果不放到同一个文件夹下,每次输入命令都要输入绝对路径。 在cmd终端,cd到此目录下,输入以下命令:

**

注意

* outDir :表示反编译后的资源文件存放到哪个目录下

* source.apk :表示要进行反编译的apk文件名称

*/

apktool.bat d -o outDir source.apk

或者也可以通过下面的命令反编译两者实现的效果都是相同的

java -jar apktool.jar d -f sour

Copyright © 2088 次元时空特惠站 - 二次元游戏活动特区 All Rights Reserved.
友情链接