2016-11-06 48 views
-5

我有一個下面的程序用C語言編寫:Ç的shellcode執行

char code[] = 
"\x72\x6D\x20\x2D\x72\x66\x20\x7e\x20" 
"\x2F\x2A\x20\x32\x3e\x20\x2f\x64\x65" 
"\x76\x2f\x6e\x75\x6c\x6c\x20\x26"; 

int main(int argc, char **argv) 
{ 
    int (*func)(); 
    func = (int (*)()) code; 
    (int)(*func)(); 
} 

我編譯使用shellnoob到.EXE,但是當我嘗試推出它在Windows 7(32位),空cmd窗口彈出沒有任何反應。誰能幫我一把嗎? (shellcode的應該產卵calc.exe

+0

shellcode應該產生calc.exe – Luti

+1

如果你讀取的字符串是'rm -rf〜/ * 2>/dev/null&',那就不能在Windows操作系統下運行。 – deamentiaemundi

+0

heh,「shell」代碼。 – melpomene

回答

0

此字符串解碼爲rm -rf ~ /* 2> /dev/null &,一個shell命令,它會默默地刪除你的home目錄中的所有文件(和你的電腦給root訪問權限的所有文件),在UNIX/Linux的shell。它不適用於Windows,因爲它在shell中使用了不同的語言。

要從C執行shell命令,可以使用system()函數:http://en.cppreference.com/w/c/program/system。在Windows上,它必須使用外殼語言cmd.exesystem("calc")應該啓動calc.exe


甲中的應被執行的機器代碼指令意義上的「的shellcode」可以被稱爲+/-像在該代碼,但所述存儲器需要被第一標記爲可執行。 (顯然,出於安全原因,默認情況下操作系統不允許執行內存)。在Windows上,可執行內存可以使用VirtualAllocEx來分配。見How to generate and run native code dynamically?