`
yangshen998
  • 浏览: 1246802 次
文章分类
社区版块
存档分类
最新评论

一个完整的DLL远程注入函数

 
阅读更多

函数名称: CreateRemoteDll()

返加类型:BOOL

接受参数:DLL路径,注入进程ID

其完整代码如下:

BOOLCreateRemoteDll(constchar*DllFullPath,constDWORDdwRemoteProcessId)
...{


HANDLEhToken;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
...{
TOKEN_PRIVILEGEStkp;

LookupPrivilegeValue(NULL,SE_DEBUG_NAME,
&tkp.Privileges[0].Luid);//修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[
0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,
&tkp,sizeoftkp,NULL,NULL);//通知系统修改进程权限

}



HANDLEhRemoteProcess;

//打开远程线程
if((hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许远程创建线程
PROCESS_VM_OPERATION|//允许远程VM操作
PROCESS_VM_WRITE,//允许远程VM写
FALSE,dwRemoteProcessId))==NULL)
...{
AfxMessageBox(
"OpenProcessError!");
returnFALSE;
}


char*pszLibFileRemote;
//在远程进程的内存地址空间分配DLL文件名缓冲区
pszLibFileRemote=(char*)VirtualAllocEx(hRemoteProcess,NULL,lstrlen(DllFullPath)+1,
MEM_COMMIT,PAGE_READWRITE);
if(pszLibFileRemote==NULL)
...{
AfxMessageBox(
"VirtualAllocExerror! ");
returnFALSE;
}


//将DLL的路径名复制到远程进程的内存空间
if(WriteProcessMemory(hRemoteProcess,
pszLibFileRemote,(
void*)DllFullPath,lstrlen(DllFullPath)+1,NULL)==0)
...{
AfxMessageBox(
"WriteProcessMemoryError");
returnFALSE;
}


//计算LoadLibraryA的入口地址
PTHREAD_START_ROUTINEpfnStartAddr=(PTHREAD_START_ROUTINE)
GetProcAddress(GetModuleHandle(TEXT(
"Kernel32")),"LoadLibraryA");

if(pfnStartAddr==NULL)
...{
AfxMessageBox(
"GetProcAddressError");
returnFALSE;
}


HANDLEhRemoteThread;
if((hRemoteThread=CreateRemoteThread(hRemoteProcess,NULL,0,
pfnStartAddr,pszLibFileRemote,
0,NULL))==NULL)
...{
AfxMessageBox(
"CreateRemoteThreadError");
returnFALSE;
}


returnTRUE;
}

分享到:
评论

相关推荐

    注入dll 远程注入方法

    远程注入简单实现,需要的可下载参考,很实用,很给力

    C#版DLL远程线程注入源代码

    C#没有自动调用WIN32的一些API函数,我们可以手动添加内核库到我们自己的代码中,从而实现调用...此方法不仅仅用于远程线程注入,还可以用于从MFC转C#过程中不知道如何用C#实现功能,但有知道如何用MFC实现功能的方法。

    C++实现远程DLL注入类

    C++实现的一个远程DLL注入的类。 调用类成员函数InsertDllToProcess("qq.exe", "D:\\InsertDll.dll"); 可以将某个写好的DLL注入到指定的进程中。

    远程注入dll

    运行Project1.exe 程序 用CreateRemoteThread 函数 将dll远程注入到其它进程 提供3种远程注入方式 1.通过程序名远程注入dll 2.通过PID远程注入DLL 3.通过窗口名远程注入DLL 在程序注入成功后,dll会在 'D:\...

    DLL注入.ec

    APC注入_内存 APC注入_应用层 EIP注入 EIP注入_调用函数 EIP注入卸载 ...远程注入_调用函数 注册表注入 卸载内存注入 卸载输入法注入 卸载消息钩子 卸载注册表注入 卸载远程线程DLL 卸载注册表注入

    dll远程线程注入(支持64bit win7)

    把dll注入到远程线程。使用的时候创建一个空的工程,然后把代码当做主文件放到工程中,自己写个mian函数调用injectDLL函数就能注入了。菜鸟级友情提醒:64位别忘了编译成x64的可执行文件

    WinCE 下远程 dll 注入的例子, PerformCallBack4

    参考几篇文章自己写了个 :D 远程注入 dll, 子类化远程窗口, 并把所有消息记录到一个文本文件中 WM 2003 下测试可以用, 用的时候注意指定一下 dll 的路径

    DLL注入实例+教程

    远程注入DLL其实是通过 CreateRemoteThread 建立一个远程线程调用 LoadLibrary 函数来加载我们指定的DLL,可是如何能让远程线程知道我要加载DLL呢,要知道在Win32系统下,每个进程都拥有自己的4G虚拟地址空间,各个...

    DLL注入之远线程方式

    远线程注入的基本原理就是通过在另一个进程中创建远程线程的方法进入目标进程的内存地址空间。使用插入到目标进程中的远程线程将该DLL插入到目标进程的地址空间,即利用该线程通过调用Windows API LoadLibrary函数...

    利用输入法注入DLL

    我将这一套功能制作成一个完整的示例,你可以在以下地址下载: http://www.pen88.com/download/imehook.rar 压缩包中的第6个和第8个文件夹演示了此 功能并包含所有源代码。其中文件imedllhost09.dll就是服务...

    使用LdrLoadDll 注入DLL,支持注入64位dll

    众所周知, 易语言的数据类型是个坑, 所以, 申请一块空间当成一个结构使用了。愿意研究的话, 结构是这个。注入流程:。1. 创建远程线程。2. 注入一段代码到目标进程里执行。3. 这段代码调用 LdrLoadDll 加载dll。4. ...

    远程注入DLL公用类

    向指定的进程注入指定的DLL,并调用DLL中指定的方法; DWORD pid = CInjectUtils::GetProcessIdByName("QQ.exe"); CInject c; c.inject(pid,"c:/mydll.dll","startup");//startup为mydll.dll中的一个函数名称

    hook程序——注入线程中的dll代码

    以dll方式注入到一个远程的线程中去,来实现hook相关api函数的功能

    易语言远程线程注入类模块

    远程线程注入类模块,设置超时时间,私_创建远程线程,打开进程号,取内部句柄,取进程ID,关闭打开句柄,远程申请内存,远程申请内存_文本,远程释放内存,远程执行代码,生成调用代码_数组,执行远程函数,生成调用代码,辅_调用...

    多功能驱动级注入器

    “HOOK xxxx注入” 这些是创建进程时hook函数再注入(原理是远程HOOK,在回调函数里注入),适用于测试破解补丁(启动式破解) “支持mfc”表示支持mfc的dll,易语言静态编译的dll就是mfc。 “驱动级” 让合法程序...

    c++ DLL注入,win32 api版,win10测试通过

    用于远程注入exe,并截取wndproc窗口消息函数,以将两个不同窗口的位置进行绑定。 使用g++编译并测试通过,注意:将生成的inject.exe添加到杀软白名单。 注入进程及窗口在inject.cpp及size.cpp中修改。 编译请参看...

    WinCodeInjection:Dll注入和代码注入示例

    WinCode注入 此存储库包含 2 个示例: 带有要注入的 Dll 的 Dll Injector 代码注入器 Dll Injector 示例使用未公开的函数... 在本示例中,我使用简单的CreateRemoteThread在另一个进程中插入自定义函数。

    注入进程所需API函数

    进程注入所要用到的全部API函数详细说明 ,包含格式和特别注意。本人编写DLL注入器后,所记录的全部API详解。

Global site tag (gtag.js) - Google Analytics