当前位置: 首页 > news >正文

第15节 编写shellcode加载器

我最近在做一个关于shellcode入门和开发的专题课👩🏻‍💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考。

我的个人主页:https://imbyter.com

我们编写一个最简单的shellcode加载工具,应用于将本地的shellcode文件执行起来。

shellcode加载器基本功能:

  1. 通过传入的参数,读取shellcode文件内容;
  2. 申请与shellcode文件大小相同的内存空间;
  3. 修改申请的内存,使其具备可读可写可执行的属性;
  4. 将shellcode文件内容读取到该内存;
  5. 调用shellcode执行(跳转到该内存首地址并执行)。
#include <stdio.h>
#include <windows.h>int main(int argc, char* argv[])
{// 程序运行时必须传入一个目标shellcode文件路径的参数if (argc == 2){// 读取传入的shellcode文件路径HANDLE hSCFile = CreateFileA(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);if (hSCFile == INVALID_HANDLE_VALUE){return 0;}DWORD dwHighSize = 0;// 获取shellcode文件大小DWORD dwFileSize = GetFileSize(hSCFile, &dwHighSize);DWORD flOldProtect;DWORD dwAlreadyRead = 0;DWORD dwReadSum = 0;// 分配堆空间LPVOID g_pShellcode = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwFileSize);// 将分配的内存设置为可读可写可执行的属性VirtualProtect(g_pShellcode, dwFileSize, PAGE_EXECUTE_READWRITE, &flOldProtect);// 读取shellcode文件内存到内存空间ReadFile(hSCFile, (char*)g_pShellcode, dwFileSize, &dwAlreadyRead, NULL);CloseHandle(hSCFile);/* 以下方式调用shellcode用仅支持x86版本_asm{pushadcall g_pShellcodepopad}*//* 以下方式调用shellcode能够x86和x64通用 */typedef void (*FN_Shellcode)();FN_Shellcode fn_Shellcode = (FN_Shellcode)g_pShellcode;// 执行shellcodefn_Shellcode();puts("the shellcode operation is successful!");system("pause");}else{puts("e.g: TestShellcode.exe <shellcode file path>");system("pause");}
}

两种运行方式:

  • 直接将目标shellcode文件拖到加载器exe中执行:

  • 通过cmd命令行方式:


 如果有任何问题,可以在我们的知识社群中提问和沟通交流:

图片​​

一个人走得再快,不如一群人走得更远!🤜🤛


相关文章:

第15节 编写shellcode加载器

我最近在做一个关于shellcode入门和开发的专题课&#x1f469;&#x1f3fb;‍&#x1f4bb;&#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料&#xff0c;内容里面的每一个环境我都亲自测试实操过的记录&#xff0c;有需要的小伙伴可以参考…...

JAVA学习-练习试用Java实现爬楼梯

问题: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#xff1a; 输入&#xff1a; 2 输出&#xff1a; 2 解释&#xff1a; 有两种方法可以爬到楼…...

[SWPUCTF 2021 新生赛]PseudoProtocols、[SWPUCTF 2022 新生赛]ez_ez_php

[SWPUCTF 2021 新生赛]PseudoProtocols 打开环境&#xff0c;提示hint.php就在这里&#xff0c;且含有参数wllm 尝试利用PHP伪协议读取该文件 ?wllmphp://filter/convert.base64-encode/resourcehint.php//文件路径php://filter 读取源代码并进行base64编码输出。 有一些敏…...

Hive-拉链表的设计与实现

Hive-拉链表的设计与实现 在Hive中&#xff0c;拉链表专门用于解决在数据仓库中数据发生变化如何实现数据存储的问题。 1.数据同步问题 Hive在实际工作中主要用于构建离线数据仓库&#xff0c;定期的从各种数据源中同步采集数据到Hive中&#xff0c;经过分层转换提供数据应用…...

AI应用案例:会议纪要自动生成

以腾讯会议转录生成的会议记录为研究对象&#xff0c;借助大模型强大的语义理解和文本生成等能力&#xff0c;利用指令和文本向量搜索实现摘要总结、要点提取、行动项目提取、会议纪要生成等过程&#xff0c;完成会议纪要的自动总结和生成&#xff0c;降低人工记录和整理时间成…...

基于光纤技术的新能源汽车电池安全监测--FOM²系统

为什么要进行动力电池包的温度监测&#xff1f; 新能源电动汽车的动力电池包的工作温度&#xff0c;不仅会影响电池包性能&#xff0c;而且直接关系到车辆安全。时有发生的新能源汽车电池包起火事件&#xff0c;对电池包、冷却系统以及电池管理系统&#xff08;BMS&#xff09…...

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; #Options local_llm llama3 llm ChatOllama(modellocal_llm, format"json", temperature0) #embeddings #embeddings OllamaEmbeddings(model"nomic-embed-text") embed…...

Spring MVC(三) 参数传递

1 Controller到View的参数传递 在Spring MVC中&#xff0c;把值从Controller传递到View共有5中操作方法&#xff0c;分别是。 使用HttpServletRequest或HttpSession。使用ModelAndView。使用Map集合使用Model使用ModelMap 使用HttpServletRequest或HttpSession传值 使用HttpSe…...

常见加解密算法02 - RC4算法分析

RC4是一种广泛使用的流密码&#xff0c;它以其简洁和速度而闻名。区别于块密码&#xff0c;流密码特点在于按位或按字节来进行加密。 RC4由Ron Rivest在1987年设计&#xff0c;尽管它的命名看起来是第四版&#xff0c;实际上它是第一个对外发布的版本。 RC4算法的实施过程简洁…...

如何使用 ERNIE 千帆大模型基于 Flask 搭建智能英语能力评测对话网页机器人(详细教程)

ERNIE 千帆大模型 ERNIE-3.5是一款基于深度学习技术构建的高效语言模型&#xff0c;其强大的综合能力使其在中文应用方面表现出色。相较于其他模型&#xff0c;如微软的ChatGPT&#xff0c;ERNIE-3.5不仅综合能力更强&#xff0c;而且在训练与推理效率上也更高。这使得ERNIE-3…...

Java全局异常处理,@ControllerAdvice异常拦截原理解析【简单易懂】

https://www.bilibili.com/video/BV1sS411c7Mo 文章目录 一、全局异常处理器的类型1-1、实现方式一1-2、实现方式二 二、全局异常拦截点2-1、入口2-2、全局异常拦截器是如何注入到 DispatcherServlet 的 三、ControllerAdvice 如何解析、执行3-1、解析3-2、执行 四、其它4-1、设…...

代码随想录35期Day38-Java(Day37休息)

Day38题目 LeetCode509.斐波那契数列 核心思想:很简单dp[i]dp[i-1]dp[i-2].这里用了数组存储的形式,也可以递归 class Solution {public int fib(int n) {int[] dp new int[n2];dp[0] 0;dp[1] 1;for(int i 2 ; i < n ; i ){dp[i] dp[i-1] dp[i-2];}return dp[n];} …...

力扣HOT100 - 739. 每日温度

解题思路&#xff1a; 单调栈 class Solution {public int[] dailyTemperatures(int[] temperatures) {int length temperatures.length;int[] ans new int[length];Deque<Integer> stack new LinkedList<>();for (int i 0; i < length; i) {int temperatu…...

【爬虫之scrapy框架——尚硅谷(学习笔记one)--基本步骤和原理+爬取当当网(基本步骤)】

爬虫之scrapy框架——基本原理和步骤爬取当当网&#xff08;基本步骤&#xff09; 下载scrapy框架创建项目&#xff08;项目文件夹不能使用数字开头&#xff0c;不能包含汉字&#xff09;创建爬虫文件&#xff08;1&#xff09;第一步&#xff1a;先进入到spiders文件中&#x…...

C++ QT设计模式:责任链模式

基本概念 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;将请求沿着处理链传递&#xff0c;直到有一个对象能够处理为止。 实现的模块有&#xff1a; Handler&#xff08;处理者&#xff09;&#xff1a;定义一个处理…...

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

步骤&#xff1a; 1、项目准备&#xff1a;创建数据库&#xff08;之前已经创建则忽略&#xff09;&#xff0c;以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件&#xff0c;并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …...

【教程向】从零开始创建浏览器插件(六)实战篇

【教程向】从零开始创建浏览器插件(六)实战篇 在这篇文章中,我们将详细介绍一个名为“摸鱼King”的Chrome扩展程序的开发思路。这个扩展程序的主要功能是在用户浏览网页时提供便捷的方式来摸鱼看小说。 完整的工程我放在了完整工程,可以下载下来自己试一试。 1. 主要功能…...

如何用 OceanBase做业务开发——【DBA从入门到实践】第六期

当应用一款新的数据库时&#xff0c;除了基础的安装部署步骤&#xff0c;掌握其应用开发方法才是实现数据库价值的关键。为此&#xff0c;我们特别安排了5月15日&#xff08;周三&#xff09;的《DBA 从入门到实践》第六期课程——本次课程将带大家了解OceanBase数据库的开发流…...

Element-UI快速入门

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c…...

【JavaWeb】网上蛋糕商城后台-商品管理

概念 本文讲解和实现网上蛋糕商城的后台管理系统中的商品管理功能。 商品列表 点击后台管理系统的head.jsp头部的“商品管理”功能选项&#xff0c;向服务器发送请求/admin/goods_list 因此需要在servlet包中创建AdminGoodsListServlet类&#xff0c;用于获取商品信息列表 …...

3大智能策略:sguard_limit如何彻底解决腾讯游戏卡顿难题?

3大智能策略&#xff1a;sguard_limit如何彻底解决腾讯游戏卡顿难题&#xff1f; 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源&#xff0c;支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是否曾在英雄联盟的团…...

【Linux 物联网网关主控系统-Web部分(四)】

Linux 物联网网关主控系统-Web部分&#xff08;四&#xff09;调用关系总体框架main.htmltop.htmlleft.htmlright.htmlcgi部分调用关系 总体框架 main.html 调用的 HTML&#xff1a; top.html left.html right.html &#xff08;框架集页面&#xff0c;加载顶部、左侧、右侧三…...

50天学习FPGA第41天-PCIe的的介绍及使用

目录 简介 配置过程 简介 XDMA是一种DMA/Bridge Subsystem for PCI Express IP,由Xilinx提供。 XDMA IP核设计使用Xilinx提供的DMASubsystem for PCI Express IP是一个高性能、可配置的适用于PCIE 2.0、PCIE 3.0的SG模式DMA,提供用户可选择的AXI4接口或者AXI4-Stream接口。…...

告别VOC数据集:手把手教你用BDD100K训练PyTorch版MobileNetV3-SSD(含数据转换脚本)

从BDD100K到实战&#xff1a;轻量级目标检测模型MobileNetV3-SSD的完整训练指南 在计算机视觉领域&#xff0c;目标检测一直是工业界和学术界关注的焦点。随着边缘计算和移动设备的普及&#xff0c;如何在资源受限的环境中部署高效的目标检测模型成为开发者面临的新挑战。本文将…...

Z-Image-Turbo-辉夜巫女效果实测:LoRA微调模型在Gradio界面的高清出图表现

Z-Image-Turbo-辉夜巫女效果实测&#xff1a;LoRA微调模型在Gradio界面的高清出图表现 1. 模型简介与部署 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型进行LoRA微调后的特殊版本&#xff0c;专门针对生成"辉夜巫女"风格图片进行了优化。该模型通过Xinference框…...

如何判断seo 报价是否合适

如何判断SEO报价是否合适 在当前数字化营销的环境中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为企业提升在线可见性和吸引潜在客户的关键策略。SEO服务的报价各异&#xff0c;不少企业在选择服务时往往会纠结于如何判断一个SEO报价是否合适。本文将从多个角…...

3分钟上手的跨平台模组管理神器:Lumafly核心优势解析

3分钟上手的跨平台模组管理神器&#xff1a;Lumafly核心优势解析 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 还在为空洞骑士模组安装时的依赖缺失而头疼&am…...

PyG实战:用自定义MessagePassing为异构图构建一个简单的推荐系统消息传递层

PyG实战&#xff1a;构建异构图的推荐系统消息传递层 当我们在电商平台上浏览商品时&#xff0c;系统总能精准推荐我们可能感兴趣的内容。这背后往往隐藏着一个复杂的用户-商品交互网络&#xff0c;而图神经网络(GNN)正是处理这类异构关系的利器。今天&#xff0c;我们就来探索…...

SDMatte算法原理浅析:从卷积神经网络看图像分割技术

SDMatte算法原理浅析&#xff1a;从卷积神经网络看图像分割技术 1. 效果展示&#xff1a;当AI学会"精准抠图" 先来看一组实际案例。左边是原始图片&#xff0c;右边是SDMatte算法的处理结果&#xff1a; 你会注意到&#xff0c;即便是复杂场景下的发丝、半透明物体…...

pandas高效筛选技巧:如何精准匹配与排除DataFrame中的特定字符串列

1. 字符串筛选的常见场景与痛点 做数据分析的朋友们应该都遇到过这样的需求&#xff1a;从海量数据中快速找出包含特定关键词的记录。比如电商平台要筛选出所有包含"促销"字样的商品标题&#xff0c;或者客服系统需要过滤掉所有包含"投诉"关键词的工单。这…...