1.要端正思想,不要把病毒看得过于神秘
病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。病毒里面用到一些正常程序一般不会用到的技术,比如call/pop,改变其它进程空间里的内容等等,但那也没有神秘的,而且这些技术正常程序不用,是因为一般用不到,用得到的时候就要用了(比如加壳程序可能就要用call/pop),但这时人们通常认为是使用了一些病毒技术。在国外真正的高手(比如汇编高手)是不屑于写病毒的,他们认为那只是小孩子玩的,是无聊的东西。我也认为会写病毒并不等于高手,高手也不一定非要写病毒。我喜欢玩病毒,是因为我觉得如果把病毒当生命,大量的繁殖,还是很好玩的,而且很重要的一点就是我可以在病毒里写汇编了--在中国成为职业汇编程序员的机会几乎微乎其微,和国外是无法比的--汇编不比C++难,我只是喜欢而已。中国人总是喜欢瞎起哄,瞎崇拜,在病毒上也体现得淋漓尽致,盲目跟风,别人说什么都信,一点自己的主见都没有。
2.都学些什么
当你会写正常程序时,离会写病毒也不远了。先从掌握Win32编程和32位汇编开始。如果你掌握了一定数量的Win32 API,你就可以写出一个一定水平的病毒,如果你掌握了一些X86指令格式,那么你就可以写出有一定水平的polymorphism和metamorphism引擎。具体说,需要掌握以下的几点基础。
1).Win32编程,进程,线程,内存,等等。
2).32位汇编,以指令用法为主。386汇编就比较够用了。
3).PE格式,有精力还可以看一下其它可能被感染的文件的文件格式。
4).调试技术。VC,TD32,SoftIce,等等。
5).清醒的头脑
不要总问“这些资料哪里找到”的问题,这些完全可以从MSDN和我们论坛找到,自己去找,别指望别人,大家也不要帮助这样的人。也不要问“怎样写病毒”这类的问题,没人能回答你。
3.目标是什么
如果只想在病毒里玩弄一些华而不实的时髦技术,那么可能去写正常的程序会更好,写好后发布出去,一定会得到MM青睐。我个人认为一个好的病毒就是应该能够大量繁殖,能够长期生存下去,这也符合生命的特点。所以,我个人认为,研究病毒的主要方向是:1.如何传播自己;2.如何隐蔽自己;3.如何让杀毒软件无法清除自己。需要注意的是,我认为我们的病毒没必要去和AVer比试。病毒只是代码,或者说是机器,怎么可能和人相抗衡?再复杂的polymorphism或metamorphism,有经验的AVer看一眼就知道是病毒,而且可以很快清除。所以说,我们要公平竞争,机器对机器,病毒对杀毒软件,我们的目标就是使杀毒软件对我们无能为力。这就是为什么我对polymorphism和metamorphism不是很有兴趣的原因,它们很难躲过AVer的虚拟机,花大精力在它们上面是不划算的。我觉得一个好的病毒是AV软件很难杀死,而不是AVer很难解,再难解,最后还是要解开的。
4.是否要对外界释放病毒
如果要验证我上面的目标(传播能力,隐蔽能力,抗清除能力),那么可能真的只有释放才能验证。如果真是这样,记住一句话,除非你的病毒在中国造成的影响非常小,否则不要对任何人提起这件事。感染千万机器的爽远大于你自己对别人的炫耀。但也可以不释放的,把它发给AV公司,等他们软件升级以后,自己试试,就可以了,但是否要发给中国AVer?我持保留意见。 |