简单Hook
调用原来的函数
example:
1 | public void onClick(View view) { |
可以看到,如果LoginActivity.a这个函数的返回值等于obj2,则通过验证,obj2为输入框的第二栏,所以我们只要看到obj经过运算后的结果就可以了
hook code:
1 |
|
不调用原来的函数
example
1 | public void onCheck() { |
可以看到,直接修改a的返回值就可以通过check了
hook code
1 | function hook_java(){ |
主动调用函数
1 | function hook_java(){ |
主动设置变量的值
1 | function hook_java(){ |
HOOK内部类的函数
逻辑代码是这样的:
1 | public class FridaActivity extends BaseFridaActivity{ |
可以看到是private内部类
1 | function hook_java(){ |
但是如果有多个check()函数的话,这样太不方便了,有没有可以获取所有函数的方法呢,答案是肯定的
getDeclareMethods() 可以帮助我们获取所有函数的方法
然后再进行字符串截取拼接就可以了
HOOK 动态dex
example如下:
1 | public AbstractC0000CheckInterface getDynamicDexCheck() { |
枚举加载的类
1 | Java.enumerateClassLoaders({ |
frida是不能Java use接口的,要先找到接口实现的名字
1 | Java.choose("com.example.androiddemo.Activity.FridaActivity5", { |
找到名字就可以hook这个实现类
1 | Java.enumerateClassLoaders({ |
然后进行hook check函数
1 | var DynamicCheck = Java.use("com.example.androiddemo.Dynamic.DynamicCheck"); |
HOOK 不同class的函数
1 | function hook_FridaActivity6() { |