zoukankan      html  css  js  c++  java
  • 关于 iOS HOOK

    1.安装 iOSOpenDev,下载地址,选择“iOSOpenDev 1.6-2 Installer”,直接安装“iOSOpenDev-1.6-2.pkg”,这个一般第一次安装都会失败。

    安装失败了,请参考解决方案1地址,法案2地址,方案3地址

    2.安装完后,在xcode新建一个项目会看到下图选项

    这里选择CaptainHook Tweak新建一个名为hook的项目

    3.导入一些依赖库Cycript.framework、libstdc++.6.0.9.tbd、libsqlite3.0.tbd、JavaScriptCore.framework,并且在Build Settings里面的搜索bitcode,将Enable Bitcode选项设为NO

    4.hook.mm文件写入如下代码(备注1把之前默认生成的代码删除或者注释,备注2 XXAppDelegate需要看你hook的应用的AppDelegate加什么前缀,如果没有前缀就就AppDelegate。微信是以MicroMessenger前缀,至于为啥知道这个前缀,请使用class-dump在微信的Mach-O文件中的头文件信息提取出来,生成对应的.h文件)

    #import <Cycript/Cycript.h>
    #import <CaptainHook/CaptainHook.h>
    
    #define CYCRIPT_PORT 8888
    
    CHDeclareClass(XXAppDelegate);
    CHDeclareClass(UIApplication);
    
    CHOptimizedMethod2(self, void, XXAppDelegate, application, UIApplication *, application, didFinishLaunchingWithOptions, NSDictionary *, options)
    {
        CHSuper2(XXAppDelegate, application, application, didFinishLaunchingWithOptions, options);
        
        NSLog(@"## 我要hook了 ##");
        CYListenServer(CYCRIPT_PORT);
    }
    
    __attribute__((constructor)) static void entry() {
        CHLoadLateClass(XXAppDelegate);
        CHHook2(XXAppDelegate, application, didFinishLaunchingWithOptions);
    }

     5.build (记得选择用真机,不要用模拟器)。build 完后的结果会放在 Xcode 项目缓存目录 ~/Library/Developer/Xcode/DerivedData,打开这个文件夹后找到前缀和项目名一致的文件夹,找到里面的 Build/Products/Debug-iphoneos ,把 hook.dylib hook.dylib.dSYM 两个文件先拷贝出来待用。

    6.1.你要hook的应用需要脱壳的应用或者企业级应用,脱壳需要越狱手机,没有的话也不碍事,去pp助手等第三方软件找到脱壳的应用(以微信为例)

    6.2.找到应用对应的二进制文件,查看包含哪些架构,终端输入:

    file /Users/xxx/Desktop/HOOK/微信-6.6.5(越狱应用)/Payload/WeChat.app/WeChat

    输出如下,看到微信包含两个架构armv7和arm64

    6.3.可以使用otool来输出app的load commands,查看cryptid标志位来判断app是否被加密:1代表加密,0代表被解密

    otool -l /Users/xxx/Desktop/HOOK/微信-6.6.5(越狱应用)/Payload/WeChat.app/WeChat | grep -B 2 crypt

    输出如下:

    6.4.还有一个重要的一点,删除WeChat.app/下的PlugIns和Watch文件(因为微信有多个targets,会导致下面的安装ipa还是会闪退)

    6.5.使用yololib工具对二进制文件进行dylib的注入,终端输入:

    ./yololib /Users/xxx/Desktop/HOOK/Payload/你要hook的应用名.app/你要hook的应用名 hook.dylib

    7.使用MachOExplorer软件查看loadCycript.dylib是否注入成功(这里不推荐使用MachOView,因为它不更新了,还TMD经常闪退这是不能忍受的)

    8.将我们注入的dylib文件放到注入的应用的GAMECO.app目录下,终端输入:

    cp hook.dylib /Users/xxx/Desktop/HOOK/Payload/你要hook的应用名.app/

    9.重签名应用,推荐使用名为iOS App Signer的Mac上的应用,当然也可以用命令行进行重签名,请参考

    10.使用mobiledevice工具安装重签名的ipa,终端输入:

    ./mobiledevice install_app xxx.ipa

    11.打开刚才安装hook后的应用,使用蒲公英或者其他的软件查看log,可以看到我们hook的log信息

  • 相关阅读:
    如何用消息系统避免分布式事务?
    jvm调休,监控
    ClassLoader原理
    JVM结构、GC工作机制详解
    单链表倒置
    hashSet
    HashMap
    hashcode
    深入理解HTTP协议、HTTP协议原理分析
    HTTP协议(详解一)
  • 原文地址:https://www.cnblogs.com/DWdan/p/8510177.html
Copyright © 2011-2022 走看看