c++ - 如何编写没有任何字母但只能使用主词的c代码?

标签 c++ c obfuscation

我搜索了混淆代码,但没有找到如何在没有任何单词的情况下编写代码的示例。即使没有#define、int 等... 有一种方法可以做到这一点,但我找不到......

最佳答案

欢迎来到文盲编程!

有一种方法可以做到这一点:创建一个只有空格和可能没有任何字母的注释的文件。这个文件可以编译为C代码,并且会产生一个空的目标文件,恐怕不是很有用......

您还可以滥用预处理器并仅使用数字和下划线。通过使用精心选择的命令行选项编译代码以在源文件之前包含 key 文件,您可以避免所有字母。您需要对所有关键字和类型以及 main 函数名称使用宏。扭曲但可行。您可能想编写一个程序来自动执行混淆。

例如:

key.h:

#include <stdio.h>
#define _1 int
#define _2 main
#define _3 printf
#define _4 return

来源.c:

_1 _2() {
    _3("\110\145\154\154\157\040\167\157\162\154\144\041\012");
    _4 0;
}

编译并运行它:

gcc -include key.h source.c -o program
./program

应该产生:

Hello world!

编辑:如果您无法使用 key 文件,请在命令行上定义宏:

gcc -include stdio.h -D_1=int -D_2=main -D_3=printf -D_4=return source.c -o program
./program

关于c++ - 如何编写没有任何字母但只能使用主词的c代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968322/

相关文章:

java - Android Proguard Javascript接口(interface)失败

c++ - 将函数指针存储为类中的成员

c - 为什么没有 FVIRTKEY CreateAcceleratorTable() 就不能工作?

c - native C Websocket 客户端

android - Proguard 导致 Android 上的 SSL keystore 出现问题

谁能解释一下它的打印输出是 "ink"

c++ - 如何使用 STL 对包含相关条目的两个 vector 进行排序?

c++ - 在包含 char 字符串的对象上使用析构函数时出现断点异常

c++ - 当返回可能在 C++ 堆栈上分配的成员时,最好的指针/引用类型是什么?

c - C 中的时间函数始终显示 "Wed Dec 31 23:59:59 1969"