病毒编写教程2

5. Ring3下的病毒技术

在Ring3下编写病毒,最主要的是利用Windows提供的各种API函数。就像前面提到的那样,可以通过引入库的方式来进行调用。这是我极力推荐的方法----使用简单,而且不会出错:-D

此外,也可以使用网上很多文章介绍的方法,通过搜索来定位kernel32.dll,并进而定位LoadLibrary和GetProcAddress两个函数来调用API。由于这涉及到关于PE文件格式的相关技术,我打算在介绍PE格式后再进行介绍。

这里,我仅仅给出一段在病毒中广泛使用的重定位代码,用来定位代码的基址。由于文件型病毒在侵蚀其他PE文件、插入自身代码后,以前用到的那些定位信息必须得重写,即所有的变量的偏移地址必须以代码基址为基址,而不是以程序开始的位置为基址。

从理论上来说,重定位即是寻找病毒代码的起始位置,一般是通过以下语句实现(假定call语句为病毒代码的起始位置):
 call vstart
vstart:
 pop ebx
 sub ebx, offset vstart

由于call指令为将call语句的下一语句(在这里即是vstart标识的pop语句)的eip压入堆栈,而pop语句会将其弹入到ebx中,最后的sub语句将ebx中的值(pop语句的eip)减去pop到call语句的偏移量,从而得到病毒代码的起始地址。


6. Ring0病毒编写技术

对于现代计算机系统而言,Ring0就意味着完全的自由,就意味着没有任何的限制!当然,Windows对Ring0进行了保护,并不是所有的程序都能够自由的进入到Ring0中去运行。不过,进去的方法是一定有的,包括通过调用门、任务门、中断门、陷阱门等,还有就是通过驱动的方法(比如3721驻留所采用的方法)。

但是需要指出的是,前面提到的所有方法(除了驱动),都是利用操作系统的一些漏洞,在今后的系统中使用这些漏洞将会越来越困难!因此,我强烈的推荐大家学习和使用通过驱动进入Ring0的方法。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值