针对混淆App进行Hook

了解基本信息
Image.png

这里安装尝试几次抓包后发现无法抓包
得知未有加固,直接jadx,看到OKhttp3展开
Image.png


这里以Xposed JustTrustMePlus为例,我们看他如何做处理的,他会去Hook okhttp3.CertificatePinner下面的check方法,然后在Hook OkHostnameVerifie下面的verify方法

Image.png

假如App将上面两个方法的名字改掉,是不是就无法Hook到了?,肯定是Hook不到。OKhttp3并非系统函数或类 所以是可以改的,在编译后需要打包到App,App里面的代码就是他的代码,但并非都可以修改
如果是混淆了代码JustTrustMe就Hook不到了,但是对于系统中有的函数比如httpurlconnection等系统自带的 一般是不会去修改方法名的


这里使用fridaHook,在Hook之前就需要确定,他原先的CertificatePinnerchack方法是什么名字,在Hook的时候相应替换就可以了

这里就需要在了解下OKhttp他的方法名是什么,我们看okhttp有个的类
Image.png

类下面有个check方法,在类下有多个check的重载,我们只需要参数是String和List的,返回是void的,里面带有sha256 sha1的字符串,这个就是我们要的检测函数
在这个类下的所有方法名都有可能会被修改掉,但类型是无法修改的,List是系统类 里面单书名号是Java的泛型用来指定具体容器里面用来放什么类型的数据,在这里我们可以使用jadx进行搜索
Image.png

jadx搜索结果,第一个就是
Image.png

g就是被修改掉的certifiPinner类名 ,a就是被修改的check方法名,这里我们用frida hook okhttp3.g.a就可以了,将函数下的内容直接干掉就可以了(整个方法都是用来做检测的),将函数变成console.log输出一下就可以了,表示调用了

Image.png

具体代码如下:

Java.perform(function(){

    var g = Java.use('okhttp3.g')
    g.a.overload('java.lang.String','java.util.List').implementation = function(a,b){
        console.log('checkFunc is call',a);
    }
    console.log('Star');
});

效果:
未Hook
Image.png

Hook后
就可以使用小黄鸟抓了,也可以使用

Image.png

本文链接:

https://www.linqi.net.cn/index.php/archives/101/