关于PE病毒编写的学习(二)

 

这篇说一下,PE病毒需要那些技术积累,以及这些技术的学习方法和重点是什么。

1.先说汇编吧

      其实我说的汇编关于两个方面:汇编语言设计 和 微机原理

      汇编语言设计,它也是两方面: 常规教材讲的 和 病毒的技巧

      常规教材上讲的基本都得学会,最基本的8086/8088肯定都得会,各种书籍视频很丰富,学起来不难。80x86也是必须得学,建议看一下《80x86汇编语言程序设计》(杨季文著,清华大学出版),这本书的后半本写的很精彩,至于罗云杉的那本,明白意思就行了,因为使用Radasm,简化很多。64位汇编,我也正在学,随着win7的成功,它将来也会越发重要。

      病毒的技巧,没有一本书或者一部视频能交给你全部。你只好从各类的书籍和网上的帖子中收集只言片语,有的是代码细节,有的是概念介绍,基本只能凭个人探索。

举个例子:

常规汇编代码结构:

.DATA

  str dd 'yangbostar',0

.DATA?

  name dd ?

.CODE

start:

  mov edi,offset str

  mov name,edi

...

END start

在病毒却可以只写一个.code段完成三个段的使命:

.CODE

_start:

  jmp start

  MyName dd 'yangbostar',0  ;只读数据经常写在.code里

start:

  push esp

  mov ebp,esp

  sub esp,10h

  mov [ebp+4],offset MyName   ;用堆栈存储变量

...

END _start

    

    再说微机原理,实际我学得很痛苦,学校要考,不得不学,可以直接学32位的,至于64位的资料都需要极好的32位基础。个人觉得学微机原理用处很多,可每个用处总是一点点,但绝对比别人看的更深一步。

2.c/c++

      程序员的世界语,基础中的基础,不想再多说别的,只想推荐这本书《0 bug:C/C++商用工程之道》,我从这书中收益良多。

 

3.windows API

     有人说还应该学MFC,可能本人才疏学浅,不知道MFC对于病毒的作用和优势在哪里。

4.windows驱动设计

      即使不写驱动程序,通过它了解windows底层运行机制也是很必要的。

      当初学它,只是为了看懂《Rootkit——windows内核的安全防护》,但过程很艰辛,资料真是太少了,很少有优秀中文作品。

针对windows NT之后版本的驱动资料就更少了。只找到三本:

      《天书夜读》——很适合入门

      《寒江独钓》——代码很好,讲的很垃圾

      《windows驱动开发技术详解》——代码很垃圾,讲的很好

5.数据结构

      和c语言一样,是程序员相当重要的基本功,资料相当丰富,不过,作为病毒编写爱好者,学习数据结构的同时,算法的学习也是相当重要,如果有时间的话,啃一下《C算法》这本书。

 

6.程序调试和逆向工程

      个人体会,在VC上进行程序源码调试,要比到处嵌入MessageBox和printf效率高得多。它的学习和你选择的编译器相关,即使是同一编译器的不同版本也调试习惯有不同。资料自己找吧,不必全学会,够用就行。

      学习逆向工程和学习病毒编写一样,在网上充满了各种各样的迷信和谬论。相当多书面和视频教程都是将“脱壳”和“爆破程序”为主,其实这样的学习主要就会了两样东西:OD和修改程序流向。其关于逆向工程很多本质的东西都不说明。我的个人体会是,数据逆向伴随IDA的学习会补充它们的不足,当然,逆向工程博大精深,我只能说明白如何入门,后面的学习大家来相互交流吧。

总结 :

      呵呵,又啰嗦这么长,除了那段汇编代码,没有别的和病毒直接相关,这是我希望大家能有足够的基础,我们常说,授人鱼不如授人以渔。

     下一章,我会介绍是个病毒,但不是PE病毒。因为我要将足够多的DOS病毒技术迁移到windows下,我们才能开始PE病毒上大展拳脚。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值