apk反编译,注入smali代码,编译及重签名。

apk反编译,注入代码,编译及重签名。

  1. 下载apktool
    链接:https://pan.baidu.com/s/12eHW1vFqZVKOEmEb2I-sXA
    提取码:mrbq
    以下的apktool_2.3.1均更改为2.4.1(因为2.3.1在build的时候会出错,可能是jdk版本不对,我这里的jdk版本是14.0.2)

  2. 解压下载的文件,得到如下两个文件:
    apk反编译,注入smali代码,编译及重签名。_第1张图片

  3. 在以上解压的目录中输入cmd,回车,进入命令行

apk反编译,注入smali代码,编译及重签名。_第2张图片
命令行中输入:

apktool.bat

apk反编译,注入smali代码,编译及重签名。_第3张图片
则表示可以使用。(PS:已经安装了java的环境并设置了环境变量,我使用的是jdk1.14)apk反编译,注入smali代码,编译及重签名。_第4张图片
4. 关闭之前打开的命令行,并按照3中的步骤打开新的命令行(一个新打开的命令行只能运行一次apktool),此时我已经将test的apk移入当前文件夹(可以不移)

输入命令:apktool.bat d [apk路径] -o [生成反编译文件路径] 如:

apktool.bat d apktest.apk -o output

apk反编译,注入smali代码,编译及重签名。_第5张图片
apk反编译,注入smali代码,编译及重签名。_第6张图片apk反编译,注入smali代码,编译及重签名。_第7张图片
5. 打开AndroidManifest.xml文件,查找 android:name=“android.intent.action.MAIN”/,

apk反编译,注入smali代码,编译及重签名。_第8张图片
找到
前面的的android:name="com.xiaomi.aischedule.AiApplication,即为本app的入口文件,然后根据该路径找到对应的smali文件。若找不到,则依次为:android:name="com.xiaomi.aischedule.main.MainActivity"为入口文件。
apk反编译,注入smali代码,编译及重签名。_第9张图片
打开后,找到oncreate函数。
apk反编译,注入smali代码,编译及重签名。_第10张图片
在最后的return void之前加入需要植入的smali代码:

const-string v0, "You\' ve succeeded in Cracking"

const/4 v1,0x1

invoke-static {p0,v0,v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

move-result-object v0

invoke-virtual {v0}, Landroid/widget/Toast;->show()V

apk反编译,注入smali代码,编译及重签名。_第11张图片
把第二行的locals 2 加1,即改为locals 3. 保存。
该段smali的功能为在打开软件时弹出一个toast,没有用到任何权限,因此不需要更改manifest文件。
如果注入其他需要使用到权限的代码,则还需要修改manifest文件,后续提出。

  1. 编译成apk文件。
    还是在apktool.bat路径下,打开命令行。
    输入命令:
apktool.bat b output

apk反编译,注入smali代码,编译及重签名。_第12张图片
在output的dist文件夹中会得到:
apk反编译,注入smali代码,编译及重签名。_第13张图片
7. 对其生成的apktest.apk进行签名

划重点:这里一定要对apk进行签名,不然会报错:Error:Could not parse error string

这里使用安卓手机软件 ZipSigner app:
下载链接:
链接:https://pan.baidu.com/s/1HiQ4hzSLHi1SMCVIxsO9HA
提取码:047z
安装后:
apk反编译,注入smali代码,编译及重签名。_第14张图片
apk反编译,注入smali代码,编译及重签名。_第15张图片
apk反编译,注入smali代码,编译及重签名。_第16张图片
apk反编译,注入smali代码,编译及重签名。_第17张图片

你可能感兴趣的:(反编译,apk,windows,jdk)