博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典的重定位代码
阅读量:2343 次
发布时间:2019-05-10

本文共 557 字,大约阅读时间需要 1 分钟。

 
在病毒里面经常会使用到这种技术
,
因为病毒的启动往往不是通过
windows
来加载
,
那么各个地址的重定位也就需要手工来完成
,
如果代码本身就具备重定位功能的话
,
那么手工加载病毒就会容易的多
,
可以轻易把病毒塞入一块任意的由
VirtualAlloc
分配的内存
.
 
经典的代码是这样的
:
// call
这个动作发生的时候
,
会把返回地址退入堆栈的顶部
,
此时返回地址就是
delta
所在位置的绝对地址
,
当然
call
这个函数是通过相对偏移来调用的
,
不存在重定位的问题
call delta ;
delta:
pop ebp ;
//
这里取出返回地址
,
注意此地址是进程空间里面的绝对地址
sub ebp, offset delta ;
//
把绝对地址和相对偏移相减就可以获得相对偏移与绝对地址的转换关系
mov eax, [ebp+kernel32]  ;
//
有了转换关系之后就可以轻松调用各个由相对地址指定的数据段或者函数
kernel32        dd     ?
   
实际上我们做的工作就是windows加载时要做的工作,上面的代码如果通过windows来加载完成,那么相对偏移就会被windows重定位,与绝对地址的差值为0.但是如果是手工加载,那么这个差值就与加载地址密切相关了.
 

转载地址:http://opdvb.baihongyu.com/

你可能感兴趣的文章
CPU输出数据的速度远远高于打印机的打印速度,为了解决这一矛盾,可采用()
查看>>
整型字符常量和字符字面量的区别 sizeof(char) 和 sizeof('a')
查看>>
表的主键特点中,说法不正确的是()
查看>>
用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
查看>>
冯诺依曼工作方式的基本特点是____
查看>>
下列关于文件索引结构的叙述中,哪些是正确的?
查看>>
虚拟存储的容量受到下列哪一个因素的限制影响最大?
查看>>
关于域名和IP描述正确的是?
查看>>
哪些字段适合建立索引?
查看>>
关于group by子句的作用描述正确的是?
查看>>
执行"int x=1;int y=~x;"语句后,y的值为?-----取反运算,补码
查看>>
内存按字节编址,地址区间为[90000H,CFFFFH],若用32K*8bit的存储器芯片构成该内存,需要__块
查看>>
直接,间接,立即三种寻址方式指令的执行速度,由快至慢的排序是____
查看>>
设计文件系统时应尽量减少访问磁盘的次数,以提高文件系统的性能.下列各种措施中,哪些可以减少磁盘服务时间?
查看>>
memove 的实现
查看>>
下面有关C++中为什么用模板类的原因,描述错误的是?
查看>>
计算类的大小--字节对齐
查看>>
重载、覆盖、隐藏
查看>>
下面有关c++线程安全,说法错误的是?
查看>>
下面对 C++ 静态数据成员的描述中,正确的是?
查看>>