VirtualAlloc分配虚拟内存 执行其中动态加入的代码
来源:互联网 发布:淘宝利用老顾客刷销量 编辑:程序博客网 时间:2024/05/22 08:16
利用VirtualAlloc分配虚拟内存,并指定这块内存为可读写并可执行,然后在该块内存中加入代码(机器语言),利用嵌入ASM跳转到刚才分配的内存地址,执行其中动态加入的代码
相应汇编代码对应的机器代码
call : $E8
xor eax, eax : $33C0
ret : $C3
type
PCode = ^TCode;
TCode = packed record
Code: array[0..2] of Byte;
Prc: Pointer;
Ret: Byte;
end;
const
BlockCode: array[0..2] of Byte = ($33,$C0,$E8);
var
Block:PCode;
Block:=VirtualAlloc(nil, 7, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Move(BlockCode, Block^.Code, SizeOf(BlockCode));
Block^.Prc:=Pointer(Longint(@Showmessage) - (Longint(@Block^.Code[2]) + 5));//计算Showmessage的相对地址
Block^.Ret:=$C3;
//执行
asm
call Block
end;
相应汇编代码对应的机器代码
call : $E8
xor eax, eax : $33C0
ret : $C3
type
PCode = ^TCode;
TCode = packed record
Code: array[0..2] of Byte;
Prc: Pointer;
Ret: Byte;
end;
const
BlockCode: array[0..2] of Byte = ($33,$C0,$E8);
var
Block:PCode;
Block:=VirtualAlloc(nil, 7, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Move(BlockCode, Block^.Code, SizeOf(BlockCode));
Block^.Prc:=Pointer(Longint(@Showmessage) - (Longint(@Block^.Code[2]) + 5));//计算Showmessage的相对地址
Block^.Ret:=$C3;
//执行
asm
call Block
end;
- VirtualAlloc分配虚拟内存 执行其中动态加入的代码
- 虚拟内存管理-分配内存空间 VirtualAlloc使用
- WinCE5.0中VirtualAlloc内存分配的试验代码
- linux虚拟内存的分配
- 电脑中的虚拟内存与虚拟内存的分配
- 动态无需加入执行路径的神器
- VirtualAlloc 分配与访问测试代码(double类型)
- Win32的虚拟内存分配函数
- VirtualAlloc分配与回收
- VirtualAlloc,GlobalAlloc,HeapAlloc三个分配内存函数的区别
- 不同内存分配方式的区别 VirtualAlloc HeapAlloc malloc new
- 动态内存分配的C代码示例
- windows下的虚拟内存分配分析
- 记一次分配虚拟内存的经历
- 在应用程序中使用虚拟内存(VirtualAlloc VirtualFree)
- 如何获取网页中由脚本动态加入的代码?
- C#动态执行字符串(动态创建代码)的实例代码
- 基于visual c++之windows核心编程代码分析(6)分配和释放可读可写的虚拟内存页面
- GlueGen...几乎和JOGL一样酷?
- 二叉树概念及递归与非递归遍历
- 温总理谈如何做人做事
- Android系统移植技术详解
- 二叉树遍历算法及实现
- VirtualAlloc分配虚拟内存 执行其中动态加入的代码
- 137. Every door may be shut, but death's door. 人生在世,唯死难逃
- My new Mac MINI
- 2012年的第一天,新的JOB开始工作!!
- 九、J2EE的体系结构和MVC设计模式
- VB 检测文件变化 并获取变化的数据
- 画金子塔算法
- 富人狼性 穷人羊性
- Wince和Windows PC同步工具文件夹位置