以下仅做我在hook 中的记录,

环境 VM PRO 15

  MAC OS 15

  Xcode 11.2

工具 monkeydev

  install_name_tool

  otool

思路:将要hook 的dylib,注入到我们新建的xcode工程中,然后拿着protuct 放到monkeydev 里去正常hook。

1.将dylib扔进hopper,发现有一个RobborVC,随新建一个Xcode工程,在viewDidAppear中,present进RobborVC,

        Class cls =NSClassFromString(@"RobotVc");
id Vc = [[cls alloc]init];
[self presentViewController:Vc animated:YES completion:^{ }];

1.使用 0tool -l 查看dylib 的依赖路径,如下图,发现dylib 还依赖了一个libsubstrate.dylib,

2.将上面两个dylib 拖入新建Xocde的根目录中

3.使用install_name_tool修改dylib 依赖路径,

install_name_tool [-id name] input 修改对自身的依赖

install_name_tool [-change old new] input 修改对第三方库的依赖

如:

install_name_tool -id  @@executable_path/Frameworks/CXZDZW.dylib /Users/jack/Desktop/testDLb/CXZDZW.dylib
install_name_tool -change @loader_path/libsubstrate.dylib /Users/jack/Desktop/testDLb/libsubstrate.dylib

4.载build phases 新增 run script 增加bash脚本,进行copy dylib进 $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH  目录下,并签名


if [-f $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/CXZDZW.dylib];then
  rm -rf $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/CXZDZW.dylib
  fi
  if [-f $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/libsubstrate.dylib];then
  rm -rf $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/libsubstrate.dylib
  fi

if [[ "${CONFIGURATION}" == "Debug" ||  "${CONFIGURATION}" == "DailyBuild" ]]; then
echo "begin copy CXZDZW dylibs into product"
cp -R $PROJECT_DIR/CXZDZW.dylib $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH
cp -R $PROJECT_DIR/libsubstrate.dylib $BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH
if [ "${CODE_SIGNING_REQUIRED:-}" != "NO" ]; then
/usr/bin/codesign --force --sign "${EXPANDED_CODE_SIGN_IDENTITY}" "$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/CXZDZW.dylib"
/usr/bin/codesign --force --sign "${EXPANDED_CODE_SIGN_IDENTITY}" "$BUILT_PRODUCTS_DIR/$FRAMEWORKS_FOLDER_PATH/libsubstrate.dylib"
fi
fi

5.找到.app文件,拖入monkeydev中,hook 即可

ps:草稿箱好多半成品文章。。。。

HOOK别人的dylib(HOOK cydia里面的插件)的更多相关文章

  1. 不需要Root即可Hook别人APP的方法

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. HOOK API入门之Hook自己程序的MessageBoxW(简单入门)

    说到HOOK,我看了很多的资料和教程,无奈就是学不会HOOK,不懂是我的理解能力差,还是你们说的 不够明白,直到我看了以下这篇文章,终于学会了HOOK: http://blog.sina.com.cn ...

  3. Android so注入(inject)和Hook技术学习(二)——Got表hook之导入表hook

    全局符号表(GOT表)hook实际是通过解析SO文件,将待hook函数在got表的地址替换为自己函数的入口地址,这样目标进程每次调用待hook函数时,实际上是执行了我们自己的函数. GOT表其实包含了 ...

  4. windows hook + pyhook3 + python win32api hook + C 键盘hook

    安装pyhook3见:https://www.cnblogs.com/lqerio/p/12096710.html 使用见:https://www.cnblogs.com/lqerio/p/12106 ...

  5. Android C/C++层hook和java层hook原理以及比较

    作者:Denny Qiao(乔喜铭),云智慧/架构师. 云智慧集团成立于2009年,是全栈智能业务运维解决方案服务商.经过多年自主研发,公司形成了从IT运维.电力运维到IoT运维的产业布局,覆盖ITO ...

  6. 防止被dylib hook的小技巧

    在Build Settings中找到“Other Linker Flags”在其中加上”-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null”即可.

  7. 微信 电脑版 HOOK(WeChat PC Hook)- 技能点

    CE 扫描内存数据OD 动态分析代码IDA 静态分析代码汇编 阅读OD和IDA的代码 编写inline hookC/C++ 编写dll 编写主程序逻辑MFC 编写主程序界面 源码: https://g ...

  8. Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...

  9. HOOK技术之SSDT hook(x86/x64)

    x86 SSDT Hook 32位下进行SSDT Hook比较简单,通过修改SSDT表中需要hook的系统服务为自己的函数,在自己的函数中进行过滤判断达到hook的目的. 获取KeServiceDes ...

  10. 安卓逆向HOOK 3.系类HOOK

    package xphok; import java.lang.reflect.Method; import java.security.MessageDigest; import java.text ...

随机推荐

  1. uniapp中正确使用echart

    uniapp中不能直接使用百度echart,要么就只能嵌入html,然后在html中进入echart进行使用,这样非常不方便, 下面介绍这个插件,对百度echart进行局部小改造,使他能在uniapp ...

  2. cesium教程7-官方示例翻译-模型要素选择

    源代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. blocks (单调栈)

    题目描述 解析 对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平 均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于 ...

  4. TypingLearn解决了我在学习英语中的一大痛点

    上一次在博客园发贴还是在上一次(2021年),那个时候博客园就遇到了危机(被罚款).彼时在疫情期间,我个人生活也受到了影响,先后去了多个城市,最终在上海找到了 .NET Web开发的岗位,还是比较幸运 ...

  5. NumPy 正态分布与 Seaborn 可视化指南

    正态分布(高斯分布) 简介 正态分布(也称为高斯分布)是一种非常重要的概率分布,它描述了许多自然和人为现象的数据分布情况.正态分布的形状呈钟形,其峰值位于平均值处,两侧对称下降. 特征 正态分布可以用 ...

  6. Xenocode Postbuild——C#代码混淆器使用方法

    安装 不多作赘述 使用步骤 选择[application]选项卡,选择[add],如果添加的是exe,则[Preset]选择第一项,添加的是dll则选择第二项 选择[Protect]选项卡,将两个都勾 ...

  7. 使用kubadm部署一套k8s学习平台环境

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  8. 【论文笔记】轻量级网络MobileNet

    [深度学习]总目录 MobileNet V1:<MobileNets: Efficient Convolutional Neural Networks for MobileVision Appl ...

  9. vuex中的数据在页面刷新后数据消失

    用sessionstorage 或者 localstorage 存储数据 存储: sessionStorage.setItem( '名', JSON.stringify(值) ) 使用: sessio ...

  10. 引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionException解决

    引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionException解决 [172.16.22.215] out: C ...