Beh*_*ooz 2 .net c# jit unmanaged dynamic-execution
我有一个编译器,它将汇编语言编译为机器语言(在内存中).我的项目是在C#.net中.有没有办法在线程上运行内存?DEP如何防止它?
byte[] a:
01010101 10111010 00111010 10101011 ...
Run Code Online (Sandbox Code Playgroud)
关键是将可执行代码放入使用VirtualAlloc分配的内存块中,以便将缓冲区标记为可执行文件.
IntPtr pExecutableBuffer = VirtualAlloc(
IntPtr.Zero,
new IntPtr(byteCount),
AllocationType.MEM_COMMIT | AllocationType.MEM_RESERVE,
MemoryProtection.PAGE_EXECUTE_READWRITE);
Run Code Online (Sandbox Code Playgroud)
(然后使用VirtualFree自行清理).
这告诉Windows应该将内存标记为可执行代码,以便它不会触发DEP检查.
| 归档时间: |
|
| 查看次数: |
629 次 |
| 最近记录: |