【发布时间】:2018-08-01 08:32:24
【问题描述】:
我最近遇到了这个混淆代码:
#include <stdio.h>
#define _____(i,s,o,g,r,a,m)(i##r##s##o)
#define _ _____(m,i,n,u,a,l,s)
int _()
{
printf("Hello World!");
return 0;
}
这里发生了什么? _() 怎么会是main()?
编辑: 我正在寻找这里使用的“技术术语”。
【问题讨论】:
-
这些宏只是将一件事替换为另一件事 - 不难理解如何
-
查找“令牌粘贴”。
-
它只是一个带有参数的宏,将一些参数粘合形成一个字符串,而不是使用其他参数来混淆读者。
-
这对未来的 SO 用户/访问者没有用处。
-
@MartinJames Wrong!
标签: c obfuscation