ios – 防止方法调整Objective-c

ios – 防止方法调整Objective-c,第1张

概述我试图搜索以防止我当前库中的方法Swizzle,但我或多或少发现每个文档或博客文章是关于如何实现Swizzling. 关于Method swizzling,我有几个问题,我无法找到所有问题. >如何检测运行时Swizzling的方法? >如果有一个方法Swizzle如何防止它? 我知道方法调整的危险,并且已经通过这里的相关帖子但是找不到相关信息来阻止它. 如果上述主题中有任何文档或博客文章,我将非 我试图搜索以防止我当前库中的方法Swizzle,但我或多或少发现每个文档或博客文章是关于如何实现Swizzling.
关于Method swizzling,我有几个问题,我无法找到所有问题.

>如何检测运行时Swizzling的方法?
>如果有一个方法Swizzle如何防止它?

我知道方法调整的危险,并且已经通过这里的相关帖子但是找不到相关信息来阻止它.

如果上述主题中有任何文档或博客文章,我将非常感谢您的帮助.

解决方法 避免方法调配很简单;使用函数而不是方法(即在没有对象的情况下以C语言或至少在Core Foundation中以旧式方式执行).但是如果你正在使用ObjC运行时,你可以被调整.

您原则上可以通过缓存所有IMP指针来检测混合,例如使用类似load_ethMethodImplementation的加载或者可能是全局变量上的C构造函数(在main()之前运行),然后重新检查所有IMP指针各种时间,以确保他们没有改变.

这可能不会太难,但很难想象所有这些都能实现.如果某人拥有您的框架二进制文件,那么修补它以删除您的支票并不是一项重大工作.在源代码的某处,必须有一个if(swizzled){…},并且它将转换为程序集中的branch-if条件指令.你在系统上粘贴一个调试器,等待分支“啊!我们被调配”发生,注意它发生的点,并将该字节补丁为“如果不是分支”或只是添加无条件跳转.

减轻这种攻击,即使是一点点,也需要大量的混淆.有些技术(大多数工作效果不好),但它们只能保密.这就是混淆和安全之间的区别.

简短的回答是你真的无法以任何稳定的方式实现这一点.这意味着您要么需要一个团队致力于不断提出新的,更高级的混淆,并在新的攻击出现时定期更新它们(即暴雪或苹果公司如何防止黑客入侵),或者您需要找到一种方法来需要这个.

最简单的答案?主要在C中工作并尽可能少地使用ObjC类(这将防止调配,但不能进行逆向工程或修补).或接受调配是不可避免的.

(顺便说一句,如果甚至有“我愿意做任何事情”这个问题的回答,那么苹果公司只会使用这种技术来使越狱变得不可能.事实上,iPhone定期越狱意味着问题的困难. )

总结

以上是内存溢出为你收集整理的ios – 防止方法调整Objective-c全部内容,希望文章能够帮你解决ios – 防止方法调整Objective-c所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1059536.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存