应用c程序后仍然可以安全地使用发行版吗?

应用c程序后仍然可以安全地使用发行版吗?

我在旧的 iMac 5,1 上安装了elementary OS Juno。计算机使用 32 位 EFI,它无法启动基本操作系统 Juno,因此我决定按照 Matt Gadients 指南寻求一些解决方法。您可以在这里找到解决方法:https://mattgadient.com/2016/07/11/linux-dvd-images-and-how-to-for-32-bit-efi-macs-late-2006-models/

我想知道这个修改后的发行版是否仍然可以安全使用?

Matt Gadient 介绍了如何使用一些 C 程序修改 isos,使其可在 32 位 EFI Mac 上启动。我没有从该网站下载 isos,而是从 Matt 的网站下载了 c 程序,您可以在此处找到该程序的文本:https://dedicated.mattgadient.com/linux-mac-iso/isomacprog.c.txt

我用 Bytw 之类的方法编译了 c 程序,cc -g -Wall isomacprog.c -o isomacprog 并用它修改了官方的 basic OS Juno 发行版./isomacprog elementaryOSJuno.iso :修改后的 iso 具有与 Matt 本人修改的 iso 相同的 MD5 校验和,所以他肯定没有对发行版做任何其他事情。我将 iso 刻录到 DVD 上并将其安装在 iMac 上。它运行得很好。但我还没有将计算机连接到互联网,因为我不确定它是否仍然可以安全使用。

我对 C 编程一无所知,所以我想问一下这个小 C 程序除了使发行版可启动之外还有其他作用吗?使用该发行版是否仍然安全或者包含某种病毒?

答案1

您可以使用例如 来将原始图像与修改后的图像进行比较cmp -l。 (对于真正的偏执狂,您当然应该在没有运行 C 程序的系统上执行此操作)。该 C 程序似乎只是将 1984 个字节设置为 0:

if (lseek(fd, lba * 2048 + 64, SEEK_SET) == -1)
  goto err_ex;
memset(buf, 0, buf_size);
ret = write(fd, buf, buf_size);

...其余部分看起来像是错误检查并找到写入这些 0 的偏移量。

它是可能的向某些东西写入 0 可能是后门(不是病毒),例如,通过在某处消除身份验证。但我觉得这不太可能(我不认为 0x00... 是机器代码 noop),并且它在页面上的作用的描述更有意义。

您还可以通过验证软件包的校验和来检测假设的后门(例如,在debsumsDebian 上);写全 0 不会以保持其校验和良好的方式破坏程序!

相关内容