现代编译器使用源代码转换进行优化[1]。还表明,地址空间的动态随机化可用于对抗对程序的攻击[2]。
与试图简单地混淆源代码的混淆器相反,我想创建一组功能等效的源代码,使用C ++进行多样性和安全性的排列。
例如,以下行
int a = 5;
int b = 10;
int c = 15;
int d = a + b + c;
可以转化为
int c = 15;
int a = 5;
int b = 10;
int d = a + b + c;
并且这两个块功能相同。
是否有可用于此目的的现有工具或方法?
[1] https://gcc.gnu.org/wiki/FloatingPointMath#Transformations
[2] https://www.usenix.org/legacy/event/sec03/tech/full_papers/bhatkar/bhatkar.pdf