zoukankan      html  css  js  c++  java
  • android hook native函数

    大概2年前写的代码,今天突然要用到,找了半天,这里记录下

    用到的库: https://pan.baidu.com/s/1htuUQX2

    #include <jni.h>
    #include <string>
    #include <dlfcn.h>
    
    typedef  int  (*  pfnMSHookFunction)(void* result, void* a2, void** a3);
    
    int Aaaaaa(jint a, jint b)
    {
    
        int bRet = 0;
        bRet = a/3;
        return  bRet;
    }
    
    extern  "C"
    JNIEXPORT
    
    int  Java_aaa_aaa_MainActivity_test(jint a,jint b)
    {
        FILE *fp = fopen("1.txt", "rb");
        if (0 != fp)
        {
            printf("111");
        }
    
      return   Aaaaaa(a, b);
    }
    
    
    typedef FILE*    (*pfnmyfopen)(const char *, const char *);
    pfnmyfopen porg = 0;
    
    //fake 函数
    FILE    *myfopen(const char * name, const char * flag)
    {
        FILE* fret = 0;
        fret =  porg(name,flag);
        return  fret;
    }
    
    //这里用的是substrate
    void initHook()
    {
       void* phandle =dlopen("libhook.so",RTLD_NOW );
        pfnMSHookFunction pmsHook=(pfnMSHookFunction)dlsym(phandle,"MSHookFunction");
        pmsHook((void*)fopen,(void*)myfopen,(void**)&porg);
    
    
    }
    
    jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
    {
        JNIEnv* env = 0;
        jint result = -1;
    
        if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK)
        {
            return -1;
        }
    
        initHook();
    
        result = JNI_VERSION_1_4;
    
        return result;
    }
  • 相关阅读:
    李晋的YIM每日签名
    C语言的基础知识
    数据库的分页方法总结
    C#操作XML的代码
    ASP文件操作的类
    spring配置文件的基本语法
    预测球队比赛成绩
    文件的读写和我的第一个网页
    python中关于turtle库的学习笔记
    python科学计算与可视化
  • 原文地址:https://www.cnblogs.com/fply/p/8426300.html
Copyright © 2011-2022 走看看