为了更好地理解混淆在编程中是如何工作的,下面是世界各地的开发人员使用的一些最常见的混淆安全技术。
七种常见的源代码混淆技术
1.数据变换
源代码混淆的一个重要元素是将程序处理的数据转换成另一种形式,这种形式对代码的性能影响最小,但却增加了黑客分解或逆向工程的难度。
以这种方式混淆代码的例子包括使用二进制形式的数字使源代码更复杂,改变存储数据的形式或用表达式替换值。
2.代码流混乱
通过改变代码的控制流,改变了代码的方向。这意味着,尽管最终结果是相同的,但需要花费更多的时间来弄清楚为什么代码在向某个方向或向前的方向移动。
程序设计中的控制流混淆可以通过改变程序执行语句的顺序、插入任意跳转指令改变控制图、将树形条件结构转换为平面切换语句来进行。
3.地址混淆
一些源代码混淆安全工具使用的这种技术会改变程序数据和代码的地址,导致不可预测性,难以使用。在构建应用程序时,混淆算***随机化一些代码和数据在内存中的绝对位置以及不同数据项之间的相对距离。这不仅降低了攻击成功的可能性,也意味着即使黑客在一个应用程序或设备上成功了,他们也无法在其他应用程序或设备上***它,从而降低了逆向工程程序的好处。
4.混乱代码的定期更新
这项技术通过定期发布混乱的软件更新来主动防止攻击,从而防止黑客试图破解系统。通过偶尔用新的令人困惑的实例替换现有软件,攻击者被迫放弃他们现有的分析。最后,突破困惑安全的努力超过了获得的价值。
5.目标-C消息调用和元数据混淆
源代码混淆工具(例如相当安全的应用程序屏蔽解决方案)以两种方式混淆目标C代码。首先,它们混淆了源代码中包含的纯文本消息调用,以确保它们不容易阅读和编辑。其次,它们对一些Objective-C元数据进行加密,以隐藏静态分析工具的敏感信息,如类别、类、方法、协议、类属性和实例变量的名称,以及方法参数及其类型。只有在加载模糊应用程序时,加密数据才会在运行时解密。
6.混淆汇编代码的描述
而且修改汇编代码会让逆向工程更加困难。其中一种方法是使用重叠汇编指令(也称为“中间跳转”方法),这种方法将代码隐藏在其他代码中,从而导致反汇编程序产生不正确的输出。您还可以通过包含不必要的控制语句和垃圾代码来增强汇编代码,以防止渗透。
7.令人困惑的调试信息
调试信息可用于对程序进行逆向工程,通过反编译和重新编译其代码来发现其源代码。因此,防止未经授权的访问和调试非常重要。源代码混淆工具可以通过改变调试数据中的行号和文件名或者完全删除调试信息来达到这个目的。
本文来自霜华投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/651625.html