CreateRemoteThread注入DLL奇怪的问题 [问题点数:300分,结帖人greatws]

Bbs7
本版专家分:23237
结帖率 100%
Bbs5
本版专家分:3730
版主
Blank
红花 2010年9月 软件工程/管理大版内专家分月排行榜第一
2010年1月 软件工程/管理大版内专家分月排行榜第一
Bbs4
本版专家分:1221
Bbs4
本版专家分:1221
Bbs12
本版专家分:433003
版主
Blank
榜眼 2009年 总版技术专家分年内排行榜第二
2005年 总版技术专家分年内排行榜第二
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2009年7月 总版技术专家分月排行榜第二
2009年3月 总版技术专家分月排行榜第二
2009年1月 总版技术专家分月排行榜第二
2005年7月 总版技术专家分月排行榜第二
2005年5月 总版技术专家分月排行榜第二
2005年3月 总版技术专家分月排行榜第二
Blank
优秀版主 优秀小版主
2015年8月优秀小版主
2015年9月优秀小版主
2015年5月优秀小版主
2015年2月论坛优秀版主
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs8
本版专家分:32294
Blank
金牌 2009年5月 总版技术专家分月排行榜第一
Blank
红花 2009年5月 VC/MFC大版内专家分月排行榜第一
Bbs6
本版专家分:7391
Bbs7
本版专家分:10431
Bbs7
本版专家分:13190
Bbs7
本版专家分:23237
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs7
本版专家分:23237
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs7
本版专家分:23237
Bbs2
本版专家分:183
Bbs4
本版专家分:1221
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs11
本版专家分:255346
Blank
状元 2008年 总版技术专家分年内排行榜第一
Blank
进士 2009年 总版技术专家分年内排行榜第四
Blank
金牌 2009年2月 总版技术专家分月排行榜第一
2009年1月 总版技术专家分月排行榜第一
2008年11月 总版技术专家分月排行榜第一
2008年10月 总版技术专家分月排行榜第一
2008年9月 总版技术专家分月排行榜第一
2008年8月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第一
2008年6月 总版技术专家分月排行榜第一
2008年5月 总版技术专家分月排行榜第一
2008年4月 总版技术专家分月排行榜第一
Blank
银牌 2008年12月 总版技术专家分月排行榜第二
2008年3月 总版技术专家分月排行榜第二
2008年2月 总版技术专家分月排行榜第二
Bbs7
本版专家分:23237
Bbs7
本版专家分:16799
Bbs4
本版专家分:1589
Bbs2
本版专家分:333
Bbs1
本版专家分:10
Bbs3
本版专家分:685
Bbs4
本版专家分:1200
Bbs1
本版专家分:42
Bbs2
本版专家分:262
Bbs1
本版专家分:55
Bbs3
本版专家分:718
Bbs7
本版专家分:23237
Bbs7
本版专家分:12237
Blank
蓝花 2006年3月 PowerBuilder大版内专家分月排行榜第三
2002年8月 PowerBuilder大版内专家分月排行榜第三
Bbs7
本版专家分:23237
Bbs7
本版专家分:16799
Bbs7
本版专家分:16799
Bbs2
本版专家分:262
Bbs1
本版专家分:0
Bbs1
本版专家分:0
XP 下 CreateRemoteThread 的奇怪问题
void Load()rnrn BOOL bSuccess = FALSE; rn STARTUPINFO si = 0;rn PROCESS_INFORMATION pi = 0;rn si.cb = sizeof(si);rnrn DWORD dwCreateFlag = CREATE_SUSPENDED;rnrn TCHAR szFile1[] = TEXT("C:\\windows\\system32\\notepad.exe");rn bSuccess = ::CreateProcess( NULL, szFile1, NULL, NULL, FALSE, dwCreateFlag, NULL, NULL, &si, &pi );rnrn wchar_t szFilePath[MAX_PATH] = L"C:\\windows\\system32\\user32.<em>dll</em>";rnrn LPVOID lpFilePath = VirtualAllocEx( pi.hProcess,NULL,sizeof(szFilePath),MEM_COMMIT,PAGE_READWRITE );rn if( lpFilePath )rn rn DWORD dwBytes = 0;rn WriteProcessMemory( pi.hProcess, lpFilePath, szFilePath, MAX_PATH, &dwBytes );rn HMODULE hKernel = GetModuleHandleW(L"Kernel32.<em>dll</em>");rn LPVOID pLoadLibrary = GetProcAddress( hKernel,"LoadLibraryW" );rnrn DWORD dwThreadId = 0;rn HANDLE hThread = NULL;rn hThread = CreateRemoteThread( pi.hProcess,NULL,0,(LPTHREAD_START_ROUTINE)pLoadLibrary,lpFilePath,CREATE_SUSPENDED,&dwThreadId );rn ResumeThread(hThread);rn rn // 远程线程运行起来后 先 Sleep(5) 能出现记事本窗口, Sleep(10) 以上就不行了rn Sleep(10);rn //rn ResumeThread( pi.hThread );rnrn========================================rn就以上一个简单的创建远程线程的例子,在 Windows7、Windows 2003 下正常运行,并且无论 Sleep 多长时间都可以看到记事本窗口,但 XP 下就不行了,Sleep 超过 5 ms Notepad 进程都是突然无影踪rn这如何解析?
远程DLL注入
远程DLL<em>注入</em>远程DLL<em>注入</em>远程DLL<em>注入</em>远程DLL<em>注入</em>远程DLL<em>注入</em>远程DLL<em>注入</em>
dll注入例子
该例子是利用CreateRemoteThread 实行远程代码<em>注入</em>的一个demo.
dll注入源码dll注入源码
<em>dll</em><em>注入</em>源码<em>dll</em><em>注入</em>源码<em>dll</em><em>注入</em>源码<em>dll</em><em>注入</em>源码<em>dll</em><em>注入</em>源码<em>dll</em><em>注入</em>源码
dll注入之SetWindowsHookEx 键盘消息钩子
1.背景知识 n在实际应用中,键盘监控是一种很常见的技术,它包括按键的记录、按键的过滤、按键的修改(映射)等。比方说,我们想统计用户的击键情况,这个就是按键的记录;我们想屏蔽某些系统键(例如Alt键、Win键),这个是按键的过滤;我们想改变按键的值,例如按下A,出来的是Z,在例如按下A,出来按键的组合SDFG等(貌似这个在游戏中比较多,有些游戏的大绝招都比较难按,用这个一劳永逸),这个是按键的修改...
DLL注入-APC注入
DLL<em>注入</em>-APC<em>注入</em>
MyPro,DLL注入,MASM汇编
MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编MyPro,DLL<em>注入</em>,MASM汇编
Dll注入+呼出 Dll注入+呼出
Dll<em>注入</em>+呼出Dll<em>注入</em>+呼出Dll<em>注入</em>+呼出Dll<em>注入</em>+呼出 delphi源代码
Windows自删除程序和DLL
Windows自删除程序和DLL参照文章 http://blog.csdn.net/rxxi/article/details/741557做了个自删除的程序SelfDelete。代码下载(我的FTP服务器,用户名密码=pub):ftp://pub:pub@pepstack.com/tarball/SelfDelete_vs2010.tar.gz其中包含2个项目,一个是SelfDel32,这是个动态
dll注入dll注入
<em>dll</em><em>注入</em>.rar <em>dll</em><em>注入</em>.rar <em>dll</em><em>注入</em>.rar
使用CreateRemoteThread()的注入工具
学了一下午,简单的写了一个<em>注入</em>工具。下面是代码,用的CreateRemoteThread()方法。n// RemoteControl.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。n//n#include &lt;Windows.h&gt;n#include &lt;iostream&gt;n#include &lt;string&gt;n#include &lt;std...
DLL注入和代码注入学习心得
预备知识windows消息钩取钩子顾名思义就是钩取消息的钩子,例如:windows消息钩取就像古代传递消息的士兵,被截获消息被敌人截取查看或修改后继续传递。windows消息流举个例子:键盘消息:用户从键盘上输入消息WM_KEYDOWN,os系统接收到后将消息放到 操作系统消息队列中,操作系统判断哪个应用程序中发生了事件,将操作系统消息队列中的键盘上输入消息WM_KEYDOWN放到应用程序消息队列中
关于内存加载DLL后修复重定位的问题
看网上的代码好累,摸索整理了一下,顺便巩固下PErnrn首先介绍下PE头,分为2个部分rnrn1、DOS头 (IMAGE_DOS_HEADER)rnrnrnrnrnrn[cpp] viewrn plain copyrnrnrn print?rnrnrnrntypedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header  rn    WORD  
c++实现DLL注入的几种方式
经过几天的折腾,找到了几个<em>dll</em><em>注入</em>的方法,但是不意外的是,都暂时没法<em>注入</em>到LOL中,毕竟有进程保护在那,OpenProcess这一步就直接被拒绝了,提升Debug权限也没用,下面记录一些代码,希望能够得到大牛指导,一个人学习有点蒙。目前实测了CreateRemoteThread,QueueUserApc,和ReflectInject三种<em>注入</em>方式,具体可以参考https://zhuanlan.zh
windows核心编程之DLL注入例子分析
windows核心编程一书中的<em>注入</em>DLL的例子是一个小应用:Desktop Item Position Saver(DIPS)工具。该工具的作用是:保存桌面上图标的位置,并可在之后恢复桌面图标的位置。实现DISP的先决条件是取得桌面各个图标的位置,我们需要先取得桌面的ListView控件的窗口句柄,向该窗口发送消息来枚举其中的元素,得到桌面图标的位置。获取桌面位置可以用下面的宏实现:#define
DLL注入器编写
前段时间一直学习逆向工程核心原理,由于缺少WINAPI只是,后面的nn内容学起来有些抽象,于是反回去大致扫了一下《Windows核心编程》nn花了些时间写了个DLL<em>注入</em>器。nn    基本原理nn                  进程对象在windows中,地址空间基本都是相对独立的,一nn个进程无法操作其他进程的空间,但是通过创建远程进程的线程,在原nn来进程的主线程之上添加一个线程,该线程属...
Windows注入与拦截(1) -- DLL注入的基本原理
一. DLL<em>注入</em>技术的用途nn从前面的《Windows内存体系》系列文章中我们可以知道,在Windows系统中,每个进程都有自己私有的地址空间。当我们用指针来引用内存的时候,指针的值表示的是进程自己的地址空间的一个虚拟的内存地址。进程不能通过指针来引用其他进程地址空间的内存。因此,如果一个进程有缺陷会导致其引用和覆盖随机地址处的内存,那么这个缺陷的影响就会不会扩散到其他的进程。nn独立的地址空间有...
内存注入dll 无痕迹
内存中 <em>注入</em><em>dll</em> 需要黑月编译 任何32位进程
DLL注入工具x64
本文首发在吾爱破解:http://www.52pojie.cn/thread-429548-1-1.html DLL<em>注入</em>工具有很多,但是也有很多无法<em>注入</em>系统进程如explorer.exe,notepad.exe等,特别是Win7以上平台。此<em>注入</em>工具核心<em>注入</em>部分使用NtCreateThreadEx + LdrLoadDlll方式实现,特色在于比一般的远程线程<em>注入</em>稳定,可以<em>注入</em>系统进程,服务进程等。使用时请保存好手头工作,以免蓝屏(我调试时蓝过很多次)。 更多详情请参考:http://blog.csdn.net/sunflover454/article/details/50441014
RemoteCall
利用远程线程<em>注入</em>DLL 1)、取得远程进程的进程ID;   2)、在远程进程空间中分配一段内存用来存放要<em>注入</em>的DLL完整路径;   3)、将要<em>注入</em>的DLL的路径写到刚才分配的远程进程空间; 4 )、从Kernel32.<em>dll</em>中取得LoadLibray的地址;   5)、调用CreateRemoteThread函数以从Kernel32.<em>dll</em>中取得的LoadLibrary函数的地址为线程函数的地址,以我们要<em>注入</em>的DLL文件名为参数,创建远程线程;
进程注入之DLL注入
前言DLL<em>注入</em>是我在大一的时候接触的一种技术,那时候还不懂,最近结合小程序详细的理解了一下。DLL<em>注入</em>是将代码<em>注入</em>到一个远程进程中,并让远程进程调用LoadLibrary()函数,从而强制远程进程加载一个DLL程序到进程中。而当DLL被加载时就会运行DLL中的DllMain()函数,所以就会为恶意代码的执行提供机会,而因为DLL本身是由感染后的进程加载的同时PE文件也并没有对系统进行过多的敏感操作...
一个很好用的dll注入工具
一个很好用的<em>dll</em><em>注入</em>工具有代码调试通过,非常好用,是从外国网站上下载的。
《Windows核心编程》之“DLL注入”(一)
一、背景知识n1,Private Address Spacen        在Windows操作系统中,每个进程都有自己私有的地址空间(private address space)。各个进程的地址空间(user partition)是相互独立的,尽管它们的地址编码范围相同(0x00010000 ~ 0x7FFEFFFF),但是它们对应虚拟地址的后备物理存储器一般都不相同(只读模式下的Imag
唯一一个 64位注入DLL源码 拿去直接用 亲测绝对稳定好用
唯一一个 64位<em>注入</em>DLL源码 拿去直接用 亲测绝对稳定好用
DLL注入的基本方法
看了姜晔老师的反病毒视频,其中提到了这些流程,就记录下来,方便自己查阅。<em>注入</em>的流程如下:1、OpenProcess获得要<em>注入</em>进程的句柄2、VirtualAllocEx在远程进程中开辟出一段内存,长度为strlen(<em>dll</em>name)+13、WriteProcessMemory将Dll的名字写入第二步开辟出的内存中4、CreateRemoteThread将LoadLibraryA作为线程函数,参数为D...
DLL注入器---歪歪加强版万能DLL注入器|驱动级Dll注入
这款万能DLL<em>注入</em>器的作用就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分,实现我们自定义的扩展功能。使用方法简单,只需打开目标进程,然
Windows注入与拦截(3) -- 使用钩子方式完成DLL注入
一. 钩子技术介绍nn前面介绍了《 Windows<em>注入</em>与拦截(2) – 使用注册表方式完成DLL<em>注入</em>》,本文介绍使用钩子的方式将DLL<em>注入</em>到进程的地址空间中。nnWindows提供了3个API来让我们可以很方便使用钩子技术将DLL文件<em>注入</em>到进程之中:nn// 安装指定消息类型的钩子到钩子链中nHHOOK SetWindowsHookEx(int idHook,n HOOKPROC lpfn,...
C++ 实现DLL注入(一)实现
直接上代码了//FMethod.h#pragma once#include #include #include int FMethod(char * c_str);BOOL LoadDll(DWORD dwProcessId,LPTSTR lpszDllName);//FMethod.cpp#include "FMethod.h"int FMethod(char * c_str){ //打开 c_
输入法DLL注入
输入法DLL<em>注入</em>器喜欢下载感谢这个平台
Dll注入技术之劫持注入
Dll<em>注入</em>技术之劫持<em>注入</em>测试环境系统:Windows 7 32bit工具:FileCleaner2.0 和 lpk.<em>dll</em>主要思路利用Window可以先加载当前目录下的<em>dll</em>特性,仿造系统的LPK.DLL,让应用程序先加载我们的伪LPK.DLL,然后在我们的<em>dll</em>中去调用原来系统的原函数.引用网络中的原理讲解●背景知识●首先我们要了解Windows为什么可以DLL劫持呢?主要是因为Windows的...
易语言 远程线程注入DLL呼出窗口 源码(无模块)
这个可是非常好的源码 没有使用任何模块 放心下载 绝对不留后门,不修改IE,卸载<em>dll</em>一直有点小<em>问题</em>,希望大家多交流 QQ:22353017
关于“代码远程线程注入”的核心代码分享
前言:rn&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;nbsp;“代码远程线程<em>注入</em>”是实现将本进程的一段二进制代码<em>注入</em>到另一个远程进程中,在被<em>注入</em>进程
DLL注入之使用SetWindowsHookEx注入
原理分析:nn本次介绍的是使用全局钩子的方式进行<em>注入</em>。在Windows中可以使用SetWindowsHookEx来设置消息钩子,这个函数除了可以设置当前进程的钩子之外,它还可以设置全局钩子。全局钩子,顾名思义,即当前正在运行的进程都会被设置相应的钩子。nnn//dwThreadId 设置为0,则是全局钩子。nHHOOK SetWindowsHookExA(n int idHook,n...
易语言DLL注入外挂呼出全套源码
易语言DLL<em>注入</em>外挂呼出全套源码,学习外挂必不可少的学习教程。。。。
DLL 注入工具DLL注入工具
DLL<em>注入</em>工具 有喜欢 黑客的 同志们可 以下载DLL<em>注入</em>工具DLL<em>注入</em>工具DLL<em>注入</em>工具
易语言 dll注入
易语言版本 <em>dll</em><em>注入</em> <em>注入</em>就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL<em>注入</em>,首先需要打开目标进程。
Windows注入与拦截(2) -- 使用注册表方式完成DLL注入
一. 如何做?nn如题,通过注册表的方式来实现DLL<em>注入</em>,我们只需要针对特定的注册表项进行修改即可,有一点需要注意的是:如果被<em>注入</em>的进程是64位进程,则<em>注入</em>的DLL也需要是64位的,同理,<em>注入</em>32位的进程也需要是32位的DLL。 nn另外,根据被<em>注入</em>进程的位数(32或64)不同,注册表的位置也不同。nnnn1.1 <em>注入</em>64位系统上的32位进程nn1) 将被<em>注入</em>的DLL名称填入到AppInit_DL...
DLL卸载
DLL卸载DLL卸载(DLL Ejection)是将强制插入进程的DLL弹出的一种技术,原理是驱使目标进程调用FreeLibrary() API,即将FreeLibrary() API的地址传递给CreateRemoteThread()的lpStartAddress参数并把要卸载的DLL的句柄传递给lpParameter参数。注意:使用FreeLibrary() API实现DLL卸载,仅适用于卸载...
奇怪问题
float:left单独写没<em>问题</em>,放在一起写就换行了。。。nnnn效果:nnnn但如果nnn&amp;lt;div id=&quot;myChart1&quot; :style=&quot;{width: '280px', height: '300px', float:left}&quot;&amp;gt;&amp;lt;/div&amp;gt;n&amp;lt;div id=&quot;myChart2&quot; :style=&quot;{width: '280px', height: '300px.
C++ dll注入 程序注入 示例代码
C++ <em>dll</em><em>注入</em> 程序<em>注入</em> 示例代码
纯C#实现注入任意DLL(托管/非托管),无需额外DLL,AnyCPU编译支持x64/x86 win10/win8/win7/xp
FastWin32项目:github,欢迎fork欢迎starnnn由来nnn网上流传的<em>注入</em>托管DLL说是纯C#,实际上还是调用了C++编写的DLL用于在远程进程中启动CLR。这样做会让被<em>注入</em>进程多一个已加载DLL,发布的程序也会带一个启动CLR的DLL(比如CLRInjection还带着LoadCLR2.<em>dll</em>和LoadCLR4.<em>dll</em>),看着很不舒服。所以我看了下MegaDumper.exe的
自己写的DLL注入程序
自己写的DLL<em>注入</em>程序 自己写的DLL<em>注入</em>程序 自己写的DLL<em>注入</em>程序 自己写的DLL<em>注入</em>程序
[Win32] DLL注入技术
本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/47781883nDLL<em>注入</em>是什么?DLL<em>注入</em>是把指定的DLL加载到另一个进程的内存空间中去的技术。n为何要<em>注入</em>DLL?完成一些特殊目的,病毒把恶意代码隐藏在正常的宿主进程中,瞒天过
易语言DLL注入视频教程 很难得的
易语言DLL<em>注入</em>视频教程 很难得的
DLL注入器源码
DLL<em>注入</em>器源码rn rn rn rn Code:nnamespace THInjectorn{n DWORD WINAPI LoadDll(PVOID param)n {n PMANUAL_INJECT ManualInject = (PMANUAL_INJECT)param;nn HMODULE hModule;n ...
防游戏检测之易语言DLL内存注入技术
DLL<em>注入</em>,除了线程<em>注入</em>,消息钩子<em>注入</em>,输入法<em>注入</em>外,还有一种就是内存<em>注入</em>n那么什么是内存<em>注入</em>呢?n内存<em>注入</em>就是指内存中加载并且执行DLL文件,这样的<em>注入</em>方式好处有以下几点:n1.不需要把DLL文件暴露在出来(防止别人拿着你的DLL文件改装成自己的程序或者破解)n内存DLL不需要写出到硬盘上即可使用.只要用易语言编译出来DLL后,加入到图片资源中,即可直接在内存用运行使用.n2.安全性高,<em>注入</em>到对...
Dll注入技术之驱动注入
Dll<em>注入</em>技术之驱动<em>注入</em>nn0x0 技术简介nn实现环境nn系统:Windows 7 64bitnn工具:VS+WDKnn驱动<em>注入</em>nn我这里驱动<em>注入</em>的技术是:采用驱动向目标进程插入APC执行LdrLoadDll函数加载Dll模块。nn可以<em>注入</em>64位Dll到64位进程或<em>注入</em>32位Dll到32位进程。暂时没有实现跨位数。nnAPC(异步过程调用)是一种内核机制,它提供了一种在特定线程上下文中执行定制例...
dotour dll注入非常值得探讨的问题
<em>dll</em><em>注入</em>非常值得探讨的<em>问题</em> 实现拦截函数
MFC hook注入dll,远程线程注入dll
[cpp] viewn plain copynnn print?nnnn#include "stdafx.h"  n#include   n//很多人在vs2010找不到<em>dll</em>main的文件,都倍封装好了,其实就在新建项目--win32--win32项目完后选择<em>dll</em>  nnnnn[cpp] viewn plain copynnn print?
DLL永久注入EXE 易语言源码实现 无需工具
DLL永久<em>注入</em>EXE 易语言源码实现 无需工具
DELPHI DLL注入源码
可以<em>注入</em>DLL到其他程序中,<em>注入</em>后执行读取修改 HOOK等操作 用途你懂的
游戏修改器制作教程七:注入DLL的各种姿势
<em>注入</em>的代码就是目标进程的一部分了,可以直接用指针读写目标进程内存,还可以hook目标进程的函数
驱动开发实现修改导入表注入dll
导入表<em>注入</em><em>dll</em>其实就是给程序的导入表添加一个<em>dll</em>和相应函数,程序在被载入时,系统会自动加载该<em>dll</em>,从而实现<em>dll</em><em>注入</em>。rn我在驱动实现修改导入表的方法就是使用PsSetLoadImageNotifyRoutine函数创建回调,在回调中修改导入表。rn修改导入表的过程如下:rn1,申请一块内存,将原来的导入表和自己添加的项拷贝到这块内存。rn2,修改pe头的导入表偏移,使其指向新导入表。rn经
安全之路 —— 借助DLL进行远程线程注入实现穿墙与隐藏进程
简介nnn &amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;大多数后门或病毒要想初步实现隐藏进程,即不被像任务管理器这样典型的RING3级进程管理器找到过于明显的不明进程,其中比较著名的方法就是通过远程线程<em>注入</em>的方法<em>注入</em>将恶意进程的DLL文件<em>注入</em>系统
DLL注入实例+教程
远程<em>注入</em>DLL方法有很多种,也是很多木马病毒所使用的隐藏进程的方法,因为通过程序加载的DLL在进程管理器是没有显示的.这里介绍一种用 CreateRemoteThread 远程建立线程的方式<em>注入</em>DLL. 首先,我们要提升自己的权限,因为远程<em>注入</em>必不可免的要访问到目标进程的内存空间,如果没有足够的系统权限,将无法作任何事.下面是这个函数是用来提升我们想要的权限用的. function EnableDebugPriv: Boolean; var hToken: THandle; tp: TTokenPrivileges; rl: Cardinal; begin Result := false; //打开进程令牌环 OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken); //获得进程本地唯一ID if LookupPrivilegeValue(nil, 'SeDebugPrivilege', tp.Privileges[0].Luid) then begin tp.PrivilegeCount := 1; tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; //调整权限 Result := AdjustTokenPrivileges(hToken, false, tp, SizeOf(tp), nil, rl); end; end; 关于 OpenProcessToken() 和 AdjustTokenPrivileges() 两个 API 的简单介绍: OpenProcessToken():获得进程访问令牌的句柄. function OpenProcessToken( ProcessHandle: THandle; //要修改访问权限的进程句柄 DesiredAccess: DWORD; //指定你要进行的操作类型 var TokenHandle: THandle//返回的访问令牌指针 ): BOOL; AdjustTokenPrivileges() :调整进程的权限. function AdjustTokenPrivileges( TokenHandle: THandle; // 访问令牌的句柄 DisableAllPrivileges: BOOL; // 决定是进行权限修改还是除能(Disable)所有权限 const NewState: TTokenPrivileges; { 指明要修改的权限,是一个指向TOKEN_PRIVILEGES结构的指针,该结构包含一个数组, 数据组的每个项指明了权限的类型和要进行的操作; } BufferLength: DWORD; //结构PreviousState的长度,如果PreviousState为空,该参数应为 0 var PreviousState: TTokenPrivileges; // 指向TOKEN_PRIVILEGES结构的指针,存放修改前的访问权限的信息 var ReturnLength: DWORD //实际PreviousState结构返回的大小 ) : BOOL; 远程<em>注入</em>DLL其实是通过 CreateRemoteThread 建立一个远程线程调用 LoadLibrary 函数来加载我们指定的DLL,可是如何能让远程线程知道我要加载DLL呢,要知道在Win32系统下,每个进程都拥有自己的4G虚拟地址空间,各个进程之间都是相互独立的。所我们需要在远程进程的内存空间里申请一块内存空间,写入我们的需要<em>注入</em>的 DLL 的路径. 需要用到的 API 函数有: OpenProcess():打开目标进程,得到目标进程的操作权限,详细参看MSDN function OpenProcess( dwDesiredAccess: DWORD; // 希望获得的访问权限 bInheritHandle: BOOL; // 指明是否希望所获得的句柄可以继承 dwProcessId: DWORD // 要访问的进程ID ): THandle; VirtualAllocEx():用于在目标进程内存空间中申请内存空间以写入DLL的文件名 function VirtualAllocEx( hProcess: THandle; // 申请内存所在的进程句柄 lpAddress: Pointer; // 保留页面的内存地址;一般用nil自动分配 dwSize, // 欲分配的内存大小,字节单位;注意实际分 配的内存大小是页内存大小的整数倍 flAllocationType: DWORD; flProtect: DWORD ): Pointer; WriteProcessMemory():往申请到的空间中写入DLL的文件名 function WriteProcessMemory( hProcess: THandle; //要写入内存数据的目标进程句柄 const lpBaseAddress: Pointer; //要写入的目标进程的内存指针, 需以 VirtualAllocEx() 来申请 lpBuffer: Pointer; //要写入的数据 nSize: DWORD; //写入数据的大小 var lpNumberOfBytesWritten: DWORD //实际写入的大小 ): BOOL; 然后就可以调用 CreateRemoteThread 建立远程线程调用 LoadLibrary 函数来加载我们指定的DLL. CreateRemoteThread() //在一个远程进程中建立线程 function CreateRemoteThread( hProcess: THandle; //远程进程的句柄 lpThreadAttributes: Pointer; //线程安全描述字,指向SECURITY_ATTRIBUTES结构的指针 dwStackSize: DWORD; //线程栈大小,以字节表示 lpStartAddress: TFNThreadStartRoutine; // 一个TFNThreadStartRoutine类型的指针,指向在远程进程中执行的函数地址 lpParameter: Pointer; //传入参数的指针 dwCreationFlags: DWORD; //创建线程的其它标志 var lpThreadId: DWORD //线程身份标志,如果为0, 则不返回 ): THandle; 整个远程<em>注入</em>DLL的具体实现代码如下: function InjectDll(const DllFullPath: string; const dwRemoteProcessId: Cardinal): Boolean; var hRemoteProcess, hRemoteThread: THandle; pszLibFileRemote: Pointer; pszLibAFilename: PwideChar; pfnStartAddr: TFNThreadStartRoutine; memSize, WriteSize, lpThreadId: Cardinal; begin Result := false; // 调整权限,使程序可以访问其他进程的内存空间 if EnableDebugPriv then begin //打开远程线程 PROCESS_ALL_ACCESS 参数表示打开所有的权限 hRemoteProcess := OpenProcess(PROCESS_ALL_ACCESS, false, dwRemoteProcessId); try // 为<em>注入</em>的<em>dll</em>文件路径分配内存大小,由于为WideChar,故要乘2 GetMem(pszLibAFilename, Length(DllFullPath) * 2 + 1); // 之所以要转换成 WideChar, 是因为当DLL位于有中文字符的路径下时不会出错 StringToWideChar(DllFullPath, pszLibAFilename, Length(DllFullPath) * 2 + 1); // 计算 pszLibAFilename 的长度,注意,是以字节为单元的长度 memSize := (1 + lstrlenW(pszLibAFilename)) * SizeOf(WCHAR); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名空间 pszLibFileRemote := VirtualAllocEx(hRemoteProcess, nil, memSize, MEM_COMMIT, PAGE_READWRITE); if Assigned(pszLibFileRemote) then begin //使用WriteProcessMemory函数将DLL的路径名写入到远程进程的内存空间 if WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, memSize, WriteSize) and (WriteSize = memSize) then begin lpThreadId := 0; // 计算LoadLibraryW的入口地址 pfnStartAddr := GetProcAddress(LoadLibrary('Kernel32.<em>dll</em>'), 'LoadLibraryW'); // 启动远程线程LoadLbraryW,通过远程线程调用创建新的线程 hRemoteThread := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, pszLibFileRemote, 0, lpThreadId); // 如果执行成功返回 True; if (hRemoteThread <> 0) then Result := true; // 释放句柄 CloseHandle(hRemoteThread); end; end; finally // 释放句柄 CloseHandle(hRemoteProcess); end; end; end; 接下来要说的是如何卸载<em>注入</em>目标进程中的DLL,其实原理和<em>注入</em>DLL是完全相同的,只是远程调用调用的函数不同而已,这里要调用的是FreeLibrary,代码如下: function UnInjectDll(const DllFullPath: string; const dwRemoteProcessId: Cardinal): Boolean; // 进程<em>注入</em>和取消<em>注入</em>其实都差不多,只是运行的函数不同而已 var hRemoteProcess, hRemoteThread: THandle; pszLibFileRemote: PChar; pszLibAFilename: PwideChar; pfnStartAddr: TFNThreadStartRoutine; memSize, WriteSize, lpThreadId, dwHandle: Cardinal; begin Result := false; // 调整权限,使程序可以访问其他进程的内存空间 if EnableDebugPriv then begin //打开远程线程 PROCESS_ALL_ACCESS 参数表示打开所有的权限 hRemoteProcess := OpenProcess(PROCESS_ALL_ACCESS, false, dwRemoteProcessId); try // 为<em>注入</em>的<em>dll</em>文件路径分配内存大小,由于为WideChar,故要乘2 GetMem(pszLibAFilename, Length(DllFullPath) * 2 + 1); // 之所以要转换成 WideChar, 是因为当DLL位于有中文字符的路径下时不会出错 StringToWideChar(DllFullPath, pszLibAFilename, Length(DllFullPath) * 2 + 1); // 计算 pszLibAFilename 的长度,注意,是以字节为单元的长度 memSize := (1 + lstrlenW(pszLibAFilename)) * SizeOf(WCHAR); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名空间 pszLibFileRemote := VirtualAllocEx(hRemoteProcess, nil, memSize, MEM_COMMIT, PAGE_READWRITE); if Assigned(pszLibFileRemote) then begin //使用WriteProcessMemory函数将DLL的路径名写入到远程进程的内存空间 if WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, memSize, WriteSize) and (WriteSize = memSize) then begin // 计算GetModuleHandleW的入口地址 pfnStartAddr := GetProcAddress(LoadLibrary('Kernel32.<em>dll</em>'), 'GetModuleHandleW'); //使目标进程调用GetModuleHandleW,获得DLL在目标进程中的句柄 hRemoteThread := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, pszLibFileRemote, 0, lpThreadId); // 等待GetModuleHandle运行完毕 WaitForSingleObject(hRemoteThread, INFINITE); // 获得GetModuleHandle的返回值,存在dwHandle变量中 GetExitCodeThread(hRemoteThread, dwHandle); // 计算FreeLibrary的入口地址 pfnStartAddr := GetProcAddress(LoadLibrary('Kernel32.<em>dll</em>'), 'FreeLibrary'); // 使目标进程调用FreeLibrary,卸载DLL hRemoteThread := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, Pointer(dwHandle), 0, lpThreadId); // 等待FreeLibrary卸载完毕 WaitForSingleObject(hRemoteThread, INFINITE); // 如果执行成功返回 True; if hRemoteProcess <> 0 then Result := true; // 释放目标进程中申请的空间 VirtualFreeEx(hRemoteProcess, pszLibFileRemote, Length(DllFullPath) + 1, MEM_DECOMMIT); // 释放句柄 CloseHandle(hRemoteThread); end; end; finally // 释放句柄 CloseHandle(hRemoteProcess); end; end; end;
服务Dll注入Svchost进程
程序功能:(知识点在doc中) 1、实现服务<em>dll</em> 2、<em>注入</em>到svchost进程 3、服务打开计算器(涉及到session,知识点) 4、线程输出时间debugview中查看 程序安装完服务,服务启动有以下方式: 1、重启电脑,使用电脑自带svhost服务组自启动服务; 2、手动执行脚本“DriverLifeSrvDll_启动服务.bat”; 3、打开任务管理器或者服务管理器,手动右键启动服务。
修改PE文件实现静态DLL注入
向PE文件<em>注入</em>DLL一般来说分为两种,一种是动态的,就是在程序运行中<em>注入</em>。还有一种是静态的,也就是修改PE文件达到DLL<em>注入</em>的效果。直接上实验步骤nn实验(经过处理的NotePad,输入表下面有大量0000空余,无需进行移位操作): n1.LoadPE查看输入表 n n可以看到输入表的RVA是00007604,转化成文件偏移是6A04(用LoadPE中的位置计算器计算),c32找到6A04处 n2...
将托管dll注入到非托管进程中
Binhua Liu Demo源代码 457K   为什么要写这篇文章 1,如果你想<em>注入</em>带窗体的<em>dll</em>,C#写界面比C++容易的多; 2,或许你想利用.net的某些功能,比如利用.Net Remoting从外部控制被<em>注入</em>的<em>dll</em>; 3,或许你是一个C#程序员,使用C#的时候总感觉更舒适些,比如笔者。同时,你希望必要时也能在宿主中调用C++函数,提供更大的灵活性,本文的方法也能做到。
恶意代码--dll动态链接库注入目标进程隐藏自身(亲测win7x86和x64有效)
0x01 <em>dll</em> <em>注入</em>简介n所谓DLL<em>注入</em>就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。nnn很多恶意代码,游戏外挂,盗号木马,顽固类病毒等程序均采用此寄生,隐藏在目标计算机之内。nnn0x02 <em>dll</em> <em>注入</em>关键APInnnVirtualAllocEx functionnnnVirtualAllocEx函数在远程进程的地址空间中分配一块内存
Windows挂钩注入DLL
代码实现(被<em>注入</em>进程):private:n DWORD m_dwId;n HHOOK m_hHook;n HMODULE m_hmDll;nprivate:n DWORD GetPIdByProcessName(const char* pszProcessName);n BOOL InjectDllBySetWindowsHook(ULONG32 ulTargetProcessID,char* p...
DLL注入
DLL<em>注入</em>DLL(Dynamic Linked Library动态链接库)被加载到进程后会自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载DLL时,添加的代码就会自然而然得到执行。DLL<em>注入</em>是指向运行中的其他进程强制插入特定的DLL文件。其工作原理是从外部促使目标进程调用LoadLibrary() API从而强制执行DLL的DllMain()函数,而且被注...
强连通分量及缩点tarjan算法解析
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Time, DFN[N], Low[N]; DFN[i]表示 遍历到 i 点时是第几次dfs Low[u] 表示 以u点为父节点的 子树 能连接到 [栈中] 最上端的点   int
VMWare-tools的安装过程下载
针对vmware的共享安装,可以简单实现虚拟机与电脑之间的文件共享 相关下载链接:[url=//download.csdn.net/download/fashionist/1974219?utm_source=bbsseo]//download.csdn.net/download/fashionist/1974219?utm_source=bbsseo[/url]
linux.part05.rar下载
linux.part05.rarlinux.part05.rarlinux.part05.rar 相关下载链接:[url=//download.csdn.net/download/itwayq/3016320?utm_source=bbsseo]//download.csdn.net/download/itwayq/3016320?utm_source=bbsseo[/url]
Android核心技术和开发详解-01-04章案例(源代码)下载
《Android核心技术和开发详解》各章案例的全部源代码,这一份是1-4章(可以单独解压),如果需要其他章节的源代码,请搜索我上传的资源。 相关下载链接:[url=//download.csdn.net/download/gjhqq/3327374?utm_source=bbsseo]//download.csdn.net/download/gjhqq/3327374?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 web注入渗透教程 区块链问题
我们是很有底线的