非越狱下IOS hook方式

工具名称用途区别备注

theos、iosOpenDev生成dylib

insert_dylib、optool、yololib向二进制文件插入dylib

install_name_tool

修改dylib引用路径

iResign、sigh resign、codesign等重签名工具修改后的二进制文件是需要重签名的


二、过程

1、生成dylib

dylib的生成 可采用theos,也可采用iosOpenDev。

theos是越狱专门开发用的工具,生成的dylib可直接作用于越狱机器上。

但theos并不是apple源生支持的工具,它在Mac端编译生成deb包,安装进IOS系统,由IOS系统dpkg安装成插件模式 并随之生成dylib。theos在Mac端需要调用IOS开发SDK,目前无法调用9.3以上的SDK,theos工具没有更新。

iosOpenDev则是apple官方支持的插件生成工具,可直接由Xcode生成。

这种dylib由两种 CaptainHookTweak、Logos Tweak.


不过这两种没什么区别:Logos Tweak的语法较为简单 同theos的一致,CaptainHookTweak较为复杂。


2、插入dylib

这三种工具 均可向二进制文件插入dylib 不过各有千秋

yololib仅能对64位的二进制文件 插入 32位插入也能成功 但是 出现如下


insert_dylib既可以对64位 也可以对32位进行插入 同时 还会供选择 是否删除掉二进制文件原有的签名 即 LC_CODE_SIGNATURE


optool 则功能更强大 可供选择 是插入哪种LC LIB。本例暂用不上。

3、修改dylib引用

插入dylib后 需要对它添加cydiaSubstrate dylib的引用。即使用install_name_tool这个工具

之前就是这个地方没有做 导致签名后的文件 一直安装出现闪退 dylib也没有调用

由于目前手头没有越狱手机 之前没有调出过cydiaSubstrate dylib 所以这个步骤暂时中断(最主要 每个越狱版本系统的cydiaSubstrate dylib都是不一样的 目前没有可越狱的系统 也就没有对应的dylib)

不过 可细想 因为越狱手机上 是自己存在这个cydiaSubstrate dylib的 所以 theos插件本身不必再导入这个dylib,直接对其添加引用即可。

然而 在非越狱手机上 就需要自己把这个cydiaSubstrate dylib放进app包里 并手头添加它的引用路径了

既然这样 那apple 源生的iosOpenDev为什么还要出开发dylib的工具呢

那是因为apple 推出iosOpenDev生成dylib 根本不是让你这样玩的  apple是让你把这个dylib添加进IOS工程里 在工程里对其添加引用 如果以后该app有少量的更新 只需要更新这个dylib即可 而不必更新整个app。这个在IOS开发中 叫做 增量更新。

在完全不使用cydia提供的hook接口的基础上 也可以使用openDev使用的hook接口

操作如下:

a:将 dylib(如需要调用cydia substrate 的 MSHOOK函数 则 还需要添加cydia substrate dylib)到app包里;

b:insert工具插入。注意这里有一个坑 就是凡是复制到dylib里的包 除了使用install_name_tool对其添加引用外 插入到Mach-O LOAD COMMANDS里的dylib还需要添加可执行路径

首先需要cd进app包里

然后/Users/danchen/desktop/diff_hook/insert_dylib@executable_path/ios_hook.dylibhook_demo hook_demo

c:之后重签名

对app包里每一个修改的添加的文件进行签名

codesign -f -s "iPhone Developer:694708086@qq.com(T4MM3JZDL2)" hook_demo

codesign -f -s "iPhone Developer:694708086@qq.com(T4MM3JZDL2)" ios_hook.dylib



再对整个app包添加签名权限

codesign -f -s "iPhone Developer:694708086@qq.com(T4MM3JZDL2)" --entitlements entitlements.plist hook_demo.app

直接安装app包即可,也可以使用xcrun将其打包成ipa 安装即可


dylib里的内容


4、重签名

完成这些步骤后

首先 要对 修改过的二进制文件、dylib、cydiaSubstrate dylib进行重签名 即把iPhone Developer:694708086@qq.com(T4MM3JZDL2) 写入进去

然后 使用xcrun将app文件 打包成ipa 使用iResign、sigh resign等工具 对ipa包重签名 再安装进系统

重签名权限文件entitlements.plist

可使用ldid -e 二进制文件查看entitlements文件内容生成


三、区别

theos与iosOpenDev

区别theosiosOpenDev备注

来源越狱开发作者appletheos来自第三方开发,iosOpenDev则是apple官方Xcode支持的

UI无Xcodetheos没有开发UI界面,iosOpenDev的开发界面是Xcode

版本支持目前theos仅支持SDK IOS9.3以下都支持两者调用SDK,theos仅支持SDK9.3以下,目前theos作者尚未更新工具

hook 语言方式Logos TweakLogos Tweak、CaptainHookTweak

insert_dylib、optool、yololib工具差别

区别insert_dyliboptoolyololib备注

支持结构64、32位都支持64、32位都支持仅支持64位

四、总结

这种方式仅能hook app自身进程里所调用的函数 无法hook系统级别的进程

由于非越狱上的沙盒机制,本地app仅能访问本app数据,无法访问别的app的数据,访问系统数据(相册、地理位置等)也需要向用户请求权限。更别说去hook系统级别的进程。

当然 存在非越狱下 绕过沙盒机制的技术:http://chuansong.me/n/2248208

比如这个人 非越狱下一个app卸载另一个app、一个app获取领一个app里的文件内容。但这种漏洞技术没有公开 仅存在于越狱团队内部。而且这种漏洞技术也没能hook系统级进程。

理论上来讲 非越狱下hook系统级别的进程 是有可能的 只不过难度相当大(换言之 如果真有这种非越狱下就能hook系统级别的漏洞和技术的话 越狱团队干嘛还费那大力气去越狱呢)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容