为了更好地了解编程中混淆的工作原理,以下是蛮犀安全整理的世界各地开发人员使用的一些最常见的混淆安全技术。
七种常见的源代码混淆技术
1.数据转换
源代码混淆的一个重要元素是将程序处理的数据转换为另一种形式,这对代码的性能影响最小,但使黑客更难以分解或逆向工程。
如何以这种方式混淆代码的示例包括使用数字的二进制形式使源代码更复杂,更改存储数据的形式或用表达式替换值。
2.代码流混淆
通过改变代码的控制流程,改变了代码的方向。这意味着尽管最终结果是相同的,但要弄清楚代码为什么朝着某个方向或前进的方向要花费更多的时间。
可以通过更改程序执行语句的顺序,通过插入任意跳转指令来更改控制图以及将树状条件构造转换为平面切换语句来执行编程中的控制流混淆。
3.地址混淆
某些源代码混淆安全工具使用的这项技术会更改程序数据和代码的地址,从而导致不可预测性并使其难以利用。构建应用程序时,混淆算法会将内存中某些代码和数据的绝对位置以及不同数据项之间的相对距离随机化。这不仅减少了成功攻击的可能性,还意味着即使黑客在一个应用程序或设备上成功,他们也将无法在其他应用程序或设备上复制它,从而降低了对程序进行反向工程的好处。
4.混淆代码的定期更新
该技术通过定期发布经过混淆的软件的更新来主动防止攻击,从而阻止了黑客破解系统的企图。通过偶尔用新混淆的实例替换现有软件,攻击者被迫放弃其现有分析。最后,突破混淆安全性的努力超过了所获得的价值。
5. Objective-C消息调用和元数据混淆
源代码混淆工具(例如蛮犀安全的应用程序屏蔽解决方案)以两种方式混淆Objective-C代码。首先,它们混淆了源代码中包含的纯文本消息调用,以确保它们不易于阅读和编辑。其次,它们对一些Objective-C元数据进行加密,以从静态分析工具中隐藏敏感信息,例如类别,类,方法,协议,类属性和实例变量的名称,以及方法参数及其类型。仅在加载混淆的应用程序时,才在运行时解密加密的数据。
6.混淆汇编代码说明
转换和更改汇编代码会使反向工程更加困难。一种这样的方法是使用重叠的汇编指令(也称为“中间跳跃”方法),这些指令将代码隐藏在其他代码中,从而导致反汇编程序产生不正确的输出。还可以通过包含不必要的控制语句和垃圾代码来增强汇编代码,以防止渗透。
7.混淆调试信息
调试信息可用于对程序进行逆向工程,以通过反编译和重新编译程序的代码来发现其源代码。因此,阻止未经授权的访问和调试很重要。源代码混淆工具通过更改调试数据中的行号和文件名或完全删除调试信息来实现此目的。
来源:freebuf.com 2021-07-23 18:35:13 by: 上海蛮犀科技有限公司
请登录后发表评论
注册