1
据我所知,若干混淆策略被广泛使用(或在学术至少所描述的),如:混淆多线程程序的难点/好处是什么?
控制流
- 复杂插入伪造控制流
- 控制流扁平化
- 通过分支功能跳转
- 来自阵列锯齿的不透明值
不透明谓词
- 从指针别名
动态模糊
- 自修改状态机
- 代码作为密钥材料不透明谓词
从他们在介绍这些混淆方式时给出的例子,多线程程序还没有被讨论过。
所以我想知道这些策略在多线程程序中是否可行(或者甚至是可行的,但不是很实用)?
据我所知,若干混淆策略被广泛使用(或在学术至少所描述的),如:混淆多线程程序的难点/好处是什么?
控制流
不透明谓词
动态模糊
从他们在介绍这些混淆方式时给出的例子,多线程程序还没有被讨论过。
所以我想知道这些策略在多线程程序中是否可行(或者甚至是可行的,但不是很实用)?
他们为什么不适用?
混淆基本上试图使分析困难。我想像你可以添加一个基于多线程多了一些技术,充分利用其已经很难理解性质:
* obfuscated synchronization, esp. conditional or multiple waits
* bogus fork/joins
* things that look like data races
在困难的条件:混淆是比较容易的,一旦你知道你想要做什么,你有很好的机器来操作源代码。 (后者是困难的部分,而不是前者)。