博客
关于我
强烈建议你试试无所不能的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://lpdvb.baihongyu.com/

你可能感兴趣的文章
Some projects cannot be imported because they a...
查看>>
ubuntu-android--make: *** [out/host/linux-x86/o...
查看>>
原子变量与synchronized详细解释
查看>>
java.lang.OutOfMemoryError: PermGen space及其解决方法
查看>>
如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数?
查看>>
highcharts扩展tooltip提示异步信息
查看>>
activiti--History 历史配置
查看>>
activiti--部署bpmn/bar文件详解
查看>>
win7使用Putty 连接debain
查看>>
debain 常用命令
查看>>
debain 安装amd显卡驱动
查看>>
Java Jacob 打印word文档
查看>>
Java Freemarker 根据模板生成Word
查看>>
Java Mybatis Plus 集成与使用
查看>>
Java 一台电脑部署多个tomcat服务
查看>>
Java WinSw 安装Jar成Windows服务
查看>>
Linux安装Jar成服务
查看>>
Java SSH连接mysql数据库
查看>>
计算机使用常见问题与答案
查看>>
Mysql 触发器的Http请求
查看>>