进程注入代码

通用注入工具无驱版(HOOK注入、远程注入)(DELPHI源码) 很方便、很小巧的注入工具,(含HOOK注入、远程注入///DELPHI源码) 立即下载

向一个运行中的进程注入自己的代码,最自然莫过于使用 CreateRemoteThread,如今远线程注入已经是泛滥成灾,同样的监测远线程注入、防止远线程注入的工具也举不胜举,一个木马或后门启动时向 Explorer或IE的注入操作就像在自己脸上写上“我是贼”一样。

 

用户态代码想要更隐蔽地藏身于别的进程,就应该在注入的环节隐蔽自己的行为。下面就介绍一种非常简单不过比较暴力的方法,给出的示例为在Explorer里加载自己的dll。

 

首先提到的就是一个API:QueueUserAPC

 

DWORD QueueUserAPC(

PAPCFUNC pfnAPC, // APC function

HANDLE hThread, // handle to thread

ULONG_PTR dwData // APC function parameter ;

 

大家对这个API应该并不陌生,它直接转入了系统服务NtQueueApcThread从而 利用KeInsertQueueApc向给出的目标线程的APC队列插入一APC对象。倘若KiDeliverApc顺利的去构造apc环境并执行我们的 代码那一切就OK了,只可惜没有那么顺利的事,ApcState中UserApcPending是否为TRUE有重要的影响,结果往往是你等到花儿都谢了 你的代码还是没得到执行。在核心态往往不成问题,自己动手赋值,可是用户态程序可不好做,怎么办?其实最简单的,不好做就不做啰,让系统去干。

 

实际上应用程序在请求“alertable”的等待时系统就会置 UserApcPending为TRUE(当 KeDelayExecutionThread/KeWaitForMultipleObjects/KeWaitForSingleObject 使用TestForAlertPending时就有可能,此外还有KeTestAlertThread等,机会还是有的),最简单的例子,目标线程调用 SleepEx(***, TRUE)后我们插入APC代码就会乖乖执行了。

 

比较幸运的是Explorer进程中一般情况下总有合我们意的线程,于是最简单但并不优美的办法就是枚举Explorer中所有线程,全数插入,示意如下:   ......

DWORD ret;

char *DllName = "c://MyDll.dll";

int len = strlen(DllName) + 1;

PVOID param = VirtualAllocEx(hProcess, NULL, len,

MEM_COMMIT | MEM_TOP_DOWN,

PAGE_READWRITE);

if (param != NULL)

{

if (WriteProcessMemory(hProcess, param,

(LPVOID)DllName, len, &ret))

{

for (DWORD p = 0; p < NumberOfThreads; p ++)

{

hThread = OpenThread(THREAD_ALL_ACCESS, 0, ThreadId[p]);

if (hThread != 0)

{

InjectDll(hProcess, hThread, (DWORD)param);

CloseHandle(hThread);

}

}

}

......

其中InjectDll:

void InjectDll(HANDLE hProcess, HANDLE hThread, DWORD param)

{

QueueUserAPC(

(PAPCFUNC)GetProcAddress(GetModuleHandle("kernel32.dll", "LoadLibraryA",

hThread,

(DWORD)param

;

}

 
delphi判断线程状态 立即下载

相关推荐

delphi冻结进程

delphi OpenThread函数的使用

找主线程TID Delphi版

function GetMainTID(Pid:Cardinal):Cardinal; {uses Winapi.TlHelp32 function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwThreadId: DWORD): THandle; stdcall; external Kernel32 name 'OpenT...

hksoobe的专栏 450

dll注入Hook

dll注入,包含:目标进程,目标dll,注入进程,注入dll 详细的解释了如何注入和如何Hook相关dll的函数,截取数据并篡改 最后返回

QueueUserAPC Function

  miranda-APC(异步过程调用)分析  APC : asynchronous procdure call 异步过程调用    Alertable IO(告警IO)提供了更有效的异步通知形式。ReadFileEx / WriteFileEx在发出IO请求的同时,    提供一个回调函数(APC过程)

asdfasdfsadf 1319

告别复杂配置:利用原生DDNS实现IPv6直连群晖的极简指南

本文详细介绍了如何利用原生DDNS实现IPv6直连群晖NAS的极简方法,告别复杂配置。从检查IPv6网络环境、路由器防火墙设置到群晖DDNS配置,一步步指导用户完成设置,并分享移动网络下的使用体验和安全防护建议,帮助用户轻松实现远程访问。

weixin_30918633的博客 414

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选?

本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。

Black的专栏 931

Delphi线程定时器

(* 自己编写的线程计时器,没有采用消息机制,很有效 Cobbler续写 不用 TTimer 的原因: 要说TTimer类的使用问题,先要说一下它响应用户定义的回调函数(OnTimer)的方法。 TTimer拥有一个HWnd类型的成员变量FWindowHandle,用于捕捉系统消息。 TTimer在Enable的情况下,每隔Inter...

weixin_30875157的博客 484

从零开始掌握Simscape Multibody:机械系统建模与仿真入门

本文为机械系统建模与仿真入门指南,详细介绍了如何从零开始使用Simscape Multibody。通过构建曲柄摇块机构的实战案例,系统讲解了刚体、关节、约束等核心模块的使用,以及模型验证、参数化设计和多领域系统集成等进阶技巧,帮助工程师和学生高效进行虚拟设计与测试。

weixin_29229261的博客 310

QueueUserApc实现DLL注入

http://bbs.pediy.com/showthread.php?t=56071

tikycc2的专栏 693

tiny4412用 usb 连接计算机显示sec s5pc210 test b/d 解决方法

当我用USB线连接tiny4412的microUSB端口的时候,出现了驱动没有正常安装,显示“sec s5pc210 test b/d” 出现这种问题的原因有: 1、没有安装到正确的USB驱动; 2、SD卡没有插好 我出现问题的原因属于第二种,插入SD卡后,上电后,LCD屏亮了,但没有任何显示   解决方法是:     更换一张SD卡,重新插入开发板卡槽,上电开

karaskass的博客 3231

拯救者Y9000P 2022双系统实战:Ubuntu22.04分区优化与驱动避坑指南

本文提供联想拯救者Y9000P 2022款安装Ubuntu 22.04双系统的详细实战指南。重点讲解针对该机型的磁盘分区优化方案、NVIDIA显卡驱动安装避坑技巧,以及安装后的网络、时间同步等必备配置,帮助用户高效完成双系统部署并提升使用体验。

weixin_29208327的博客 424

向其他进程注入代码的三种方法

  发表日期:2005年7月3日      作者:袁晓辉 译     【编辑录入:webmaster】  向其他进程注入代码的三种方法    本文章翻译自Robet Kuster的Three Ways to Inject Your Code into Another Process一文,原版地址见下面。本文章版权归原作者所有。   

turobber_tu的专栏 742

28、数字电路测试与半导体内存测试全解析

本文全面解析了数字电路中的顺序电路测试生成方法与半导体内存测试技术。内容涵盖顺序电路中的故障检测、多重观察测试、可驱动性分析、伪组合电路测试及初始化问题,并深入探讨了内存技术发展、故障模型、测试流程与未来趋势。重点介绍了DRAM、SRAM等主流内存类型的特点,以及制造和使用过程中面临的永久性与非永久性故障挑战,提出了基于故障模型的高效测试策略与优化方案。

go5gopher的博客 122

python注入进程_向进程中注入Python代码

我想把Python代码注入到一个进程中,当它注入时,它似乎会使我的进程崩溃。我没有在我自己的程序中得到任何错误,但目标进程停止工作。被调用的非托管api没有给我任何错误,并且似乎已经正确地执行了它们的执行。在[DllImport("kernel32")]public static extern IntPtr CreateRemoteThread(IntPtr hProcess,IntPtr lpT...

weixin_31036949的博客 1678

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

【WorkBuddy专栏32】从「分文件夹」到「组队打仗」——WorkBuddy v5.0项目模式深度拆解

AI人人懂 297

廉价却有效?ESD防护中的电容

摘要:在成本敏感型电子产品设计中,多层陶瓷电容(MLCC)可作为TVS二极管的替代方案用于静电放电(ESD)防护。其工作原理是通过电容充放电特性吸收静电能量,而非电压钳位。计算表明100nF/50V MLCC可有效缓冲8kV静电冲击,但存在吸收能量有限、无自恢复等局限。建议将MLCC作为一级缓冲措施,配合TVS等器件形成多级防护,并优先选择X7R材质、100nF容值、50V耐压的0402/0603封装MLCC。该方案在低速信号和电源引脚防护中具有显著成本优势,但不能完全替代专业ESD抑制器。

硬核科技 431

java进程 代码注入 (Powered by zms)

此代码注入非依赖注入,是hack里的 代码注入 场景是这样滴: 机器上有一个java进程,我不想停止它,但我想把一段代码植入进去,干 一些事情(获取一些信息,改变一些值,监控一些东西,或者其它猥琐的事情) 这个进程不能停,而且也没有预料到现在的事情,或者这个进程的代码完全不能修改。 好,这篇文章是要干这个事情,它基于 jvm的 jdi或者jvmti 接口 这里用的jvmti,...

菜鸟 1722

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

无需Ptrace就能实现Linux进程间代码注入

本文讲的是无需Ptrace就能实现Linux进程间代码注入, ptrace系统调用 ptrace系统调从名字上看是用于进程跟踪的,它提供了父进程可以观察和控制其子进程执行的能力,并允许父进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是: 当使用了ptrace跟踪后,所有发送给被跟踪的子进程的信号(除了SIGKILL),都会被转发给父进程,...

weixin_33806300的博客 997

Statistics and Machine Learning Toolbox

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

HotIce0 9326

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

代码注入进程代码实现

#include"windows.h" #include"tchar.h" typedef struct _THREAD_PARAM { FARPROC pFunc[2]; //LoadLibraryA(),GetProcessAddress() }THREAD_PARAM,*PTHREAD_PARAM; BYTE g_InjectionCode[] = { }; BOOL InjectCo...

九层台 1269

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

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

TCP/IP 6897

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

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

sevenpic的专栏 7757
上一篇: IRP hooking and Device Chains
下一篇: 很少人用的下载者方法
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值