delphi - 如何识别恶意源代码?

标签 delphi open-source virus

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

8年前关闭。




Improve this question




意识到!在您居住的地方创建 spy 软件、计算机病毒和类似的恶意软件可能是非法的,并且几乎每个人都认为这是非常不道德的。 不过,我需要提出这个问题来提高人们对创建一个是多么容易的认识。我是在 W32/Induc-A 被一个想出一种令人讨厌的传播方式的人介绍给这个世界之后问这个问题的。所以我想知道病毒是如何被制造出来的,以便我将来能够识别它们!

最近一个new virus发现它通过替换开发人员的库代码副本来传播。 实际上,通过 Delphi 4 到 7 的源代码。发生的事情是有一种病毒在野外搜索计算机中名为 SYSCONST.PAS 的文件,它会将自身作为源代码添加到该文件中。该文件恰好是 Delphi 运行时库的源文件。 (此运行时源代码可供 Delphi 开发人员使用。)因此,在被感染后,程序员会创建该病毒的许多新版本,甚至不知道它。由于病毒扫描程序有时会产生误报,因此许多开发人员可能会决定忽略扫描程序的警告,甚至可能在构建项目时禁用扫描程序。更糟糕的是,他们的项目甚至可能触发客户的扫描仪,因此这些程序员很可能不会检查他们的源代码,而只是试图以某种方式欺骗扫描仪。也就是说,如果病毒扫描程序甚至能够识别病毒,这不太可能。 因此,我们软件开发人员可能在没有意识到我们在做什么的情况下创造了病毒!

那么,如何制造病毒呢?简单:让您的源代码感染病毒,您就大功告成了!

好的,Delphi 4 到 7 的源代码可能被感染了。所有 Delphi 开发人员,请检查您的源文件!该案例只是一个概念验证,显然它可以非常成功。此外,大多数病毒扫描程序不会检查源代码,而只关注可执行文件。这种病毒可能会在很长一段时间内不被发现。

这个病毒也很成功,因为它滥用了源代码。 Delphi 是一个商业项目,源代码可用。但是谁能确定这些黑客不会以类似的方式攻击开源项目呢?有很多开源项目,谁来检查它们以确保它们都以体面的方式运行?如果有人正在检查代码,他是否能够识别出某些东西是否是恶意代码?

所以,为了确保我们可以识别恶意源代码,我不得不问:如何制造病毒?如何识别会产生病毒的代码?大多数恶意软件想要做什么?
有一些关于 Delphi 运行时源代码的讨论,关于此代码是否开源。从 Borland 开始使用 Kylix 支持 Linux 的那一刻起,他们的源代码就使用了双重许可。因此,源代码声明了一个“GPL”符号,表明库是否编译为 GPL 代码。作为 GPL,源代码将是开源的。这也恰好是被病毒攻击的源版本。无论如何,为了避免在这里讨论,我问了 this question here这样我们就可以更多地关注病毒问题而不是 Delphi。基本上,我们谈论的是一种攻击源代码的病毒。从技术上讲,所有源代码都可能存在风险,但开源代码是一个可能的候选者,因为黑客知道它的结构并且可以针对那些很少修改、因此很少检查的文件。 (如果他们能侵入 CVS 系统,他们甚至可以删除修改的痕迹,因此没有人会注意到修改!)

最佳答案

虽然这并不能真正回答您的问题,但我认为一篇非常有趣的论文是 Reflections on Trusting Trust通过肯·汤普森。它提出了一个有趣的观点,即即使您的源代码没有缺陷(病毒、特洛伊木马等),如果您的编译器有缺陷,您仍然可能生成有缺陷的可执行文件。即使您从干净的源代码重建编译器,您仍然可能遇到同样的问题。

除非您使用自己的微芯片从头开始构建计算机,手工组装自己的 BIOS,编写自己的操作系统、编译器和软件,否则您必须在某处划清界限并相信硬件和软件你正在构建你的系统是正确的。

关于delphi - 如何识别恶意源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1386253/

相关文章:

javascript - Google 阻止了我的网站 : all *. js 文件被感染。如何找到感染我的 JavaScript 代码的进程?

php - 在 PHP 文件中注入(inject)病毒代码

forms - Delphi 中阻止父窗体窗口

windows - 文件夹图标更改不生效

open-source - Paint.Net 是否仍提供其源代码

open-source - 开源项目 - 是否有列出需要更多开发人员的项目的网站?

delphi - 如何让透明图像出现在菜单项上

delphi - 如何修复使用 TreeNode.MoveTo 时 TTreeView 的错误?

java - 是否存在用于消息传递基础架构的开源项目?

antivirus - 防病毒程序如何检测 EICAR 测试病毒?