第一次fridaHook

写在前面

用的是frida官方文档里面了的一道安卓题,脚本也是

本文只是记录自己第一次使用frida进行hook所踩的坑。

apk分析

image-20230728153920868

逻辑倒是十分明显,你赢1000次就可以得到flag,游戏本体是一个剪刀石头布的游戏。

calc方式使用了native,可以查看apk包中的so文件:

image-20230728154103074

只是单纯的返回个7

其实到这flag就有了:

SECCON{(1000 + 7) * 107的结果}

hook

那hook点明白,在包体com.example.seccon2015.rock_paper_scissors中的MainActivity方法中,使用官方的hook.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Java.perform(() => {
// 在这定义一个const声明的变量,保存要hook的类
const MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');

// 一个常量,记录触发的方法
const onClick = MainActivity.onClick;
//重载onClick方法
onClick.implementation = function (v) {
// Show a message to know that the function got called
send('onClick');

// 原onClick方法的调用
onClick.call(this, v);

// 调用结束后,对数据进行改变
this.m.value = 0;
this.n.value = 1;
this.cnt.value = 999;

// Log to the console that it's done, and we should have the flag!
console.log('Done:' + JSON.stringify(this.cnt));
};
});

使用命令行进行hook:

frida -U -f com.example.seccon2015.rock_paper_scissors -l .\hook.js

98341301c5b833565d025928fe4c8b0

踩的坑

1.frida_server启动失败

主要是自己sb,看进程不用psps -ef,这东西记录的太全了,让我以为frida启动成功了

已经是root权限,像着linux那样启动文件:su ./frida-server

笑死,根本启动不了

正常启动就行

如果手机中的frida-server启动了,但还是unable to connect to remote frida-server

adb forward tcp:27042 tcp:27042转发一下端口,如果还不行,把042全改成043,注意手机每次重新连接都要转发。

如果你是用WIFI来进行hook,hook时候多个参数-H。

2.python脚本执行不成功

不知道为啥官方的脚本会有问题,xman建议是使用命令行