ShellCode加载 - 堆加载
1、堆加载
方法一
1.1、通过heapCreate函数的方式创建堆
- 函数介绍:创建可由调用进程使用的专用堆对象。 该函数在进程的虚拟地址空间中保留空间,并为此块的指定初始部分分配物理存储。
- 函数的语法
- 返回值 : 如果函数成功,则返回值是新创建的堆的句柄
1.2、使用HeapAlloc函数在堆上分配内存中间
- 函数介绍:从堆中分配一块内存。分配的内存不可移动
- 函数的语法
- 返回值 : 返回值是指向分配的内存块的指针
1.3、使用VirtualProtect函数修改内存中的权限
- 函数介绍:更改调用过程的虚拟地址空间中已提交页面区域的保护
- 函数的语法
- 返回值:如果该函数成功,则返回值为非零值
1.4、使用heapFree函数释放内存
-
函数介绍:释放 由 HeapAlloc 或 HeapReAlloc 函数从堆分配的内存块
-
函数的语法
1.5、实现代码
方法二
1.6、通过GlobalAlloc函数分配全局内存
- 函数介绍:从堆分配指定的字节数
- 函数语法
- 返回值 : 如果函数成功,则返回值是新分配的内存对象的句柄
1.7、通过GlobalLock函数锁定全局内存
-
函数介绍 : 锁定全局内存对象并返回指向该对象内存块的第一个字节的指针
-
函数语法