frida-notebook

1、hook函数,获取java层某个函数的返回值

1
2
3
if (1000 == MainActivity.this.cnt) {
tv3.setText("SECCON{" + String.valueOf((MainActivity.this.cnt + MainActivity.this.calc()) * 107) + "}");
}

calc为native层的函数,可以直接hook onCreate方法,重新实现onCreate方法,调用calc方法,获得返回值

1
2
3
4
5
6
7
8
9
10
//Java.Perform 开始执行JavaScript脚本。
Java.perform(function () {
var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');
MainActivity.onCreate.implementation = function () {
var returnValue = this.calc();//调用MainActivity.calc()
send("Return:"+returnValue);
var result = (1000+returnValue)*107;
send("Flag:"+"SECCON{"+result.toString()+"}");
}
});

2、hook函数,修改java层变量的值

1
2
3
4
5
6
7
8
9
10
11
12
Java.perform(function () {
var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');
//hook onClick方法,此处要注意的是onClick方法是传递了一个View参数v
MainActivity.onClick.implementation = function (v) {
//调用onClick,模拟点击事件
this.onClick(v);
this.n.value = 0;
this.m.value = 2;
this.cnt.value = 999;
send("Success!")
}
});