关于病毒的重定位

今天写个关于病毒的,其实我所写的东西所是想到什么写什么,或者今天收获什么就写什么。很乱。

病毒一般不独立存在,而是附在宿主中,很像生物病毒。关于病毒的特性有很多资料,我这里不多说。

在病毒编写的时候是独立编译,而附在宿主时候成了某个程序的“附属物”。

什么叫重定位,我也不能确切的说,但是我给出个例子,就能明白了。

比如病毒代码里存在变量a,b。这个变量在编译后实际上拥有固定的“编译地址”,也就是程序独立存在的时候这些变量的空间,逻辑关系应该都是不变的(因为编译后就成了一堆死的二进制代码),但是当病毒附在宿主后整体的逻辑,空间地址就会发生变化,起码它必须以宿主为参照物,当然还有其他变化。这样(附体)以后,实际地址和“编译地址”就不一样了,也就是此事根据实际地址访问的不再是以前的变量a,b了。为了纠正程序的地址改变,必须使用重定位。(自己都感觉很啰嗦)

简单的重定位可用几句汇编代码实现:

call begin               //程序转到begin,并且将begin地址压入堆栈

begin:

pop eax                 //将begin地址存到eax

sub eax offset begin       //得到两者之间的差值

我们实现重定位(也就是就计算实际地址)时,只要将这个差值加上就可以了,即:实际地址=编译地址+差值。

似乎有点含糊。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值