samlee1
(王子七七七)
1
聊一聊 iOS中 所谓的”无痕”hook,和在黑产中的历史。
最近看到群里在聊关于hook检测的问题,一般最常见的检测手段是读取目标地址text 段的函数 前几个字节 是否为跳转指令,从而判断目标函数是否被hook,这里攻击者一般会采用 自己构造一个类似简易调试器的东西,将目标函数text段改成 只读属性,这里一般按一个内存页去改,然后当目标函数被调用 则会产生异常,然后在劫持的线程中进行异常拦截,然后再自己实现hook。这一套所谓的“无痕”hook 其实早在windows中已经广泛使用了,iOS 中虽然最近才看到有人在讨论,其实在业内估计早就被用烂了,因为这是对抗hook 比较简单的一种实现方式,最近心血来潮 ,翻了以前一个外挂作者写的样本,发现这种对抗技术在2020年底的时候已经被应用在了游戏外挂开发中了,当然这个作者在今年也被警察叔叔抓了,以后估计也是铁窗生涯了,这都是后话了。洋洋洒洒说了这么多,主要是为了抛砖引玉,希望大家聊聊 有什么更好的hook 检测对抗 ,比如硬件断点什么的
gfbdg
(lkttle)
4
这种无痕hook之类的技术确实是PC时代的想法,但是其实很难移植到移动端,而且移动端会这么做的人更少,因此别人真的成功实现了,其实检测方一时间很难检测到
samlee1
(王子七七七)
5
已经好几年了 早就有人实现了 也不是什么困难的事情
关于这个事,我简单说两句,至于我的身份,你明白就行,总而言之,这个事呢,现在就是这个情况,具体的呢,大家也都看得到,我因为这个身份上的问题,也得出来说那么几句,可能,你听的不是很明白,但是意思就是那么个意思,我的身份呢,不知道的你也不用去猜,这种事情见得多了,我只想说懂得都懂,不懂的我也不多解释,毕竟自己知道就好,细细品吧。你们也别来问我怎么了,利益牵扯太大,说了对你我都没好处,当不知道就行了,其余的我只能说这里面水很深,牵扯到很多东西。详细情况你们自己是很难找的,网上大部分已经删除干净了,所以我只能说懂得都懂。懂的人已经基本都获利上岸什么的了,不懂的人永远不懂,关键懂的人都是自己悟的,你也不知道谁是懂的人也没法请教,大家都藏着掖着生怕别人知道自己懂事,懂了就能收割不懂的,你甚至都不知道自己不懂。只是在有些时候,某些人对某些事情不懂装懂,还以为别人不懂。其实自己才是不懂的,别人懂的够多了,不仅懂,还懂的超越了这个范围,但是某些不懂的人让这个懂的人完全教不懂,所以不懂的人永远不懂,只能不懂装懂,别人说懂的都懂,只要点点头就行了,其实你懂的我也懂,谁让我们都懂呢,不懂的话也没必要装懂,毕竟里面牵扣扯到很多懂不了的事。这种事懂的人也没必要访出来,不懂的人看见又来问七问八,最后跟他说了他也不一定能懂,就算懂了以后也对他不好,毕竟懂的太多了不是好事。所以大家最好是不懂就不要去了解,懂太多不好。
很好,你是个明白人,我明白你明白的意思。我也是明白人,明白人就应该明白我明白你明白的意思。只要大家都明白明白人应明白我明白你明白的意思,这样网络环境就是充满明白人,所明白的我明白你明白的明白,明白吗?
samlee1
(王子七七七)
9
[quote=“你开始的地方, post:8, topic:24094, full:true, username:SuperChaosM”]
很好,你是个明白人,我明白你明白的意思。我也是明白人,明白人就应该明白我明白你明白的意思。只要大家都明白明白人应明白我明白你明白的意思,这样网络环境就是充满明白人,所明白的我明白你明白的明白,明白吗?
[/quote]这是在讽刺没给代码吗 代码给出来 也应用不了 因为这种技术存在几年了。早就失效了
不敢不敢,大佬的样本是否可以发出来看看;让我了解下;
samlee1
(王子七七七)
13
我不清楚你这个说的有没有错,“将目标函数text段改成 只读属性”,一般情况下text段不就是只读的吗?
gfbdg
(lkttle)
15
代码段除了读属性,一般还有一个可执行属性。相比于无痕hook,其实我觉得搞一个兼容短函数的hook更实用些,目前没啥好的hook框架兼容短函数的hook
gfbdg
(lkttle)
17
有时候做一些大批量hook,里面某些系统函数其实是短函数,还得特别处理,挺麻烦