反编译修改Android apk的版本号

2019-12-02  本文已影响0人  所幸时光未苍凉

最近遇到一种突发情况,cp那边的游戏打包后没改版本号,上传不了gp,今天又恰巧是周末,cp那边没上班,项目很赶,无奈之下,想到了直接使用反编译改完之后再回编的方式,修改一下版本号。这篇文章主要是记录一下整个流程。

准备工作

  1. 官网下载apktool,Apktool是一个逆向android非常有用的工具,可以用来反编译apk文件,并且能在修改部分文件后,重新打包成一个新的apk,首选我们需要下载一个apktool的jar包
  2. 下载完后,把名称改成apktool.jar(没有梯子的同学可以看下这里),然后新建一个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" %* 

反编译apk

准备工作完毕后,开始反编译apk。
1.将你要反编译的apk放到apktoo.bat的同一文件夹下,然后cd到这个目录,执行以下命令:

apktool.bat d -o apk.out debug.apk

其中debug.apk为你要反编译的apk的名字,替换一下即可

  1. 反编译之后生成一个apk.out文件夹,其目录如下:


    apk.out文件夹目录.png
  2. 找到apktool.py文件,打开后,最下面的versionCodeversionName就是我们要修改的部分,这里直接改动成最新的版本号和code就行。
    apktool.py.png

回编译apk

  1. 改完versionCodeversionName后,我们要把apk重新打包还原,执行以下命令:
apktool.bat b -o dst.apk apk.out

其中dst.apk为打包后生成的apk。

  1. 拿到新的apk之后,最后还需要两步,一是重签名,直接把签名的keystore拷贝到当前的文件夹下,执行下面的命令:
jarsigner -verbose -keystore debug.keystore -signedjar dst_signed.apk dst.apk debug

其中debug.keystore为你自己的签名文件,debug为签名文件的keyAlias
然后输入密码就行,dst_signed.apk为签名后生成的apk文件

  1. 最后通过zipalign.exe工具对dst_signed.apk进行文件对齐,这个工具在sdk的build-tools的版本下面
    zipalign.exe.png
    dst_signed.apk复制到zipalign.exe工具的文件夹下,cd进入该文件夹,然后执行以下命令:
zipalign -v 4 dst_signed.apk dst_signed_align.apk

执行完后,出现如下命令即代表成功

执行成功.png
这样就是文件对齐之后的正确版本,一整套的流程基本就结束了,可以反编译验证一下是否成功。
上一篇 下一篇

猜你喜欢

热点阅读