首頁
社區(qū)
課程
招聘
shellcode編寫問題

為了實(shí)現(xiàn)x64的匯編,我使用了VirtualAlloc申請了一段內(nèi)存,然后用RtlMoveMemory把shellcode放到內(nèi)存里,最后用CreateThread去執(zhí)行這一段機(jī)令
匯編的內(nèi)容我寫的是這樣:
push 0
push 0
push 0
push 0
call MessageBoxW

 

圖片描述
代碼是這樣

 

然而執(zhí)行后啥事也沒發(fā)生,接著我用32位的_asm試著去用了一下,發(fā)現(xiàn)也不能執(zhí)行,我推測是因?yàn)槲业膕hellcode寫的有問題,請各位大俠看一下,指點(diǎn)迷津,謝謝

收藏
1條回答
0346954 2022-3-17

要執(zhí)行shellcode的話,存放shellcode的頁面必須包含PAGE_EXECUTE屬性,調(diào)用VirtualAlloc時(shí),最后一個(gè)參數(shù)可以使用PAGE_EXECUTE_READWRITE,另外我自己也測試了下這段代碼,發(fā)現(xiàn)拷貝后,這段shellcode有點(diǎn)問題,
圖片描述
另外因?yàn)槲业氖且粋€(gè)控制臺(tái)程序,所以默認(rèn)情況下沒有加載User32.dll,除非在之前調(diào)用了界面函數(shù),所以調(diào)用User32!MessageBoxW函數(shù)是不可以的,因?yàn)闆]有加載動(dòng)態(tài)庫。
圖片描述

回復(fù) 已采納
Bad_Dream: 感謝,之后會(huì)慢慢改的
回復(fù) 2022-3-21