为了实现x64的汇编,我使用了VirtualAlloc申请了一段内存,然后用RtlMoveMemory把shellcode放到内存里,最后用CreateThread去执行这一段机令汇编的内容我写的是这样:push 0push 0push 0push 0call MessageBoxW
代码是这样
然而执行后啥事也没发生,接着我用32位的_asm试着去用了一下,发现也不能执行,我推测是因为我的shellcode写的有问题,请各位大侠看一下,指点迷津,谢谢
要执行shellcode的话,存放shellcode的页面必须包含PAGE_EXECUTE属性,调用VirtualAlloc时,最后一个参数可以使用PAGE_EXECUTE_READWRITE,另外我自己也测试了下这段代码,发现拷贝后,这段shellcode有点问题, 另外因为我的是一个控制台程序,所以默认情况下没有加载User32.dll,除非在之前调用了界面函数,所以调用User32!MessageBoxW函数是不可以的,因为没有加载动态库。