【问题标题】:What is the difficulty/advantage to obfuscate a multi-thread program?混淆多线程程序的困难/优势是什么?
【发布时间】:2014-01-18 21:07:40
【问题描述】:

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

  • 复杂的控制流程

    1. 插入伪造的控制流
    2. 控制流扁平化
    3. 跳转分支函数
    4. 数组别名中的不透明值
  • 不透明的谓词

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

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

从他们在介绍这些混淆方式时给出的例子来看,多线程程序并没有被提及。

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

【问题讨论】:

    标签: multithreading obfuscation deobfuscation


    【解决方案1】:

    为什么它们不适用?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多