Android 反编译apk,并修改代码后重新签名打包

本文简单介绍apk是如何反编译,然后如何修改smali(java2smali),然后重新签名打包的过程。

一、工具

工欲善其事,必先利其器。好的工具决定做起事来事半功倍。

工具下载链接:https://download.csdn.net/download/abner_crazy/11088776

Android 反编译apk,并修改代码后重新签名打包_第1张图片

二、实现需求:在图1中通过反编译apk将按钮1改为按钮2,并实现跳转到第二个Activity。见下图

Android 反编译apk,并修改代码后重新签名打包_第2张图片     Android 反编译apk,并修改代码后重新签名打包_第3张图片

                 图1                                                                                                    图2                          

三、反编译apk,查看内部如何代码是如何实现的,如下图:

Android 反编译apk,并修改代码后重新签名打包_第4张图片

逻辑比较简单,主界面有一个按钮1,跳转到Button1Activity。

四、如何修改apk,并重新签名打包

1、将目标APK 拷贝到 Apktool文件夹里  ,然后按住shift键 并右键 -- 在此处打开命令窗口,输入以下命令:

      apktool -f [待反编译的apk] -o [反编译之后存放文件夹]       例:apktool.bat d -f test.apk -o test

2、成功后会生成一个文件夹,如下图:

Android 反编译apk,并修改代码后重新签名打包_第5张图片

3、点开test文件夹找到其中smali文件夹并点击,选择MainActivity.smali文件,右键已文本文档的形式打开

Android 反编译apk,并修改代码后重新签名打包_第6张图片

4、打开后你会发现,代码完全开不懂,如何进行修改呢?

    不要着急,将第一步工具下载下来,接下来要做的是在AndroidStudio中导入java转smali的工具,具体步骤如下:

As下左上角找到File -->Settings -->Plugins --> Install Plugin from disk -->选择第一步下载的工具里面的 “ java2smali-1.6.zip ” 并导入 ,见下图:

Android 反编译apk,并修改代码后重新签名打包_第7张图片

5、编写MainActivity.java,并将其转换为MainActivity.smali

Android 反编译apk,并修改代码后重新签名打包_第8张图片

6.转换成功后,替换第3步里面的MainActivity.smali ,还有新增Button2Activity.smali (先写好java文件,然后转换得到)。

通过比较反编译文件,实现上述功能我们对应的只需要改onclick里面的方法,所以我们只替换MainActivity.smali里面onclick方法的部分:

Android 反编译apk,并修改代码后重新签名打包_第9张图片

7.替换布局文件layout见下图:test -- res -- layout 新增Button2Activity的布局文件activity_button2.xml,替换activity_main.xml

Android 反编译apk,并修改代码后重新签名打包_第10张图片

因为activity_button2.xml是我们新加入到layout内部的没有对应的id值,接下来我们要为activity_button2.xml添加id:见下图:

Android 反编译apk,并修改代码后重新签名打包_第11张图片

Android 反编译apk,并修改代码后重新签名打包_第12张图片

8.重新打包apk  在  Apktool 文件夹下(确保test在Apktool目录下),然后按住shift键 并右键 -- 在此处打开命令窗口,输入以下命令:apktool.bat b test (反编译之后存放的文件夹),成功后test文件夹下多了个dist文件夹,里面的apk文件就是重新打包的文件。如下图:

Android 反编译apk,并修改代码后重新签名打包_第13张图片

9.需要对重新打包的apk进行签名,将dist文件夹里的apk文件拷贝到工具:autosign 目录下,见下图:

Android 反编译apk,并修改代码后重新签名打包_第14张图片

10.在autosign目录下,然后按住shift键 并右键 -- 在此处打开命令窗口,输入以下命令:

java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk

成功后会在autosign目录下多出一个test_signed.apk,这个文件就是签名后的文件,接下来安装,验证是否实现我们的功能。

 

以上只是反编译重新打包的简单应用,这个demo仅仅只是个入门,写的不好的地方还请大神们多多指教。

你可能感兴趣的:(Android 反编译apk,并修改代码后重新签名打包)