代码混淆不再愁:一篇掌握核心技巧

1. 概述

代码混淆是将计算机程序的代码转换成一种功能上等价,但是难以阅读和理解的形式。

对于软件开发者来说,代码混淆可以在一定程度上保护程序免被逆向。

对于逆向工程师来说,学习代码混淆可以帮助我们研究反混淆技术。

2. 常见混淆思路

常见的混淆思路有:符号混淆、控制流混淆、计算混淆和虚拟机混淆。

2.1 符号混淆

指的是将函数的符号,如函数名、全局变量名去除或者混淆。对于ELF文件可以通过strip指令去除符号表完成。

下图就是一个去除了符号的程序。

下图则对函数名进行了混淆。

2.2 控制流混淆

指的是混淆程序正常的控制流,使其在功能保持不变的情况下,使其不能清晰地反映原程序的正常逻辑。

常见的有:控制流平坦化、虚假控制流、随机控制流。

控制流平坦化指的是将正常控制流中基本块之间的跳转关系删除,用一个集中的分发块来调度基本块的执行顺序,下图为经过控制流平坦化的控制流图。

虚假控制流指的是,通过向正常控制流中插入若干不可达基本块和由不透明谓词造成的虚假跳转以产生大量垃圾代码干扰攻击者分析的混淆。

下图为虚假控制流混淆的控制流图,它与控制流平坦化不同,呈现出长条状。

随机控制流是虚假控制流的一种变体。随机控制流通过克隆基本块以及添加随机跳转(随机跳转到两个功能相同的基本块中的一个)来混淆控制流。随即控制流的控制流图与虚假控制流类似,都呈长条形。

2.3 计算混淆

指的是混淆程序的计算流程,或计算流程中使用的数据,使分析者难以分辨某一段代码所执行的具体计算。一般有指令替代、常量替代。

指令替代将正常的二元运算指令(如加、减、异或等)替换为等效而复杂的指令序列,以达到混淆计算过程的目的。经过指令替代,函数的控制流没有发生变化,但运算过程变得难以分辨。

常量替代指将二元运算指令(如加、减、异或等)中使用的常数替换为等效而更复杂的表达式,以达到混淆计算过程或某些特殊常量的目的。例如将TEA加密使用的常量0x9e3779b 替换为 12167*16715+18858*32146-643678438。类似于指令替代,函数的控制流没有发生变化,但是运算过程变得难以分辨。

2.4 虚拟机混淆

指的是将一组指令集合(如一组x86指令)转化为一组攻击者未知的自定义指令集,并用与程序绑定的解释器解释执行。虚拟机混淆代表:VMProtect。

虚拟机混淆是目前最强力的混淆,但有性能损耗大、容易被杀毒软件报毒等缺点。

3. OLLVM支持的混淆

OLLVM是经典的代码混淆工具,在国内移动安全的使用非常广泛。它提供了三种经典的代码混淆:

控制流平坦化

虚假控制流

指令替代

3. 混淆工具推荐

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

相关推荐
非凸科技1 小时前
第50届ICPC亚洲区域赛·成都站,非凸科技持续护航顶尖赛事
人工智能·科技
2501_915921432 小时前
iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
android·ios·小程序·https·uni-app·iphone·webview
QuantumLeap丶2 小时前
《Flutter全栈开发实战指南:从零到高级》- 11 -状态管理Provider
android·flutter·ios
2501_916008892 小时前
App 上架需要什么?从开发者账号到开心上架(Appuploader)免 Mac 上传的完整流程指南
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
MicroTech20252 小时前
微算法科技(NASDAQ MLGO):以隐私计算区块链筑牢多方安全计算(MPC)安全防线
科技·安全·区块链
九河云8 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
anscos20 小时前
庭田科技亮相成都复材盛会,以仿真技术赋能产业革新
大数据·人工智能·科技
EkihzniY20 小时前
护照阅读器:公安安全检查的科技新助力
科技
北京盛世宏博20 小时前
科技引领,档案管理更高效之智慧档案馆三维立体恒温恒湿消毒净化系统
科技·物联网·智慧档案·档案馆温湿度
Likeadust20 小时前
视频直播点播平台EasyDSS:助力现代农业驶入数字科技“快车道”
人工智能·科技·音视频