C语言执行ShellCode的五种方法

结合个人经验总结一下C语言执行ShellCode的五种方法,希望能够帮助编程爱好者!

操作方法

  • 01

    下面介绍一下使用C语言执行ShellCode的五种方法,但是这种方法只限于在Windows XP和Windows 2003操作系统之下。

  • 02

    下面给出两段可用的ShellCode代码,分别是弹出MessageBox和打开calc计算器的ShellCode代码,演示代码如下所示:

  • 03

    #include "stdafx.h" #include <Windows.h> typedef void (_stdcall *CODE)(); #define Calc_Test #ifdef Calc_Test //一段弹出MessageBox的shellcode unsigned char shellcode[] = "\xb8\x82\x0a\x8d\x38\xd9\xc6\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x23" "\x31\x42\x12\x83\xea\xfc\x03\xc0\x04\x6f\xcd\x38\xf0\x2b\x2e\xc0" "\x01\x3f\x6b\xfc\x8a\x43\x71\x84\x8d\x54\xf2\x3b\x96\x21\x5a\xe3" "\xa7\xde\x2c\x68\x93\xab\xae\x80\xed\x6b\x29\xf0\x8a\xac\x3e\x0f" "\x52\xe6\xb2\x0e\x96\x1c\x38\x2b\x42\xc7\xc5\x3e\x8f\x8c\x99\xe4" "\x4e\x78\x43\x6f\x5c\x35\x07\x30\x41\xc8\xfc\x45\x65\x41\x03\xb2" "\x1f\x09\x20\x40\xe3\x83\xe8\x2c\x68\xa3\xd8\x29\xae\x5c\x15\xba" "\x6f\x91\xae\xcc\x73\x04\x3b\x44\x84\xbd\x35\x1f\x14\xf1\x46\x1f" "\x15\x79\x2e\x23\x4a\x4c\x59\x3b\x22\x27\x5d\x38\x0a\x4c\xce\x56" "\xf5\x6b\x0c\xd5\x61\x14\x2f\x93\x7c\x73\x2f\x44\xe3\x1a\xa3\xe9" "\xe4"; #endif #ifdef MessageBox_Test //一段打开Windows计算器的shellcode unsigned char shellcode[] = "\xEB\x42\x8B\x59\x3C\x8B\x5C\x0B\x78\x03\xD9\x8B\x73\x20\x03\xF1" "\x33\xFF\x4F\x47\xAD\x33\xED\x0F\xB6\x14\x01\x38\xF2\x74\x08\xC1" "\xCD\x03\x03\xEA\x40\xEB\xF0\x3B\x6C\x24\x04\x75\xE6\x8B\x73\x24" "\x03\xF1\x66\x8B\x3C\x7E\x8B\x73\x1C\x03\xF1\x8B\x04\xBE\x03\xC1" "\x5B\x5F\x53\xC3\xEB\x4F\x33\xC0\x64\x33\x40\x30\x8B\x40\x0C\x8B" "\x70\x1C\xAD\x8B\x48\x08\x58\x33\xDB\x33\xFF\x66\xBF\x33\x32\x57" "\x68\x75\x73\x65\x72\x8B\xFC\x53\x51\x53\x50\x50\x53\x57\x68\x54" "\x12\x81\x20\xE8\x8A\xFF\xFF\xFF\xFF\xD0\x8B\xC8\x68\x25\x59\x3A" "\xE4\xE8\x7C\xFF\xFF\xFF\xFF\xD0\x59\x68\x97\x19\x6C\x2D\xE8\x6F" "\xFF\xFF\xFF\xFF\xD0\xE8\xAC\xFF\xFF\xFF" "hello,world!"; #endif //函数声明 void RunShellCode_1(); void RunShellCode_2(); void RunShellCode_3(); void RunShellCode_4(); void RunShellCode_5(); int _tmain(int argc, _TCHAR* argv[]) { RunShellCode_1(); return 0; }

  • 04

    //第一种方法 void RunShellCode_1() { PVOID p = NULL; if((p = VirtualAlloc(NULL,sizeof(shellcode),MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE)) == NULL) MessageBox(NULL,"VirtuallAlloc Failed!!!","Prompt",MB_OK); if(!(memcpy(p,shellcode,sizeof(shellcode)))) MessageBox(NULL,"WriteMemory Failed!!!","Prompt",MB_OK); CODE code = (CODE)p; code(); }

  • 05

    //第二种方法 void RunShellCode_2() { ((void (*)(void))&shellcode)(); }

  • 06

    //第三种方法 void RunShellCode_3() { __asm { lea eax,shellcode; jmp eax; } }

  • 07

    //第四种方法 void RunShellCode_4() { __asm { mov eax,offset shellcode; jmp eax; } }

  • 08

    //第五种方法 void RunShellCode_5() { __asm { mov eax,offset shellcode; _emit 0xFF; _emit 0xE0; } }

(0)

相关推荐

  • 在Word文档中快速插入日期的五种方法

    在Word文档中快速插入日期的五种方法 方法1:使用"插入"选项卡中的"日期和时间"功能插入当前系统日期. 在"插入"选项卡的"文 ...

  • 2016最新五种方法快速查找帖子IP地址

    与好友在网络上相互传输资料时,有时先要知道对方计算机的IP地址,才能与对方建立信息传输通道.那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不 ...

  • 把word转换成ppt的五种方法

    操作方法 01 大纲转化法: 新建一个WORD,将其转换为大纲视图后保存. 02 打开PPT,在新建幻灯片中选择倒数第二项"从大纲导入",选择刚刚保存的WORD,即可生成PPT. ...

  • 笔记本键盘清理五种方法

    键盘是笔记本电脑里最容易堆积灰尘的部件,看看每个键帽就知道它的下面是灰尘最好的藏身之地。过多的灰尘会加速键盘导电橡胶的腐蚀,从而对键盘的印刷电路造成损伤。接下来就让我们一起使用五种不同的清洁方法使键盘 ...

  • Win7中U盘无法停止"通用卷"的五种方法

    平常在使用完U盘以后都得小心翼翼的检查是否相关程序已经关闭,免得在安全删除U盘时,大家又会遇到那个熟悉得不能再熟悉的讨厌的提示“无法停止‘通用卷’设备,请稍候再停止该设备。” 从网络上整理了一共5种解 ...

  • Excel剔除单列数据的重复值五种方法介绍

    有时我们在操作数据时,需要剔除单列数据的重复值,下面小编为大家介绍Excel剔除单列数据的重复值五种方法,满足大家的日常需求。 方法一:菜单按钮 如下图,是本次操作的源数据。 单击“数据”选项卡--》 ...

  • 解决Win10预览版10159升级失败的五种方法

    解决Win10预览版10159升级失败的五种方法

  • Win8如何打开开始菜单?Win8系统打开开始菜单的五种方法

    Win8如何打开开始菜单?在Win7操作系统中,开始菜单往往在左下角,而升级到Win8系统之后,开始菜单已经被替换为开始屏幕,很多用户就不知道在哪里打开开始屏幕了.下面小编给大家分享在Win8系统下打 ...

  • word文档编辑反应速度很慢怎么办 提高word文档编辑速度的五种方法

    word是我们常用的办公软件,随着编辑次数的增多,文件体积会越来越大,编辑速度就会很慢,那么word文档编辑反应速度很慢怎么办?下面小编带来提高word文档编辑速度的五种方法,希望对大家有所帮助. 提 ...