zoukankan      html  css  js  c++  java
  • ios dylib反检测系统api

    
    #import "fishHookDemo.h"
    #import "fishhook.h"
    #import <mach-o/dyld.h>
    #include<string.h>
    
    @implementation fishHookDemo
    
    char *arr[1000];
    
    + (void)load{
        struct rebinding ptracebd, db_name;
        // 要hook的方法名
        ptracebd.name = "_dyld_image_count";
        db_name.name = "_dyld_get_image_name";
    
        // 保存原来方法的地址
        ptracebd.replaced = (void *)&dyld_image_count_p;
        db_name.replaced = (void *)&dyld_get_image_name_p;
    
        // 新方法
        ptracebd.replacement = my_dyld_image_count;
        db_name.replacement = my_dyld_get_image_name;
    
         
        struct rebinding bds[] = {ptracebd, db_name};
        rebind_symbols(bds, 2);
    //    _dyld_get_image_name()
    }
     
    // 函数指针
    uint32_t (*dyld_image_count_p)(void);
    const char* (*dyld_get_image_name_p)(uint32_t image_index);
    
    uint32_t my_dyld_image_count(void){
        int dyCount = dyld_image_count_p();
        // 新计数
        int index = 0;
        for (int i = 0; i < dyCount; i++) {
            // 获取原始dylib库
            char * imageName = dyld_get_image_name_p(i);
            NSString *res = [NSString stringWithUTF8String:imageName];
            NSLog(@"dylib String-->:%@",res);
            // 过滤敏感dylib
            if (![res containsString:@"xxx.dylib"]) {
                arr[index++]=imageName;
    //         strcpy(arr[index++],imageName);
            }
    
    
            
              
           }
        return index;
    }
    const char*   my_dyld_get_image_name(uint32_t image_index){
        return arr[image_index];
    }
    
    @end
    本文章仅供学习参考,如有版权侵犯,请联系作者修改,转载请注明出处!
  • 相关阅读:
    python基础知识
    常见的python练习题
    常用的Git命令
    使用MySQL命令行备份和恢复数据库
    常用的MySQL命令
    常用的Linux命令
    Python 3 配置文件处理
    Python 3 MySQL数据库操作
    Python3 MySQL
    python BeautifulSoup4--例子
  • 原文地址:https://www.cnblogs.com/HugJun/p/15251760.html
Copyright © 2011-2022 走看看