【发布时间】:2017-12-18 01:59:48
【问题描述】:
我需要为 C++ 项目的一些混淆练习编写一些(可以安全使用的)随机垃圾汇编代码。 到目前为止我只能找到这个:
#define JUNKCODE \
__asm{push eax} \
__asm{xor eax, eax} \
__asm{setpo al} \
__asm{push edx} \
__asm{xor edx, eax} \
__asm{sal edx, 2} \
__asm{xchg eax, edx} \
__asm{pop edx} \
__asm{or eax, ecx} \
__asm{pop eax}
这似乎无法在 Xcode 上为 64 位项目编译
如何创建多个版本的垃圾汇编代码,这些代码可以安全地添加到我的项目中,并且兼容 32-64 位和跨平台(Windows VS2013 和 Mac Xcode8)?
【问题讨论】:
-
64 位 VC++ 根本不支持内联汇编。对于那些这样做的人,语法是不可移植的。
-
哦,我不知道。那么,即使对每个平台都使用检查,最好的方法是什么?
-
混淆C++ ...通过添加垃圾代码...听起来很荒谬。优化的机器代码已经足够神秘,对 RE 来说是相当大的挑战,垃圾代码部分(特别是如果它们只有很少的变体并且它们不是随机生成的)最终可能会给经验丰富的 RE 工程师一个提示用垃圾块标记的重点在哪里。混淆真实代码会一些有意义,但这非常棘手,通常 2-3 层解释/自定义语言可以很好地工作,而不会完全牺牲源代码的可维护性。