我正在Kali Linux中制作一个程序,我想让它只在Kali中运行。我可以用C来做,就像:
#if defined(_WIN32) || defined(_WIN64)
#define os_platform THISisWINDOWS
用于检查用户的操作系统是否为Windows,以及稍后在脚本中检查已定义的变量os_platform,但我搜索了谷歌和所有地方,但我找不到Kali Linux的宏。如果我这样做:
#if defined(__linux__)
#define os_platform THISisLINUX
它可以是任何类型的Linux,如Ubuntu,以及像这样的Linux。 Kali Linux的宏是什么?
答案 0 :(得分:2)
分发没有宏。你只能做一个"嗅探测试"通过在/etc
中查找特定文件来查看它的分布情况,即使这样也可以伪造。
首先存在宏的原因是因为Linux与BSD和Windows完全不同,所以它是必要的区别。 Kali和Debian之间的区别非常主观,Kali基于Debian。就编译器而言,大多数Linux发行版实际上非常相似,因为它们都使用相同的内核和头文件。
像/etc/redhat-release
这样的东西是特定于分发的,所以寻找类似的东西。这不能作为#ifdef
进行测试,而是您需要在configure
脚本中添加的内容。
答案 1 :(得分:0)
可能您可以检查/etc/issue
文件中的特定分发名称,然后使用文件指针提取确切名称&然后比较如果它是Ubuntu或Kali或任何其他Linux机器。