VirtualAlloc 申请可执行内存
生活随笔
收集整理的這篇文章主要介紹了
VirtualAlloc 申请可执行内存
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
假設我有一個數組,存儲了加法函數的二進制代碼(硬編碼)
加法函數
硬編碼數組
// Plus 的硬編碼 unsigned char code[] = {0x55,0x8B,0xEC,0x81,0xEC,0xC0,0x00,0x00,0x00,0x53,0x56,0x57,0x8D,0xBD,0x40,0xFF,0xFF,0xFF,0xB9,0x30,0x00,0x00,0x00,0xB8,0xCC,0xCC,0xCC,0xCC,0xF3,0xAB,0xB9,0x03,0xC0,0x82,0x00,//0xE8,0xF5,0xFA,0xFF,0xFF, //檢測堆棧平衡的函數0x8B,0x45,0x08,0x03,0x45,0x0C,0x5F,0x5E,0x5B,0x81,0xC4,0xC0,0x00,0x00,0x00,0x3B,0xEC,//0xE8,0xC9,0xFA,0xFF,0xFF,0x8B,0xE5,0x5D,0xC3 };直接用函數指針指向數組是不能調用的,因為數組所在的數據區沒有執行權限。
所以需要申請一塊可執行的內存,把硬編碼復制過去,方可調用。
總結
以上是生活随笔為你收集整理的VirtualAlloc 申请可执行内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统是如何使用重定位表的
- 下一篇: GetProcAddress 根据 or