混淆多线程程序有什么困难/优势?

时间:2014-01-18 21:07:41

标签: multithreading obfuscation deobfuscation

据我所知,有几种混淆策略被广泛使用(或至少在学术界描述),如:

  • 使控制流程复杂化

    1. 插入虚假控制流程
    2. control-flow flattening
    3. 跳过分支机构
    4. 数组别名的不透明值
  • 不透明谓词

    1. 来自指针别名的不透明谓词
  • 动态混淆

    1. 自我修改状态机
    2. 代码作为关键材料

从他们介绍这些混淆方式时给出的例子来看,多线程程序还没有被讨论过。

所以我想知道这些策略在多线程程序中是否可行(甚至可行,但不是很实用)?

1 个答案:

答案 0 :(得分:0)

为什么它们不适用?

混淆基本上试图使分析变得困难。我想你可以添加一些基于多线程的技术,以利用其已经很难理解的性质:

*  obfuscated synchronization, esp. conditional or multiple waits
*  bogus fork/joins
*  things that look like data races

就难度而言:一旦你知道自己想要做什么,混淆就相对容易了,并且你有很好的机制来操纵源代码。 (后者是困难的部分,而不是前者)。