APC注入DLL(win7下有问题)
- void APCKernelRoutine(PKAPC pKAPC,
- PKNORMAL_ROUTINE pUserAPC,
- PVOID pContext,
- PVOID pSysArg1,
- PVOID pSysArg2)
- {
- DbgPrint("APCKernelRoutine Entered\n");
- ExFreePool(pKAPC);
- }
- NTSTATUS InjectDllByAPC(ULONG TargetPid, ULONG TargetTid, PUNICODE_STRING usDllPath, ULONG LdrMethodAddress)
- {
- ULONG size;
- PKTHREAD TargetThread;
- PEPROCESS TargetProcess;
- KAPC_STATE ApcState; ULONG arg1 = 0;
- ULONG arg2 = 0;
- ULONG arg3 = 0;
- DbgPrint("Inside InjectDllByAPC...\n"); size = (unsigned char*)APCMdlCodeEnd - (unsigned char*)APCMdlCode;
- DbgPrint("Allocating MDL (1)...\n"); pMDLApcCode = IoAllocateMdl(APCMdlCode, size, FALSE, FALSE, NULL);
- if (!pMDLApcCode)
- {
- return(STATUS_UNSUCCESSFUL);
- }
- MmProbeAndLockPages(pMDLApcCode, KernelMode, IoWriteAccess);
- RtlZeroMemory(pAPCData, sizeof( pAPCData));
- memcpy( (char*) pAPCData, usDllPath->Buffer, usDllPath->Length);
- unicodeLengthInfo = *(ULONG*) usDllPath;
- pMDLApcData = IoAllocateMdl (pAPCData, sizeof(pAPCData), FALSE,FALSE,NULL);
- if (!pMDLApcData)
- {
- return STATUS_UNSUCCESSFUL;
- }
- MmProbeAndLockPages(pMDLApcData, KernelMode, IoWriteAccess); PsLookupProcessByProcessId((HANDLE)TargetPid, &TargetProcess);
- DbgPrint("Pid: %d, PEPROCESS: 0X%X\n", TargetPid, TargetProcess);
- PsLookupThreadByThreadId ((PVOID) TargetTid, &TargetThread);
- DbgPrint("Tid: %d, PKTHREAD: 0X%X\n", TargetTid, TargetThread); KeStackAttachProcess((PKPROCESS) TargetProcess, &ApcState);
- pMappedCode = (PVOID*) MmMapLockedPagesSpecifyCache(pMDLApcCode, UserMode, MmCached, NULL, FALSE, NormalPagePriority);
- pMappedData = (PVOID*) MmMapLockedPagesSpecifyCache(pMDLApcData, UserMode, MmCached, NULL, FALSE, NormalPagePriority); KeUnstackDetachProcess (&ApcState);
- arg1 = (ULONG) LdrMethodAddress;
- arg2 = (ULONG) pMappedData;
- arg3 = (ULONG) unicodeLengthInfo;
- pKAPC = (PKAPC) ExAllocatePool( NonPagedPool, sizeof(KAPC) );
- RtlZeroMemory(pKAPC, sizeof(KAPC));
- KeInitializeApc(pKAPC, TargetThread, OriginalApcEnvironment,
- (PKKERNEL_ROUTINE)APCKernelRoutine, NULL,
- (PKNORMAL_ROUTINE) pMappedCode,
- UserMode, (PVOID)arg1); KeInsertQueueApc(pKAPC, (PVOID)arg2, (PVOID)arg3, 0);
- //KETHREAD.ApcState.UserApcPending = 1
- //*((unsigned char *)TargetThread + 0x4a) = 1; //XP, 2K3 RTM
- //*((unsigned char *)TargetThread + 0x3e) = 1; //2K3 SP1, SP2
- //*((unsigned char *)TargetThread + 0x4e) = 1; //Vista
- *((unsigned char *)TargetThread + 0x56) = 1; //Win 7
- if (pMDLApcCode)
- {
- MmUnlockPages(pMDLApcCode);
- IoFreeMdl(pMDLApcCode);
- } if (pMDLApcData)
- {
- MmUnlockPages(pMDLApcData);
- IoFreeMdl(pMDLApcData);
- }
- ObDereferenceObject(TargetProcess);
- ObDereferenceObject(TargetThread); return STATUS_SUCCESS;
- }
- void APCMdlCode(PVOID lpLdrLoadDll, PVOID pwsDllPath, PVOID pwsDllPathLength)
- {
- UNICODE_STRING usDllName;
- ULONG DllCharacteristics = 0;
- PVOID DllHandle = 0;
- usDllName.Length = (USHORT) pwsDllPathLength;
- usDllName.MaximumLength = usDllName.Length + 2;
- usDllName.Buffer = (WCHAR*) pwsDllPath;
- __asm
- {
- pushad lea eax, DllHandle
- push eax
- lea eax, usDllName
- push eax
- lea eax, DllCharacteristics
- push eax
- push 0
- call [lpLdrLoadDll] nop
- nop
- popad }
- }
- void APCMdlCodeEnd()
- {
- }
APC注入DLL(win7下有问题)的更多相关文章
- 分析恶意驱动(进程启动apc注入dll)
一.前言 用IDA也有好些时间了,以前就只会用F5功能玩无壳无保护的裸驱动,感觉太坑了,这两天就开始看网上大牛的逆向. 今天记录一下sudami曾经逆向过的fuck.sys.第一遍自己走的时候漏掉了 ...
- Dll注入:Ring3 层 APC注入
APC,即Asynchronous procedure call,异步程序调用APC注入的原理是:在一个进程中,当一个执行到SleepEx()或者WaitForSingleObjectEx()时,系统 ...
- Dll注入技术之APC注入
APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下: 1)当EXE里某个线程执行到SleepEx( ...
- DLL注入-APC注入
APC注入 APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下: 1)当EXE里某个线程执行到Sl ...
- win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9
原文:win7下的PHP+IIS配置,找不到php5isapi.dll的问题,版本5.4.9 问题:PHP新手配置,在官网上下载的压缩包.按网上的找的教程配置IIS时发现,在解压包里找不到php5is ...
- win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法 收藏
win8和win7下解决php5.3和5.4.5.5等不能加载php_curl.dll的终极解决办法 收藏2015年01月11日 最近分别在WIN7和Windows8 上分别安装php 高版本!都遇到 ...
- win7 下注册dll文件失败
1.win7 下注册dll文件失败,提示模块“xx.dll”已加载,但找不到入口点DllRegisterServer 原因:该dll文件非可注册组件,没有包含DllRegisterServer函数,可 ...
- D2007在win7下bordbk105N.dll 莫名其妙的问题。
已经装过一次win7下d2007.再装一次就出现许多莫名其妙的问题.其中之一: Windows 7 64bit Delphi Debugger Fix / Workaround 2013-08-28 ...
- Windows x86/ x64 Ring3层注入Dll总结
欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线 ...
随机推荐
- Shiro学习(5)编码、加密
在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码.比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储. 5.1 编码/解码 Shir ...
- (转)OpenFire源码学习之一:XMPP基础知识
转:http://blog.csdn.net/huwenfeng_2011/article/details/43412919 前面两张主要讲基础部分.XMPP与Mina有部分抄写于互联网的其他大事 X ...
- Zend Studio出现 Some characters cannot be mapped using "GBK" character encoding 错误
解决办法: Window->Profermance->General->Content Types->Text看目录下面的每个文件,包括子目录里面 Default encodi ...
- CSS:百科
ylbtech-CSS:百科 1.返回顶部 CSS (层叠样式表) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标 ...
- 在Python的列表中利用remove()方法删除元素的教程
在Python的列表中利用remove()方法删除元素的教程 这篇文章主要介绍了在Python的列表中利用remove()方法删除元素的教程,是Python入门中的基础知识,注意其和pop()方法的区 ...
- msgbox用法
http://www.w3school.com.cn/vbscript/func_msgbox.asp VBScript MsgBox 函数 VBScript 函数参考手册 定义和用法 MsgBox ...
- 【Stanford Machine Learning Open Course】学习笔记目录
这里是斯坦福大学机器学习网络课程的学习笔记. 课程地址是:https://class.coursera.org/ml-2012-002/lecture/index 课程资料百度网盘分享链接:https ...
- Lambda表达式演变历史
/// <summary> /// 爬虫委托 /// </summary> /// <param name="crawlerCode">爬虫编码 ...
- Excel函数——ANSI字符集与Code、Char、Asc函数
小叙背景 Windows系统下,默认的字符集为ANSI,该字符编码方式在不同语言环境下采用不同的编码方案,在中文系统下ANSI编码是GBK.ANSI由ASCII扩展而来,ANSI下无论何种具体的编码方 ...
- linux每日命令(2):ps命令
ps命令真是我比较常用的命令了,只是也没咋仔细研究过,最大的用处就是写代码的时候,起了多进程,就会占用多个进程,如果程序异常了,进程确没有kill掉,那么再启动程序就会报错 正常起项目 如果进程被占用 ...