记第一次Hook(Frida)和Apktool修改安卓程序
1.apltool基础操作:
安卓apk反编译、修改、重新打包、签名全过程 - cnkker.com - 博客园
2.Frida靶场:
Frida练习靶场(上篇) - FreeBuf网络安全行业门户
需要注意的是,在使用apktool时,文件路径不能有空格
Hook
使用的是Frida靶场的第一个题:

将输入与随机数做比较,匹配上就能得到flag,虽然说在CTF比赛中我们通常采用直接分析加密过程来解密,但是如果能熟练使用Hook,应该会更快一些。
1.我选择Hook get_random函数,可以Hook生成数,也可以覆盖为自定义数
选中函数,右键可以直接复制为Frida片段:
1 | let MainActivity = Java.use("com.ad2001.frida0x1.MainActivity"); |
套上:
Java.perform(function(){
frida片段
});
在命令行使用frida -U -f 包名 -l test.js 就可以Hook上。
apktool篡改:
已经下好了apktool并写入了环境变量
反编译指令:
1 | apktool d xxx.apk -o output_dir |
编译指令:
1 | apktool b output_dir -o test.apk |
签名:
生成keystore文件(java环境自带keytool):
1 | keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore |
签名apk:
1 | jarsigner -verbose -keystore demo.keystore test.apk demo.keystore |
篡改smali:
源文件:

可以修改返回值:
修改返回值为0x1,即只要输入6就一定正确。