据我所知,有几种混淆策略被广泛使用(或至少在学术上作了描述),例如:
1. inserting bogus control-flow
2. control-flow flattening
3. jump through branch functions
4. opaque values from array aliasing
1. opaque predicates from pointer aliasing
1. self-modifying state machine
2. code as key material
从他们在介绍这些混淆方式时给出的例子来看,多线程程序还没有被讨论过。
所以我想知道这些策略在多线程程序中是否是可行的(甚至是可行的,但不太实用)?
发布于 2014-01-18 22:46:26
为何不适用呢?
混淆基本上是试图使分析变得困难。我可以想象,您可以添加一些基于多线程的更多技术,以利用本来就很难理解的特性:
* obfuscated synchronization, esp. conditional or multiple waits
* bogus fork/joins
* things that look like data races就难度而言:一旦你知道你想做什么,混淆就相对容易了,而且你有很好的机制来操纵源代码。(后者是困难的部分,而不是前者)。
https://stackoverflow.com/questions/21209861
复制相似问题