参考文章: https://www.52pojie.cn/forum.php?mod=viewthread&tid=1287307
书接上文,这次我会尝试apk的逆向,找到app不能抓包的原因
如图所示,这个app被360加固了,几经百度,按照开头那篇文章的参考,我们得到了dex文件
将多个dex文件 移动到电脑上
由于有多个dex文件,我们需要合并查看代码
jadx工具: https://github.com/skylot/jadx/
具体代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import os, sys
# python3.7 merge_dex.py ./file/ livedex
if __name__ == "__main__":
if len(sys.argv) < 3 :
print("start error")
sys.exit()
print(sys.argv[1], sys.argv[2])
path = sys.argv[1] #文件夹目录
files= os.listdir(path) #得到文件夹下的所有文件名称
s = []
for file in files: #遍历文件夹
if file.find("dex") > 0: ## 查找dex 文件
sh = 'jadx.bat -j 1 -r -d ' + sys.argv[2] + " " + path + file
print(sh)
os.system(sh)
|
最终结果就是这样了,具体代码就不放了。
经过查看源码,发现是okHttp设置了no_proxy
只需要将这一部分代码hook掉就ok了。
我使用的frida :https://github.com/frida/frida
电脑使用pip install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// 电脑安装frida
pip install frida-tools # CLI tools
pip install frida # Python bindings
// 将frida-server推到手机
adb.exe push .\frida-server-14.0.7-android-arm64 /data/local/tmp/frida-server
// 连接到手机
adb shell
cd /data/local/tmp
// 切到root用户
su
// 修改权限
chmod 777 frida-server
// 执行
./frida-server
|
上面就将手机的frida-server开启了,然后在电脑上试试是否可以成功连接
如果有显示手机相关进程就ok
将自己编写的js代码推到手机 进行 hook
1
|
frida -U --no-pause -f com.showstartfans.activity -l .\showstart.js
|
showstart.js 代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Java.perform(
function () {
var application = Java.use("android.app.Application");
application.attach.overload('android.content.Context').implementation = function(context) {
var result = this.attach(context); // 先执行原来的attach方法
var classloader = context.getClassLoader();
Java.classFactory.loader = classloader;
var Hook_class = Java.classFactory.use("com.taihebase.activity.utils.SecurityUtil");
console.log("Hook_class: " + Hook_class);
Hook_class.getNeedCapturePacket.implementation = function(){
return true;
}
return result;
}
}
)
|
frida关于java的官方文档: https://frida.re/docs/javascript-api/#java
这个时候就可以使用fiddler安心的抓接口了
故技重施~ 又可以流畅的下单购票了。