一份进程注入的代码

把dll模块注入到游戏进程的方法_挂起进程注入 挂起进程注入是指在创建进程的时候把运行状态设置为挂起,然后创建一个远程线程,来注入。挂起进程注入作为远线程注入的一个补充,可以在进程创建的时候就注入,从而注入时间较早,不宜被拦截。易知挂起进程注入的局限性也就是如果进程已经启动,那么这种注入方式就不行了。 阅读详情
// Injection.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "Injection.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 唯一的应用程序对象

CWinApp theApp;

using namespace std;

typedef struct _RemotePara{//参数结构
   char pMessageBox[12];
   DWORD dwMessageBox;
}RemotePara;
//远程线程
DWORD __stdcall ThreadProc (RemotePara *lpPara){
   typedef int (__stdcall *MMessageBoxA)(HWND,LPCTSTR,LPCTSTR,DWORD);//定义MessageBox函数
   MMessageBoxA myMessageBoxA;
   myMessageBoxA =(MMessageBoxA) lpPara->dwMessageBox ;//得到函数入口地址
   myMessageBoxA(NULL,lpPara->pMessageBox ,lpPara->pMessageBox,0);//call
   return 0;
}
void EnableDebugPriv();//提升应用级调试权限

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    const DWORD THREADSIZE=1024*4;
   DWORD byte_write;
   EnableDebugPriv();//提升权限
   HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,760);
   if(!hWnd)return 0;
   void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);
   if(!pRemoteThread)return 0;
   if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))
   return 0;

   //再付值
   RemotePara myRemotePara;
   ::ZeroMemory(&myRemotePara,sizeof(RemotePara));
   HINSTANCE hUser32 = ::LoadLibrary ("user32.dll");
   myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA");
   strcat(myRemotePara.pMessageBox,"hello/0");
   //写进目标进程
   RemotePara *pRemotePara =(RemotePara *) ::VirtualAllocEx (hWnd ,0,sizeof(RemotePara),MEM_COMMIT,PAGE_READWRITE);//注意申请空间时的页面属性
   if(!pRemotePara)return 0;
   if(!::WriteProcessMemory (hWnd ,pRemotePara,&myRemotePara,sizeof myRemotePara,0))return 0;

   //启动线程
   HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,pRemotePara,0,&byte_write);
   if(!hThread){
      return 0;
   }
    return 0;
}

void EnableDebugPriv( void )
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;

if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
return;
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){
CloseHandle( hToken );
return;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
CloseHandle( hToken );
}
进程注入bypass Control Flow Guard(CFG)是一种微软引入的防护技术,最早在 Windows 8.1 中加入,并在 Windows 10 及后续版本中得到了加强。它的核心目标是防止程序中的恶意代码劫持控制流,从而实现对系统的恶意操作。在正常程序运行中,程序的控制流(即代码的执行顺序)会根据不同的条件跳转到不同的位置。攻击者通过注入恶意代码或者篡改程序控制流,能够导致程序执行恶意操作,如获取管理员权限、窃取数据等。 阅读详情

相关推荐

Traditionellsans

Traditionellsans

代码注入——c++代码注入

代码注入之——c++代码注入 0x00 代码注入和DLL注入的区别 DLL注入后DLL会通过线程常驻在某个process中,而代码注入完成之后立即消失。 代码注入体积小,不占内存 0x01 通过c++编写注入代码 1)编写注入程序 代码如下: // CodeInjection.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #in...

weixin_30929011的博客 1258

Starsans

Starsans

《逆向工程核心原理》----第28章 汇编进行代码注入

一、dll注入和代码注入的区别 1.首先字面意思,前者将整个包含攻击函数的dll注入到其他进程中去,后者直接注入可独立运行的代码,也被称为线程注入。 dll注入:将攻击函数包含在dll中,加载dll则会执行,然后用VirtualAllocEx给目标进程分配空间,WriteProcessMemory写入该dll,并用LoadLibarary加载kernal32,然后用GetProcAddress得到LoadLibarary的地址,最后创建一个远程线程,执行LoadLibarary加载dll。 代码注入:

qq_55785697的博客 1613

Work-Sans:怪异的sans

工作无 Sans工作的一部分是在库林族的Wurundjeri和Boon Wurrung人民的被盗土地上进行的。 我对他们的长辈,过去,现在和将来表示敬意。 主权从未割让。 如果您使用过Sans,请考虑支持并捐赠以下土著组织和基金: 其他一些链接: 2018–2020更新 Work Sans已在2018–2020年之间进行了更新,并附带了斜体,可变字体文件,并且字符集已扩展为,该现在将支持越南语以及以下其他语言: 其他语言Abenaki,Afaan Oromo,Afar,阿尔巴尼亚语,阿尔萨斯语,Amis,Anuta,Aragonese,Aranese,Aromanian,Arrernte

SANS SEC 760.1.pdf

SANS SEC 760,

【网络杂烩 ---> 网络安全】DLL 注入 --- c/c++ 代码实现(超 · 详细)

DLL 注入(英语:DLL injection)是一种涉及计算机信息安全的特殊编程技术。它可以强行使一个 进程加载某个 动态链接库以在其私有地址空间内运行指定 代码(往往是恶意代码)。DLL 注入的常见手段是用外部 DLL 库覆盖一个程序原先的 DLL 库,目的是实现该程序的作者未预期的结果。比如,注入的代码可以 挂钩(Hook)系统消息或系统调用,以达到读取密码框的内容等危险目的,而一般编程手段无法达成这些目的。

扑腾的江鱼复习仓库 5754

Sans(普通审判)2.0.sb2

有彩蛋 (原作者)

DLL注入

DLL注入远程进程

enjoy5512的博客 883

不写代码,Cursor 10分钟开发1个APP!保姆级教程喂饭来了

做出第一个能运行的app,那种成就感真的很棒。虽然过程可能有点折腾,但只要耐心一点,问题都能解决。记住,遇到问题不要慌,现在有AI帮忙,大部分问题都能快速解决。重要的是迈出第一步,开始动手实践。你的第一个app可能很简单,但这是一个很好的开始。随着经验积累,你能做出的东西会越来越酷。现在就开始行动吧,说不定下个月你就能向朋友炫耀你自己做的app了!

chenhong007的博客 1548

IEC103协议实战指南:报文解析与传输优化策略

本文深入解析IEC103协议在电力自动化系统中的核心应用,重点拆解其固定帧与可变帧两种报文格式,并详细阐述了主从问答与非平衡传输机制。文章结合实战经验,针对报文解析中的常见问题(如字节序、超时重发)提供了解决方案,并探讨了传输层优化策略,旨在帮助工程师实现更可靠、高效的通信链路。

r2s3t4的博客 541

Dll注入分析

我要实现向指定进程加载一个DLL,以下是我的做法,单步调试整个过程没有失败,但结果并没有注入成功,请帮我改改,或者按我的需求给个新的函数也行。[quote]bool LoadMod

pl2597758的专栏 612

到底是什么决定了二极管的最高工作频率?

硬件工程师,应该都用过二极管的吧,不过也许有一个误区,大多数人可能并不知道,或者说是理解有问题,下面就来细细说下。 一个问题 先提一个问题:到底是什么决定了二极管的最高工作频率? 估计有不少人会回答是二极管反向恢复时间Trr,也有人会说是二极管结电容,那到底谁是对的呢?或者说都一样,反向恢复时间由结电容决定? 到底什么决定了二极管的最高工作频率,我们暂且不论,不过需要知道的是,二极管的反向恢复时间和结电容根本就是两回事,反向恢复时间绝不能等同于结电容的充放电时间。 为什么我这么说呢?.

weixin_42005993的博客 4832

修改任意Linux进程地址空间实施代码注入

提到进程注入,常规的方案就是使用ptrace,其POKEDATA,POKETEXT命令选项单从名字上就知道是干什么的,这里不再赘述。 然而ptrace是个系统化的东西,太复杂,不适合玩手艺,有没有什么适合手工玩的东西呢?当然有! 正如读写/dev/mem可以手工完成crash+gdb的功能hack内核一样,每一个用户态进程也有一个mem文件,即 /proc/$pid/mem 。 我不敢保证每一个系统该文件都可写,但一旦它可写就好玩了。 /proc/$pid/mem文件抽象的一个进程的地址空间,直接写该文

TCP/IP 6897

深入解析璞致PZ-ZU47DR RFSoC核心板:硬件架构与多通道ADC/DAC设计实战

本文深入解析璞致PZ-ZU47DR RFSoC核心板的硬件架构与多通道ADC/DAC设计实战。作为Xilinx Zynq UltraScale+ RFSoC系列的代表产品,PZ-ZU47DR集成了8通道5GSPS ADC和8通道9.85GSPS DAC,支持直接射频采样,大幅简化射频链路设计。文章详细介绍了其技术优势、设计挑战及实战技巧,为5G小基站、毫米波等应用场景提供高效解决方案。

meat5的博客 832

树莓派5搭建ROS1开发环境:从系统安装到环境变量配置

本文详细指导如何在树莓派5上搭建ROS1开发环境。针对树莓派OS非标准安装路径导致的常见CMake报错问题,提供了从系统烧录、一键安装ROS到关键环境变量配置的完整解决方案,确保工作空间能成功编译,助力机器人项目开发。

weixin_29159127的博客 384

进程注入系列Part 1 常见的进程注入手段

进程注入是一种众所周知的技术,恶意程序利用它在进程的内存中插入并执行代码。进程注入是一种恶意程序广泛使用的防御规避技术。大多数情况下,恶意程序使用进程注入来动态运行代码,这意味着实际的恶意代码不需要直接写入磁盘上的文件中,以避免被防病毒软件的静态检测所发现。简单来说,进程注入就是将一段数据从一个进程传输到另一个进程的方法,这种注入过程可以发生在执行操作的同一进程(自注入)上,也可发生在外部进程上。

蛇矛实验室 2336

Dify与钉钉轻量级集成:打造企业内部AI助手

企业级聊天机器人开发已成为提升内部协同效率的关键技术。其核心原理在于通过API集成,将AI模型能力与即时通讯平台无缝连接,实现智能问答与自动化流程。从技术价值看,这种集成方案能够显著降低AI应用落地门槛,将前沿的AI能力快速转化为实际生产力。在应用场景上,它尤其适用于HR答疑、IT技术支持、产品知识库等高频内部服务场景。本文聚焦于Dify与钉钉的轻量级集成方案,通过Stream模式实现高效消息处理,并利用AI卡片支持流式输出,为企业构建体验自然的智能机器人提供了完整实践路径。该方案特别强调配置简化与部署便捷

weixin_27155667的博客 696

你真的了解进程注入吗?

这里的第一个参数还是跟上面一样进程的句柄,第二个参数设置为nullptr,第三个参数就是shellcode的大小,第四个参数表示指向一个应用程序定义的函数的指针,这个参数的类型为 LPTHREAD_START_ROUTINE,这里的第一个参数就是我们进程的句柄,第二个参数就是我们使用VirtualAllocEx申请的地址,第三个参数就是shellcode,第四个参数表示shellcode的大小,最后一个参数就是写入字节数的输出参数。对于要运行的进程,它必须有一个正在运行的线程,该线程是运行代码的组件。

weixin_65550121的博客 2303

9.9元ESP32-C3开发板实战:手把手教你用VSCode搭建RT-Thread最小系统(附避坑指南)

本文提供了一份详尽的实战指南,教你如何在售价仅9.9元的ESP32-C3开发板上,使用VSCode搭建RT-Thread最小系统。内容涵盖从ESP-IDF环境配置、BSP源码获取、内核补丁应用到编译下载与调试的全流程,并重点分享了版本选择、补丁应用等关键避坑技巧,旨在帮助开发者低成本、高效地启动嵌入式实时操作系统开发。

o4p5q6r7s的博客 226

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度!

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度! (以YOLO26最新目标检测模型为基础,利用LSKNet替代Backbone)

2502_91881744的博客 211

直接将自身代码注入傀儡进程

<br />EXE注入-傀儡进程2008-08-16 16:38<br />      直接将自身代码注入傀儡进程,不需要DLL。首先用CreateProcess来创建一个挂起的IE进程,创建时候就把它挂起。然后得到它的装载基址,使用函数ZwUnmapViewOfSection来卸载这个这个基址内存空间的数据,。再用VirtualAllocEx来个ie进程重新分配内存空间,大小为要注入程序的大小(就是自身的imagesize)。使用WriteProcessMemory重新写IE进程的基址,就是刚才分配的内存

sevenpic的专栏 7757

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[ptrace修改内存]实现进程代码注入

一、背景 ptrace是Unix系列系统的系统调用之一。其主要功能是实现对进程的追踪。对目标进程,进行流程控制,用户寄存器值读取&amp;amp;amp;amp;amp;amp;amp;amp;写入操作,内存进行读取&amp;amp;amp;amp;amp;amp;amp;amp;修改。这样的特性,就非常适合,用于编写实现,远程代码注入。大部分的病毒会使用到这一点,实现,自用空间注入,rip位置直接注入,text段与data段之间的空隙注入。 二、主要流程 实验使用的方式是,直接rip

HotIce0 9325

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 枚举注册表键名与键值
下一篇: 枚举系统进程核心代码
goingup
博客等级 码龄22年 52粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值