apk反编译,注入代码,编译及重签名。
-
下载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) -
解压下载的文件,得到如下两个文件:
-
在以上解压的目录中输入cmd,回车,进入命令行
命令行中输入:
apktool.bat
则表示可以使用。(PS:已经安装了java的环境并设置了环境变量,我使用的是jdk1.14)
4. 关闭之前打开的命令行,并按照3中的步骤打开新的命令行(一个新打开的命令行只能运行一次apktool),此时我已经将test的apk移入当前文件夹(可以不移)
输入命令:apktool.bat d [apk路径] -o [生成反编译文件路径] 如:
apktool.bat d apktest.apk -o output
5. 打开AndroidManifest.xml文件,查找 android:name=“android.intent.action.MAIN”/,
找到
前面的的android:name="com.xiaomi.aischedule.AiApplication,即为本app的入口文件,然后根据该路径找到对应的smali文件。若找不到,则依次为:android:name="com.xiaomi.aischedule.main.MainActivity"为入口文件。
打开后,找到oncreate函数。
在最后的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
把第二行的locals 2 加1,即改为locals 3. 保存。
该段smali的功能为在打开软件时弹出一个toast,没有用到任何权限,因此不需要更改manifest文件。
如果注入其他需要使用到权限的代码,则还需要修改manifest文件,后续提出。
- 编译成apk文件。
还是在apktool.bat路径下,打开命令行。
输入命令:
apktool.bat b output
在output的dist文件夹中会得到:
7. 对其生成的apktest.apk进行签名
划重点:这里一定要对apk进行签名,不然会报错:Error:Could not parse error string
这里使用安卓手机软件 ZipSigner app:
下载链接:
链接:https://pan.baidu.com/s/1HiQ4hzSLHi1SMCVIxsO9HA
提取码:047z
安装后: