找回密码
 立即注册
首页 业界区 业界 LLVM的混淆之旅(五)-手动实现控制流平坦化混淆 ...

LLVM的混淆之旅(五)-手动实现控制流平坦化混淆

神泱 2026-2-5 23:30:00
简介

之前的教学中,简单的演示了LLVM的基本用法,下面,展示一个实战项目。
编译目标

本次的实验编译样例是下面判断正数,负数,和零的代码
  1. #include <stdio.h>
  2. int main() {
  3.     int a = 9;
  4.     scanf_s("%d", &a);
  5.     if (a < 0) {
  6.         printf("Negative number!\n");
  7.     } else if(a > 0) {
  8.         printf("Positive number!\n");
  9.     } else {
  10.         printf("Zero!\n");
  11.     }
  12.    
  13.     printf("Done.\n");
  14.     return 0;
  15. }
复制代码
一,控制流混淆平坦化

简介

什么是控制流平坦化?简单来说,就是让原本垂直的流程分支平摊到水平方向上,使用这种方法可以提高逆向难度,软件更耐造。
  1.             +-----------------------+
  2.             |        [开始]          |
  3.             |    设定初始状态 = 1     |
  4.             +-----------|-----------+
  5.                         |
  6.       +---------------->V<----------------+
  7.       |       +-------------------+       |
  8.       |       |    循环控制中心     |       |
  9.       |       |     (分发器)       |       |
  10.       |       +---------|---------+       |
  11.       |                 |                 |
  12.       |        _________V_________        |
  13.       |       |                   |       |
  14.       |       |  switch(状态变量)  |       |
  15.       |       |___________________|       |
  16.       |          /      |      \          |
  17.       |         /       |       \         |
  18.       |   [状态 1]   [状态 2]    [退出]     |
  19.       |   +-----+    +-----+    +-----+   |
  20.       |   | 块 1|    | 块 2 |    |结束 |   |
  21.       |   |     |    |     |    +-----+   |
  22.       |   |更新 |    | 更新  |             |
  23.       |   |状态 |    | 状态  |             |
  24.       |   +--|--+    +--|--+              |
  25.       |      |          |                 |
  26.       +------+----------+-----------------+
复制代码
编译和使用

这部分之前文章讲过,这里就不浪费篇幅,不懂的可以翻看
使用效果演示

未使用时

1.png

2.png

使用后

3.png

4.png

至此,我们成功实现了控制流平坦化
如果❤喜欢❤本系列教程,就点个关注吧,后续不定期更新~

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2026-2-11 10:23:21

举报

您需要登录后才可以回帖 登录 | 立即注册