关于PE病毒编写的学习(七)——重定位的谬误和它的正确写法
2011-03-17 17:11
309 查看
1.为何需要重定位?
病毒的生存空间就是宿主程序,而因为宿主程序的不同。所以病毒每次插入到宿主程序中的位置也不同。那么病毒需要用到的变量的位置就无法确定。所以这就是病毒首先要重定位的原因。在我们编写程序的时候,所用到的变量的位置都是相对与程序某一个位置的偏移,正常的程序加载的地址是唯一的,所以它们不需要重定位。而病毒的加载是随机的所以就有了重定位的过程。虽然加载的位置不一定,但是变量到某一个位置的偏移却是固定的。所以重定位的基本原理就是找到这个特殊的位置。具体的方法有很多种。这里说几种常见的。
前面介绍的“前置病毒”根本不需要重定位的,因为病毒写在病毒文件最前面,所以它的相对偏移和绝对偏移是相等的。
然而,从本章开始,我们要为名为“追加病毒”的病毒,做技术积累。因为该病毒将病毒体追加到病毒文件尾,它的相对偏移和绝对偏移显然是不相等的。
2.常见的重定位错误写法
call Entry
Entry:
pop ebp
sub ebp,offset Entry
mov ImagePosition,ebp
其实这是一些关于计算机病毒教科书的故意错写的方法,,然而相当多的人不亲自动手实践,人云亦云,造成迄今为止大量的错误代码的出现,和病毒编写入门困难。
3.重定位正确写法和变体
start0:
...
start:
call Entry
...
Entry:
pop eax ;也可以用MOV EXX,[ESP]代替pop eax取出栈顶的内容
sub eax,5 ;减5是定位start的位置,如果定位start0的位置可写为sub eax,offset start- offset start0
病毒的生存空间就是宿主程序,而因为宿主程序的不同。所以病毒每次插入到宿主程序中的位置也不同。那么病毒需要用到的变量的位置就无法确定。所以这就是病毒首先要重定位的原因。在我们编写程序的时候,所用到的变量的位置都是相对与程序某一个位置的偏移,正常的程序加载的地址是唯一的,所以它们不需要重定位。而病毒的加载是随机的所以就有了重定位的过程。虽然加载的位置不一定,但是变量到某一个位置的偏移却是固定的。所以重定位的基本原理就是找到这个特殊的位置。具体的方法有很多种。这里说几种常见的。
前面介绍的“前置病毒”根本不需要重定位的,因为病毒写在病毒文件最前面,所以它的相对偏移和绝对偏移是相等的。
然而,从本章开始,我们要为名为“追加病毒”的病毒,做技术积累。因为该病毒将病毒体追加到病毒文件尾,它的相对偏移和绝对偏移显然是不相等的。
2.常见的重定位错误写法
call Entry
Entry:
pop ebp
sub ebp,offset Entry
mov ImagePosition,ebp
其实这是一些关于计算机病毒教科书的故意错写的方法,,然而相当多的人不亲自动手实践,人云亦云,造成迄今为止大量的错误代码的出现,和病毒编写入门困难。
3.重定位正确写法和变体
start0:
...
start:
call Entry
...
Entry:
pop eax ;也可以用MOV EXX,[ESP]代替pop eax取出栈顶的内容
sub eax,5 ;减5是定位start的位置,如果定位start0的位置可写为sub eax,offset start- offset start0
相关文章推荐
- 关于PE病毒编写的学习(七)——重定位的谬误和它的正确写法
- 关于PE病毒编写的学习(八)——定位API的N种方法
- 关于PE病毒编写的学习(7)——定位API的N种方法
- 关于PE病毒编写的学习(八)——定位API的N种方法(2010年10月25更新)
- 关于PE病毒编写的学习(八)——定位API的N种方法(2010年10月25更新)
- 关于PE病毒编写的学习(二)
- 关于PE病毒编写的学习(四)——关于历遍磁盘的讨论
- 关于PE病毒编写的学习(五)——病毒如何做标记和记录信息
- 关于PE病毒编写的学习(5)——病毒如何做标记和记录信息
- 关于PE病毒编写的学习(九)——追加病毒的编写(上)
- 关于PE病毒编写的学习(五)——病毒如何做标记和记录信息
- 关于PE病毒编写的学习(4)——关于遍历磁盘的讨论
- 关于PE病毒编写的学习(十)——追加病毒的编写(下)
- 关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写
- 关于PE病毒编写的学习(6)——关于PE文件结构操作的程序编写
- 关于PE病毒编写的学习(8)
- 关于PE病毒编写的学习(十一)——空隙覆盖病毒的实现方法
- 关于PE病毒编写的学习(九)——追加病毒的编写(上)
- 关于PE病毒编写的学习(9)
- 关于PE病毒编写的学习(九)——追加病毒的编写(上)