注意!创建间谍软件,计算机病毒和类似的恶意软件在您居住的地方可能是非法的,几乎每个人都认为这是非常不道德的。但是,我还是要问这个问题,以提高人们对创建它的难易程度的认识。在W32 / Induc-A被一个想出一种传播方式的人引入这个世界之后,我问这个问题。所以我想知道如何创建病毒,以便将来能够识别它们!
最近发现了一个new virus,它通过替换开发人员的库代码副本来传播自己。实际上,通过Delphi 4到7的源代码。发生的事情是有一个野外的病毒,它在计算机中搜索一个名为SYSCONST.PAS的文件,它将自己添加为源代码。该文件恰好是Delphi运行时库的源文件。 (这个运行时源代码可供Delphi开发人员使用。)因此,在被感染后,程序员会在不知情的情况下创建许多新版本的病毒。由于病毒扫描程序有时会产生误报,因此许多开发人员可能因此决定忽略扫描程序的警告,甚至可能在构建项目时禁用扫描程序。更糟糕的是,他们的项目甚至可能会触发客户的扫描程序,因此这些程序员可能不会检查他们的源代码,而只是试图以某种方式欺骗扫描程序。也就是说,如果病毒扫描程序甚至能够识别病毒,那不太可能。 因此,我们的软件开发人员可能会在没有意识到我们正在做的事情的情况下创建病毒!
那么,如何创建病毒?简单:让你的源代码被病毒感染,你就完成了!
好的,所以Delphi 4到7的源代码可能会被感染。所有Delphi开发人员,请检查您的源文件!案例只是一个概念验证,显然它可以非常成功。此外,大多数病毒扫描程序不会检查源代码,只关注可执行文件。这种病毒可能会在相当长一段时间内未被发现。
此病毒也成功,因为它滥用了源代码。 Delphi是一个商业项目,源代码可用。但谁能确定这些黑客不会以类似的方式攻击开源项目?那里有很多开源项目,谁会检查它们,确保它们都以一种体面的方式运行?如果有人正在检查代码,他是否能够识别是否有恶意代码?
因此,为了确保我们能够识别恶意源代码,我不得不问:如何创建病毒?如何识别会产生病毒的代码?大多数恶意软件想要做什么?
答案 0 :(得分:8)
虽然这并没有真正回答你的问题,但我认为一篇非常有趣的论文是Ken Thompson撰写的Reflections on Trusting Trust。它提出了一个令人着迷的观点,即即使您的源代码没有缺陷(病毒,特洛伊木马等),如果您的编译器存在缺陷,您仍可能产生有缺陷的可执行文件。即使你从干净的源代码重建编译器,你仍然可以遇到同样的问题。
除非您使用自己的微芯片从头开始构建计算机,手工组装自己的BIOS,编写自己的操作系统,编译器和软件,否则必须在某处绘制线并且信任< / em>您构建系统的硬件和软件是正确的。
答案 1 :(得分:5)
您可以检查传入数据包的邪恶位... http://en.wikipedia.org/wiki/Evil_bit
答案 2 :(得分:4)
如果您想识别恶意软件,您必须知道它是如何工作的。这意味着研究恶意软件并获取产生恶意软件的技能。
我不会在这里提供链接。它们很容易找到。
答案 3 :(得分:2)
如果你真的想学习,并且愿意花时间,你的时间可能会更好地花在谷歌上找到然后参加一个greyhat社区。这个话题非常复杂。
如果您的问题就像“从源代码中识别病毒的简单方法”那么简单,那么,这可能并不容易,因为有无限的方法可以解决它。
答案 4 :(得分:2)
你问“大多数恶意软件想要做什么?”。
此类信息的优秀来源是The Hacker Quarterly,这是主流,您可以在当地书店找到它,或you can subscribe online to get it mailed to you。
它开始帮助黑客和phreakers分享信息。它现在仍然非常受黑客欢迎,被许多人认为是有争议的。
当前问题的内容包括:
还有an excellent series of articles on Hacking at Wikipedia和on Computer Viruses。
......是的,程序员必须了解黑客和代码破解是如何工作的,这样他们才能尽力在程序中规避它。
答案 5 :(得分:2)
恶意代码与无意识的安全漏洞之间没有区别。
您可能会问“如何编写一个没有错误并且无法利用的有用程序”。
正如我们都在CS中学到的那样,甚至不可能编写调试器以捕获无限循环,更不用说智能恶意了。
我对安全意识应用程序的建议是一个ex(p | t)ensive代码审查和使用商业上可用的静态分析软件。