2014-01-18 49 views
1

据我所知,若干混淆策略被广泛使用(或在学术至少所描述的),如:混淆多线程程序的难点/好处是什么?

  • 控制流

    1. 复杂插入伪造控制流
    2. 控制流扁平化
    3. 通过分支功能跳转
    4. 来自阵列锯齿的不透明值
  • 不透明谓词

    1. 从指针别名
  • 动态模糊

    1. 自修改状态机
    2. 代码作为密钥材料不透明谓词

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

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

回答

0

他们为什么不适用?

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

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

在困难的条件:混淆是比较容易的,一旦你知道你想要做什么,你有很好的机器来操作源代码。 (后者是困难的部分,而不是前者)。