APK反编译以及重新打包的详细步骤
概述:通过反编译apk可以得到我们想要的资源,学习到自己想要的东西。如果有特殊需求还可以更改相应的地方然后再重新打包回去,达到自己需要的效果。这里我将分成两个部分来描述。
第一:反编译apk,然后根据自己需求更改,再重新打包回去。 用到的工具:apktool.zip
第二:将重新打包的apk进行签名。用到的工具:auto-sign.zip
1、反编译: 工具:apktool (版本是 2.0) 目前很多apk 都要求apktool 版本足够高才行,不然会报版本过低的错误。
- cmd ——>cd apktool文件夹的路径(我这里是C:\Users\Administrator\Desktop\android_tool_v2.2\lib\apktool)
- apktool.bat d -f test.apk -o test (因为apktool的版本升级到了2.0 所以方式有点变化。 标准格式变成 apktool -f [待反编译的apk] -o [反编译之后存放文件夹] ) 具体操作如图1.1所示:
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示:
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示:
- 反编译之后会得到test 文件夹,打开test文件夹,里边就是反编译出来的各种资源文件
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示:
- 然后继续执行 apktool.bat b test 如下图所示:
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示:
警告:这里特别要注意,可能我们反编译的有错,所以如果直接执行打包程序会报错。这里提供两个解决方案:1、将错误看懂然后去对应的地方改,不过这个比较难找,不够直观。 2、可以将反编译的代码拷贝到一个eclipse新建的空工程中,看看是否有错,直到修改正确为止。而且一般错误都是出现在资源文件中,容易修改。
- 之后再去test文件夹中就会有如下发现, 图1.5 所示 :
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示:
图1.5
- 打开 “dist”文件夹就会看到重新生成的apk。
- 接下来就要用到签名工具了,如果不经过签名是不能正确运行的。工具: auto-sign.zip
- 将打包好的test.apk 拷贝到 签名文件夹中,并且重命名为 update.zip 如图2.1所示:
图2.1
- 通过cmd ——> cd [签名文件夹的路径 ] (我测试的路径为:C:\Users\Administrator\Desktop\android_tool_v2.2\lib\autosign).如图2.2所示:
图2.2
- 接下来输入 java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update_signed.zip 就可以了 。测试过程如图2.3所示:
图2.3
- 之后去签名文件夹中找到签名后的压缩包
图2.4
- 最后将这个压缩包格式改成.apk就可以正确运行了。如图2.5所示。
图 1.1
警告:在网上查看怎样反编译的时候给的操作方式是 apktool.bat d -f test.apk test 或者 apktool.bat d test.apk test 这样操作会导致以下错误,如图1.2所示: