安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 移动安全 > 【逆向学习记录】Frida-Hook学习笔记

【逆向学习记录】Frida-Hook学习笔记

时间:2021-01-21来源:未知 作者:安云网点击:
概述 最近接触了很多Frida的Hook的东西,没有时间做详细笔记,这里仅仅针对看过的文章做个记录,以便后续可以翻阅查阅, 仅供自己查阅使用 参考文章 关于SSLpin的hook,这是最全的一篇 https://paper.tuisec.win/detail/e10c553d9c9f0ca 关于
//内容来自安云网

概述

最近接触了很多Frida的Hook的东西,没有时间做详细笔记,这里仅仅针对看过的文章做个记录,以便后续可以翻阅查阅,
仅供自己查阅使用 //本文来自安云网

参考文章

关于SSLpin的hook,这是最全的一篇 https://paper.tuisec.win/detail/e10c553d9c9f0ca
关于Frida 的Hook基本学习的话,这是最全的一篇:http://www.ninoishere.com/frida-learn-by-example/
关于Frida针对的hook详细动手的案例,这里有个不错的案例:https://blog.csdn.net/zouyuanxc/article/details/80492465 //内容来自安云网

Hook常见问题

自己在Hook过程中遇到的问题:
1,interface的接口就不要Hook了,Hook的话需要自己实现一个对象,然后再进行实现 //本文来自安云网

2,关于函数的参数写错了,也不用着急,或者不知道怎么写也不用着急,Overload使用之后,Frida运行过程中,仔细观察Log输出,进行纠正就行了,直接保存,不用重启,Frida会自动读取

Error: c(): specified argument types do not match any of:
        .overload('com.xxx.IHttpCallback')
        .overload('long', 'com.xxxxs.IHttpCallback')
        .overload('java.util.Map', 'com.xxxs.IHttpCallback')
        .overload('java.lang.String', 'com.xxxs.IHttpCallback')
        .overload('java.lang.String', 'java.lang.String', 'int', 'com.xxxs.IHttpCallback')123456

overload有以下几种参数类别,没有必要都记住的,随时都可以参考

    .overload()
    .overload('java.lang.String')
    .overload('android.app.Activity')
    .overload('int')
    .overload('[B') // byte array
    .overload('float')
    .overload('android.content.Context')
    .overload('[C')
    .overload('android.content.Context', 'android.view.View')
    .overload('android.app.Activity', 'com.cherrypicks.hsbcpayme.model.object.PayMeNotification')
    .overload('android.content.Context', 'boolean')
    .overload('android.content.Context', 'int')
    .overload('android.content.Context', 'java.lang.String')
    .overload('android.app.Activity', 'int')
    .overload('java.lang.String', 'java.lang.String')
    .overload('android.content.Context', 'android.graphics.Bitmap')
    .overload('java.lang.String', 'java.io.File')
    .overload('android.content.Context', 'java.lang.String', 'java.util.List')
    .overload('java.lang.String', 'java.lang.String', 'java.lang.String')
    .overload('java.lang.String', '[B', '[B')
    .overload('java.lang.String', 'java.lang.String', 'android.content.Context')
    .overload('android.app.Activity', 'com.cherrypicks.hsbcpayme.model.object.PayMeNotification', 'int')
    .overload('[B', '[B', '[B')
    .overload('android.content.Context', 'java.lang.String', 'java.lang.String')
    .overload('android.app.Activity', 'int', 'int', 'int', 'boolean')12345678910111213141516171819202122232425

3,Hook过程中,同一个包名的PID可能会有多个,没有办法,只能一个一个尝试,一般这种情况下,会有一个主进程,找到那个PID就好了

4,很多时候Hook asset文件会有出其不意的效果,部分代码如下:
使用-U 是不需要进行端口转发的,-R才需要的

frida -U -p xxxxx -l hookA.js1
Java.perform(function () { 
    var AssetManager = Java.use("android.content.res.AssetManager");
    var FileInputStream = Java.use("java.io.FileInputStream");
    AssetManager.open.overload("java.lang.String").implementation = function(str) {
        send("hook asset")
        if(str.endsWith(".xxx")){
            return FileInputStream.$new("/data/local/tmp/xxxxx");
        }
        return this.open(str)
    }});1234567891011

Hook最重要的还是要了解业务,找到特殊的函数,不然空有技术,找不到入口,也是没有用的
找入口的话,可以尝试AndroidStudio的布局,Trace等进行跟踪,进行辅助测试

关于Native的Hook,这个后面再补充,还没有研究好


本文标题: 【逆向学习记录】Frida-Hook学习笔记 安云网
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容