据我所知,在iOS中有三种函数挂钩技术:
这些暴露了安全问题,所以我希望能够发现这些事情何时发生。对于第1点,我可以应用函数指针验证来检测。然而对于2和3,我没有任何想法。我非常感谢能够解决这个问题的想法。
答案 0 :(得分:0)
我遇到了同样的问题-试图避免在我的应用程序中挂任何潜在的函数。
我的应用程序最近经过了PEN测试,发现在功能挂钩方面存在漏洞。安全报告将Frida视为执行此行为的主要罪魁祸首之一。我敢肯定你们大多数人都会熟悉这个工具。
OWASP建议了一些保护应用程序安全的补救方法,但是在这种情况下,标题为 Anti-Debugging Checks 的部分将是主要重点。
如OWASP所建议,我将ptrace与PT_DENY_ATTACH一起使用-拒绝将GDB / LLDB进程附加到应用程序。
来自OWASP:
换句话说,将ptrace与PT_DENY_ATTACH一起使用可确保没有其他调试器可以附加到调用进程中。如果调试器尝试附加,则该过程将终止
这是我使用的solution(用于Swift)。 Raywenderlich.com这篇文章(目标C)也为我提供了帮助。我可以确认使用链接的解决方案是可行的-应用程序启动,但调试器中断,停止所有日志到控制台。这可能会阻止黑客,但是总会有一种解决方法。如前所述,Raywenderlich文章链接:
别太自在。黑客经常使用Cycript,这是一种JavaScript样式的程序,可以在运行时操纵Objective-C应用程序。最可怕的是,连接Cycript时,先前用于检查调试活动的逻辑失败。记住,没有什么是真正安全的……
不过,据Joseph Lord称,希望使用Swift编写应用程序可以对您有所帮助。但是再说一次,逆向工程师总是赢。
我希望这会以某种方式或形式有所帮助...