在编译时 and/or 运行时检测 运行 Linux 分布?
Detect the running Linux distribution at compile time and/or runtime?
我正在用 Kali 编写一个程序 Linux,我想让它只在 Kali 中运行。我可以用 C 来做,就像 :
#if defined(_WIN32) || defined(_WIN64)
#define os_platform THISisWINDOWS
用于检查用户的 OS 是否为 windows,稍后在脚本中检查定义的变量 os_platform,但我搜索了 Google 和所有地方,但是我只是找不到 Kali Linux 的宏。如果我这样做:
#if defined(__linux__)
#define os_platform THISisLINUX
它可以是 Linux 的任何类型,例如 Ubuntu 和 Linux 之类的。 Kali Linux 的宏是什么?
没有发行版宏。您只能通过查看特定文件的 /etc
来执行 "sniff test" 以查看它是什么分布,即使这样它也可以被伪造。
宏首先存在的原因是因为 Linux 与 BSD 和 Windows 根本不同,所以这是一个必要的区别。 Kali 和 Debian 之间的区别非常主观,Kali 基于 Debian。就编译器而言,大多数 Linux 发行版实际上非常相似,因为它们都使用相同的内核和 headers.
像 /etc/redhat-release
这样的东西是特定于发行版的,所以寻找类似的东西。虽然这不能作为 #ifdef
进行测试,但您需要将其放入 configure
脚本中。
可能您可以检查 /etc/issue
文件的特定发行版名称,然后使用文件指针提取确切的名称,然后比较如果它是 Ubuntu 或 Kali 或任何其他 Linux 机器.
我正在用 Kali 编写一个程序 Linux,我想让它只在 Kali 中运行。我可以用 C 来做,就像 :
#if defined(_WIN32) || defined(_WIN64)
#define os_platform THISisWINDOWS
用于检查用户的 OS 是否为 windows,稍后在脚本中检查定义的变量 os_platform,但我搜索了 Google 和所有地方,但是我只是找不到 Kali Linux 的宏。如果我这样做:
#if defined(__linux__)
#define os_platform THISisLINUX
它可以是 Linux 的任何类型,例如 Ubuntu 和 Linux 之类的。 Kali Linux 的宏是什么?
没有发行版宏。您只能通过查看特定文件的 /etc
来执行 "sniff test" 以查看它是什么分布,即使这样它也可以被伪造。
宏首先存在的原因是因为 Linux 与 BSD 和 Windows 根本不同,所以这是一个必要的区别。 Kali 和 Debian 之间的区别非常主观,Kali 基于 Debian。就编译器而言,大多数 Linux 发行版实际上非常相似,因为它们都使用相同的内核和 headers.
像 /etc/redhat-release
这样的东西是特定于发行版的,所以寻找类似的东西。虽然这不能作为 #ifdef
进行测试,但您需要将其放入 configure
脚本中。
可能您可以检查 /etc/issue
文件的特定发行版名称,然后使用文件指针提取确切的名称,然后比较如果它是 Ubuntu 或 Kali 或任何其他 Linux 机器.