据我所知,有几种混淆策略被广泛使用(或至少在学术界描述),如:
使控制流程复杂化
不透明谓词
动态混淆
从他们介绍这些混淆方式时给出的例子来看,多线程程序还没有被讨论过。
所以我想知道这些策略在多线程程序中是否可行(甚至可行,但不是很实用)?
答案 0 :(得分:0)
为什么它们不适用?
混淆基本上试图使分析变得困难。我想你可以添加一些基于多线程的技术,以利用其已经很难理解的性质:
* obfuscated synchronization, esp. conditional or multiple waits
* bogus fork/joins
* things that look like data races
就难度而言:一旦你知道自己想要做什么,混淆就相对容易了,并且你有很好的机制来操纵源代码。 (后者是困难的部分,而不是前者)。