精华内容
下载资源
问答
  • dll万能注入

    2011-11-28 16:59:59
    dll万能注入器,可以注入已经编译好的dll文件
  • DLL注入

    2020-08-22 15:01:20
    加载到notepad.exe进程中的myhack.dll已经加载到notepad.exe进程中的DLL一样,拥有访问notepad.exe进程内存的权限。 DLL被加载到进程后自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载...

    DLL注入

    1. DLL注入指的是向运行中的其他进程强制插入特定的DLL文件,DLL注入命令其他进程自行调用LoadLibrary() API,加载用户指定的DLL文件。
      在这里插入图片描述
    2. 加载到notepad.exe进程中的myhack.dll与已经加载到notepad.exe进程中的DLL一样,拥有访问notepad.exe进程内存的权限。
    3. DLL被加载到进程后自动运行DllMain()函数,用户可以把想执行的代码放到DllMain()函数,每当加载DLL时,添加的代码就会自然而然得到执行,利用该特性可以修复程序Bug,或向程序添加新功能。
    BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD dwReason,LPVOID lpvReserved)
    {
    	switch( dwReason)
    	{
    		case DLL_PROCESS_ATTACH:
    			//要执行的代码
    			break;
    		case DLL_THREAD_ATTACH:
    			break;
    		case DLL_THREAD_DETACH:
    			break;
    		case DLL_PROCESS_DETACH:
    			break;
    	}
    }
    

    DLL注入示例

    1. 改善功能与修复Bug
    • DLL注入技术可用于改善功能与修复Bug,没有程序对应的源码,或者直接修改程序比较困难时,就可以使用DLL注入技术为程序添加新功能,或者修复有问题的代码、数据。
    1. 消息钩取
    • Windows OS默认提供的消息钩取功能应用的就是一种DLL注入技术,与常规的DLL注入的唯一区别时,OS会直接将已注册的钩取DLL注入目标进程。
    1. API钩取
    • 先创建好DLL形态的钩取函数,再将其轻松注入要钩取的目标进程,这样就完成了API钩取。
    1. 其他应用程序
    • DLL注入技术也用于监视、管理PC用户的应用程序。
    1. 恶意代码
    • 将DLL注入技术运用到字节制作的恶意代码中,这些人把自己编写的恶意代码隐藏到正常进程,打开后门端口,尝试从外部连接,或通过键盘偷取功能将用户的个人信息盗走。

    CreateRemoteThread() -> 创建远程线程

    1. 将myhack.dll注入到notepad.exe进程,被注入的myhack.dll是用来联网并下载http://www.naver.com/index.html文件的。
    2. 运行notepad.exe程序,再运行Process Explorer获取notepad.exe进程的PID,可以看到notepad.exe的PID为10472.
      在这里插入图片描述
    3. 运行DebugView,DebugView是一个非常有用的实用程序,它可以用来捕获并显示系统中运行的进程输出的所有调试字符串。
      在这里插入图片描述
    4. InjectDll.exe是用来向目标进程注入DLL文件的实用小程序,首先我们需要以管理员身份打开命令行,打开命令窗口并输入相应参数即可运行InjectDll.exe。
      在这里插入图片描述
      在这里插入图片描述
    5. DebugView中显示出调试字符串,该字符串是由PID:8216进程输出的,PID:8216进程就是注入myhack.dll的notepad.exe进程,成功注入myhack.dll,就会调用执行DllMain()函数的OutputDebugString() API.
    6. 打开index.html文件。
      在这里插入图片描述
      在这里插入图片描述
    7. 分析源代码
    • 先分析myhack.dll源代码。
    #include "windows.h"
    #include "tchar.h"
    
    #pragma comment(lib, "urlmon.lib")
    
    #define DEF_URL     	(L"http://www.naver.com/index.html")
    #define DEF_FILE_NAME   (L"index.html")
    
    HMODULE g_hMod = NULL;
    
    DWORD WINAPI ThreadProc(LPVOID lParam)
    {
        TCHAR szPath[_MAX_PATH] = {0,};
    
        if( !GetModuleFileName( g_hMod, szPath, MAX_PATH ) )
            return FALSE;
    	
        TCHAR *p = _tcsrchr( szPath, '\\' );
        if( !p )
            return FALSE;
    
        _tcscpy_s(p+1, _MAX_PATH, DEF_FILE_NAME);
    
        URLDownloadToFile(NULL, DEF_URL, szPath, 0, NULL);
    
        return 0;
    }
    
    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        HANDLE hThread = NULL;
    
        g_hMod = (HMODULE)hinstDLL;
    
        switch( fdwReason )
        {
        case DLL_PROCESS_ATTACH : 
            OutputDebugString(L"<myhack.dll> Injection!!!");
            hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
            CloseHandle(hThread);
            break;
        }
    
        return TRUE;
    }
    
    • 再DllMain()函数中可以看到,该DLL被加载(DLL_PROCESS_ATTACH)时,先输出一个调试字符串(“myhack.dll Injection!!!"),然后创建线程调用函数(ThreadProc),在ThreadProc()函数向进程注入DLL后就会调用执行该DLL的DllMain()函数,所以当myhack.dll注入notepad.exe进程后,最终会调用执行URLDownloadToFile()API。
    • InjectDll.exe程序用来将myhack.dll注入notepad.exe进程,查看一下源代码:
    #include "windows.h"
    #include "tchar.h"
    
    BOOL SetPrivilege(LPCTSTR lpszPrivilege, BOOL bEnablePrivilege) 
    {
        TOKEN_PRIVILEGES tp;
        HANDLE hToken;
        LUID luid;
    
        if( !OpenProcessToken(GetCurrentProcess(),
                              TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, 
    			              &hToken) )
        {
            _tprintf(L"OpenProcessToken error: %u\n", GetLastError());
            return FALSE;
        }
    
        if( !LookupPrivilegeValue(NULL,           // lookup privilege on local system
                                  lpszPrivilege,  // privilege to lookup 
                                  &luid) )        // receives LUID of privilege
        {
            _tprintf(L"LookupPrivilegeValue error: %u\n", GetLastError() ); 
            return FALSE; 
        }
    
        tp.PrivilegeCount = 1;
        tp.Privileges[0].Luid = luid;
        if( bEnablePrivilege )
            tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        else
            tp.Privileges[0].Attributes = 0;
    
        // Enable the privilege or disable all privileges.
        if( !AdjustTokenPrivileges(hToken, 
                                   FALSE, 
                                   &tp, 
                                   sizeof(TOKEN_PRIVILEGES), 
                                   (PTOKEN_PRIVILEGES) NULL, 
                                   (PDWORD) NULL) )
        { 
            _tprintf(L"AdjustTokenPrivileges error: %u\n", GetLastError() ); 
            return FALSE; 
        } 
    
        if( GetLastError() == ERROR_NOT_ALL_ASSIGNED )
        {
            _tprintf(L"The token does not have the specified privilege. \n");
            return FALSE;
        } 
    
        return TRUE;
    }
    
    BOOL InjectDll(DWORD dwPID, LPCTSTR szDllPath)
    {
        HANDLE hProcess = NULL, hThread = NULL;
        HMODULE hMod = NULL;
        LPVOID pRemoteBuf = NULL;
        DWORD dwBufSize = (DWORD)(_tcslen(szDllPath) + 1) * sizeof(TCHAR);
        LPTHREAD_START_ROUTINE pThreadProc;
    
        // #1. 使用dwPID获取目标进程的句柄
        if ( !(hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID)) )
        {
            _tprintf(L"OpenProcess(%d) failed!!! [%d]\n", dwPID, GetLastError());
            return FALSE;
        }
    
        // #2. 在目标进程内存分配szDllName大小的内存
        pRemoteBuf = VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE);
    
        // #3. 将myhack.dll路径写入分配的内存
        WriteProcessMemory(hProcess, pRemoteBuf, (LPVOID)szDllPath, dwBufSize, NULL);
    
        // #4. 获取LoadLibraryW() API的地址
        hMod = GetModuleHandle(L"kernel32.dll");
        pThreadProc = (LPTHREAD_START_ROUTINE)GetProcAddress(hMod, "LoadLibraryW");
    	
        // #5. 在notepad.exe进程中运行线程
        hThread = CreateRemoteThread(hProcess, NULL, 0, pThreadProc, pRemoteBuf, 0, NULL);
        WaitForSingleObject(hThread, INFINITE);	
    
        CloseHandle(hThread);
        CloseHandle(hProcess);
    
        return TRUE;
    }
    
    int _tmain(int argc, TCHAR *argv[])
    {
        if( argc != 3)
        {
            _tprintf(L"USAGE : %s <pid> <dll_path>\n", argv[0]);
            return 1;
        }
    
        // change privilege
        if( !SetPrivilege(SE_DEBUG_NAME, TRUE) )
            return 1;
    
        // inject dll
        if( InjectDll((DWORD)_tstol(argv[1]), argv[2]) )
            _tprintf(L"InjectDll(\"%s\") success!!!\n", argv[2]);
        else
            _tprintf(L"InjectDll(\"%s\") failed!!!\n", argv[2]);
    
        return 0;
    }
    
    • main()函数的主要功能时检查输入程序的参数,然后调用InjectDll()函数,injectDll()函数是用来实施DLL注入的核心函数,其功能是命令目标进程(notepad.exe)自行调用LoadLibrary(“myhack.dll”)API.
    • 获取目标进程句柄
    hProcess = OpenProcess(PROCESS_ALL_ACCESS,FLASE,dwPID))
    //调用OpenProcess() API,借助程序运行时以参数传递过来的dwPID值,获取notepad.exe进程的句柄,得到PROCESS_ALL_ACCESS权限后,就可以使用获取的句柄控制对应的进程。
    
    • 将要注入的的DLL路径写入目标进程内存
    pRemoteBuf = VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE);
    //需要把即将加载的DLL文件的路径告知目标进程notepad.exe,因为任何内存空间都无法进行写入操作,故先使用VirtualAllocEx() API在目标进程的内存空间中分配一块缓冲区,且指定该缓冲区的大小为DLL文件路径字符串的长度。
    WriteProcessMemory(hProcess,NULL,pRemoteBuf,(LPVOID)szDllName,dwBufSize,NULL);
    //使用WriteProcessMemory()API将DLL路径字符串写入分配所得缓冲区地址,WriteProcessMemory()API所写的内存空间也是hProcess句柄所指的目标进程的内存空间。
    
    • 获取LoadLibraryW() API地址。
    hMod = GetModuleHandle("kernel32.dll");
    pThreadProc = (LPTHREAD_START_ROUTINE) GetProcAddress(hMOd, "LoadLibraryW");
    //调用LoadLibrary()API前先要获取其地址,导入InjectDll.exe进程中的LoadLibraryW()地址与导入notepad.exe进程中的LoadLibraryW()地址是相同的。
    
    • 在目标进程中运行远程线程
    hThread = CreateRemoteThread(hProcess,NULL,0,pThreadProc,pRemoteBuf,0,NULL);
    //pThreadProc = notepad.exe进程内存中的LoadLibraryW()地址,pRemoteBuf = notepad.exe进程内存中的字符串地址。
    //一切准备就绪后,最后向notepad.exe发送一个命令,让其调用LoadLibraryW() API函数加载指定的DLL文件即可,遗憾的是Windows并未直接提供执行这一命令的API。
    
    • CreateRemoteThread() API用来在目标进程中执行其创建出的线程:
    HANDLE WINAPI CreateRemoteThread(
    __in HANDLE hProcess,
    __in LPSECURITY_ATTRIBUTES lpThreadAttributes,
    __in SIZE_T dwStackSize,
    __in LPTHREAD_START_ROUTINE lpStartAddress,
    __in LPVOID lpParameter,
    __in DWORD dwCreationFlags,
    __out LPDWORD lpThreadId
    );
    
    • hProcess参数是要执行线程的目标进程(宿主进程)的句柄,lpStartAddress和lpParameter参数分别给出线程函数地址与线程参数地址,这2个地址都应该在目标进程虚拟内存空间中。
    • CreateRemoteThread()函数最主要的功能就是驱使目标进程调用LoadLibrary()函数,进而加载指定的DLL文件。
    1. 调试方法
    • 重新运行notepad.exe,然后使用Ollydbg2的Attach命令附加新生成的notepad.exe进程。
    • File -> Attach,附加运行中的进城后,进程就会暂停运行,按F9继续让notepad.exe运行起来。在Option对话框的Events中复选“Pause on new module(DLL)"一项,每当有新的DLL被加载到notepad.exe进程,都会在该DLL的EP处暂停,同时,进行DLL注入时也会在该DLL的EP处暂停,使用InjectDll.exe将myhack.dll文件注入notepad.exe进程,此时调试器将暂停。
      在这里插入图片描述
    • 此时我们可以在命令行中进行dll注入,这是调试器会暂停,显示当前所有的可执行模块,我们点击myhack模块,即可进入调试。
      在这里插入图片描述

    AppInit_DLLS

    1. 进行DLL注入的第二种方法是使用注册表,Windows操作系统的注册表默认提供了AppInt_DLLs与LoadAppInit_DLLs两个注册表。
    2. 在注册表编辑器中,将要注入的DLL的路径字符串写入AppInit_DLLs项目,然后把LoadAppInit_DLLs的项目设置为1,重启后,指定DLL会注入到所有运行进程。
    3. User32.dll被加载到进程时,会读取AppInit_DLLs注册表项,若有值,则调用LoadLibrary()API加载用户DLL,严格来说,相应DLL并不会加载到所有进程,而只是加载至加载user32.dll进程。
      在这里插入图片描述
    4. 分析一下myhack2.dll的源代码。
    // myhack2.cpp
    
    #include "windows.h"
    #include "tchar.h"
    
    #define DEF_CMD  L"c:\\Program Files\\Internet Explorer\\iexplore.exe" 
    #define DEF_ADDR L"http://www.naver.com"
    #define DEF_DST_PROC L"notepad.exe"
    
    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        TCHAR szCmd[MAX_PATH]  = {0,};
        TCHAR szPath[MAX_PATH] = {0,};
        TCHAR *p = NULL;
        STARTUPINFO si = {0,};
        PROCESS_INFORMATION pi = {0,};
    
        si.cb = sizeof(STARTUPINFO);
        si.dwFlags = STARTF_USESHOWWINDOW;
        si.wShowWindow = SW_HIDE;
    
        switch( fdwReason )
        {
        case DLL_PROCESS_ATTACH : 
            if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
                break;
       
            if( !(p = _tcsrchr(szPath, '\\')) )
                break;
    
            if( _tcsicmp(p+1, DEF_DST_PROC) )
                break;
    
            wsprintf(szCmd, L"%s %s", DEF_CMD, DEF_ADDR);
            if( !CreateProcess(NULL, (LPTSTR)(LPCTSTR)szCmd, 
                                NULL, NULL, FALSE, 
                                NORMAL_PRIORITY_CLASS, 
                                NULL, NULL, &si, &pi) )
                break;
    
            if( pi.hProcess != NULL )
                CloseHandle(pi.hProcess);
    
            break;
        }
       
        return TRUE;
    }
    
    • 若当前加载自己的进程为”notepad.exe",若当前加载自己的进程为notepad.exe,则以隐藏模式运行IE,连接到指定网站。
    1. 练习
    • 修改注册表项regedit.exe,进入如下路径:
    计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
    
    • 编辑修改AppInit_DLLs表项的值:
      在这里插入图片描述
    • 然后修改LoadAppInit_DLLs注册表项的值为1:
      在这里插入图片描述
    • 注册表项修改完毕后,重启系统,使修改生效。

    SetWindowsHookEx()

    • 用SetWindowsHookEx() API安装好消息钩子,然后由OS将指定DLL强制注入相应进程。
    展开全文
  • 最近工作需要测试DLL注入+尝试防护。 如果只是在程序运行后,通过第三方进行“事后”保护,则GG,因为那个时候我们已经和”害虫“没啥区别了,甚至已经落后了,可见:落后就要挨打。 在目标程序没有“洁癖”的...

    最近工作需要测试DLL注入+尝试防护。

     

    如果只是在程序运行后,通过第三方进行“事后”保护,则GG,因为那个时候我们已经和”害虫“没啥区别了,甚至已经落后了,可见:落后就要挨打。

     

    在目标程序没有“洁癖”的情况下,当然了,代码我是拿不到的,我们可以修改PE的导入表,那载入的就比较靠前了,如果不信可以用API Monitor 瞅一眼。

     

    这个时候就可以对 LdrLoadDll 进行自己想要的操作,然后WordStrokeHelper32.dll 就不好意思了。。。

     

    因为现阶段只在R3进行防护,所以,驱动的方式我们是无法阻拦的,因为:你TM算个什么东西!(PS:唉,没办法,驱动的权限面前,我们R3只能是弟弟,忍着吧)

     

    写在最后: 如果各位表哥有什么不同的测试结果,可以交流一哈,感谢您的阅读。

    展开全文
  • DLL远程注入实践

    千次阅读 2009-06-03 08:24:00
    最近在网上找到一篇介绍DLL远程注入的文章《DLL远程注入技术》,通过DLL注入,可以让你的进程不独立运行,而是隐藏到一个普通的已经运行的进程中,很多木马好像就是这么实现的。感觉挺有趣的,所以就自己实践了下。...

    最近在网上找到一篇介绍DLL远程注入的文章《DLL远程注入技术》,通过DLL注入,可以让你的进程不独立运行,而是隐藏到一个普通的已经运行的进程中,很多木马好像就是这么实现的。感觉挺有趣的,所以就自己实践了下。主要用到的相关函数有:

    1.       CreateToolhelp32Snapshot  进程快照,找出想要注入的进程

    2.       OpenProcess  获得进程句柄

    3.       VirtualAllocEx  在远程进程中分配虚拟空间

    4.       WriteProcessMemory   写远程进程内存空间

    5.       CreateRemoteThread 在远程进程中创建线程

    6.       LoadLibrary       装载DLL

    7.       FreeLibrary        卸载DLL

    8.       GetModuleHandle   获得DLL的句柄

    9.       GetExitCodeThread  获得线程退出代码

    特别注意这个函数,当以线程里面就只有一个函数时,线程的退出代码,就是函数的返回值。

     

     

       DLL注入的思想方法:

    1.       调用CreateToolhelp32Snapshot ,获得想要注入的目标进程ID

    2.       调用OpenProcess获得目标进程句柄

    3.       VirtualAllocEx中,为目标进程分配保存DLL名称的大小虚拟空间

    4.       调用WriteProcessMemory DLL 名称 写入到新申请的虚拟空间中,因为本线程的空间不能被目标进程使用。这也是要调用VirturalAllocEx分配空间的原因。

    5.       调用CreateRemoteThread函数,为目标进程创建一个新的线程,线程函数为LoadLibrary ,参数为 新申请的虚拟内存地址,这样这个函数就可以执行了。

     

          DLL卸载的思想方法:

             4步跟DLL注入式一样的,接下来不同的是:

    5.调用CreateRemoteThread函数,为目标进程创建的新线程,但是调用的函数为

       GetModuleHandle,目的是去的要卸载的DLL的模块句柄。

    6.       调用WaitForSingleObject等待刚才新建线程退出,然后调用GetExitCodeThread函数,获得刚才线程的推出代码。即函数GetModuleHandle的返回值。

    7.       再调用CreteRemoteThread函数,调用FreeLibrary函数,参数为刚才的GetModuleHandle的返回值。

    8.       这样,卸载DLL的任务已经完成。

     

    在编程过程中遇到的一些小问题,当时发现当目标进程就是本进程时没有问题,当要注入到一些其他的进程时,发现可以正确在目标进程中创建线程,但是没有注入DLL。后来发现是目标进程找不到目标DLL,当把目标DLL拷贝到C盘下面的Windows系统目录下面时,就可以正确注入目标进程了。

     

    下面是我为了实现注入与注销的一个简单封装的DllManager类:

     

     

    DllManager.h文件

     

    DllManger.cpp文件:

     

     

    展开全文
  • DLL 远程注入笔记

    2012-05-08 16:10:00
    学习Windows核心编程,特做此笔录,其实这两个月的学习笔记已经快一本日记本了,之后看看能否自己电脑上拿QQ开刀做实验。 主要写一下远程注入的步骤: 1、用VirtualAllocEx函数在远程进程中的地址空间分配一块...

          学习Windows核心编程,特做此笔录,其实这两个月的学习笔记已经快一本日记本了,之后看看能否自己电脑上拿QQ开刀做实验。

          主要写一下远程注入的步骤:

          1、用VirtualAllocEx函数在远程进程中的地址空间分配一块内存;(防止找不到dll,导致远程进程崩溃)

          2、用WriteProcessMemory函数把DLL的路径名复制到第壹步分配的内存中;

          3、用GetProcAddress函数来得到LoadLibraryW或LoadLibraryA函数(在Kernel32.dll中)的 真实地址;(防止转换函数转换导入表查找函数,也是防止崩溃)

          4、用CreateRemoteThread函数在远程进程中创建一个线程,让新线程调用正确的LoadLibrary函数并在参数中传入第壹步中分配的内存地址,并在DLL的DllMain函数中做以下操作:当收到DLL_PROCESS_ATTACH通知并且可以执行我们想要的代码,当DllMain返回时,远程线程会从LoadLibraryW或LoadLibraryA调用返回BaseThreadStart函数,其调用ExitThread终止线程;

           5、用VirtualFreeEx来释放第壹步分配的内存;

           6、用GetProcAddress函数得到FreeLibrary函数(在Kernel32.dll中)的 真实地址;

           7、用CreateRemoteThread函数在远程进程中创建一个线程,让其调用FreeLibrary函数并在参数中传入远程DLL的HMODULE。

           好吧,开始着手编写.....

          

    转载于:https://www.cnblogs.com/bite_the_bullet/archive/2012/05/08/2490258.html

    展开全文
  • DLL远线程注入

    2017-03-12 09:05:15
    DLL远线程注入技术, 先打开工程1.exe 然后编译运行代码即可注入。 所有源代码已经经过调试在Win7下调试通过,并有详细注释! 适合学习注入的入门人员。
  • Dll注入的问题

    2018-06-13 22:47:19
    学习游戏辅助,根据郁金香的教学视频写了Dll注入的代码,针对热血江湖进行Dll注入,失败(通过360任务管理器查看到Dll并未注入到游戏进程中)。但Dll中的SetWindowsHookEx返回值不为空,说明Hook成功?但是为啥没有...
  • 卸载已经注入进程的DLL 实验

    千次阅读 2010-08-23 17:07:00
    对于DLL注入型病毒、木马、可以很自己编写一个专杀软件!下面的写法对于我来说比较新鲜,用的是返回错误代码的写法,有点API的味道!//获取进程PID DWORD GetProcessPID(char *ProcessName) { CString Name; ...
  • vb6 dll 注入

    热门讨论 2008-09-17 08:53:12
    ATTACH”,说明.dll已经注入并且被调用了,随后再弹出一个对话框,显示的是当前进程加载的所有模块的文件名,当然其中也包含我们的.dll文件,之后弹出对话框提示“DLL_THREAD_DEATH”,线程结束,当记事本进程结束...
  • C# DLL注入技术

    千次阅读 2013-10-04 09:27:50
    前段时间研究了了一下dll注入,虽然这项技术已经被写烂了,而且现在而言,这项技术已经落后了,基本上编程都到内核的级别了,不过再过时的技术对于我们刚学编程的菜鸟来说都是新鲜的,我们还是要一点一点的来学,先...
  • DLL劫持其实就是在DLL加载过程中使用伪装的DLL来替代原DLL文件进而达到注入效果。 先看下DLL加载过程: 1.有些DLL文件的路径是在系统启动阶段就已经设置好的位于system32目录下的路径,这些dll文件的加载在程序...
  • DLL注入之注册表

    2019-09-28 20:57:47
     编写本系列文章纯属为了系统学习DLL注入的方法,所以很多方法可能已经过时,希望各位看官勿喷。当然若有更好的方法,希望不腻赐教。若本文有任何错的地方,也希望各位指正。谢谢! 0x01 适用平台 windows NT/...
  • Bleak用C#编写的Windows本机DLL注入库,支持多种注入方法。 支持的方法CreateRemoteThread ManualMap(仅x86)NtCreateThreadEx QueueUserAPC RtlCreateUserTh令人毛骨悚然的说明自2019年12月12日起已弃用,不再...
  • 介绍 反射式注入 dll ,不会调用 LoadLibrary 这个 API,因此也无法使用 ...假设现在我们已经使用 ReadFile 拿到了 DLL 的所有内容 之后我们需要调用 VirtualAlloc 在目标进程中申请一块内存用来存放这个 DLL
  • 通过Hook将DLL注入进程

    千次阅读 2013-10-18 10:16:44
    首先,读这篇文章之前,默认已经掌握了进程地址空间,dll加载,windows Hook技术。 1. 为什么需要dll注入? 如果一个进程的程序是我们自己编写的,我们可以在程序中隐式或者显式地加载需要的dll,不需要dll注入。...
  • DLL注入,卸载

    千次阅读 2010-12-13 15:10:00
      DLL注入实验:     MSDN已经说明了DllMain可以省略,但这里不能省略。 原因很简单,查看DllMain定义的形参就知道是什么回事啦。 当应用程序加载DLL时会发送消息到DllMain...
  • 利用输入法注入DLL

    2013-05-19 22:45:22
    已经注入进去的DLL。我将这一套功能制作成一个完整的示例,你可以在以下地址下载: http://www.pen88.com/download/imehook.rar 压缩包中的第6个和第8个文件夹演示了此 功能并包含所有源代码。其中文件...
  • 两种DLL注入方式

    千次阅读 2017-05-17 09:39:50
    首先提一下,由于文章完全是我手写,所以打不了太多,请包含,由于我已经提供了源代码,所以我在这里详细讲一下理论,至于想看代码的下载代码就可以了。代码中关于注入的部分做了详细的注释。MFC界面部分的注释没有...
  • DLL线程注入呼出窗口的问题和解决

    千次阅读 2012-08-20 15:05:21
    问题已经解决了,我那样做是可以的,但是要在DLL_PROCESS_ATTACH下另开新线程,然后在新线程中调用钩子,而且在设置了SetWindowsHookEx后,要添加消息循环队列的处理代码部分,如下:    g_hKey = ...
  • DLL注入实验笔记

    2010-08-20 17:24:00
    MSDN已经说明了DllMain可以省略,但这里不能省略。原因很简单,查看DllMain定义的形参就知道是什么回事啦。当应用程序加载DLL时会发送消息到DllMain函数的第二个参数。利用这个特性,加载的DLL就可以立刻响应里面的...
  • 后卫大师教你进程注入 首先提一下,由于文章完全是我手写,所以打不了太多,请包含,由于我已经提供了源代码,所以我在这里详细讲... 所谓DLL注入,既把一个DLL文件放到目标进程中。 下面介绍2种注入方式: ...
  • 网上dll注入的例子,不少是编译不了或运行不了。而且很少可用C#的注入例子(找到一个,根本不能用)。底层的钩子程序,要么要求装驱动,要么程序本身有错误,也存在编译不了的问题。这个资源里,上传者把注入做成了...
  • 虽然我们Game-EC模块里面已经有对64位程序进行注入dll的功能了,但是 在这几天新年里,除了忙着像大多数人一样走亲访友拜年,剩余的时间也没闲着,研究开发了另外一种对64位程序进程进行注入dll的功能,今天给大家...
  • RT。 远程注入的代码已经写完了。 也能成功注入进别的程序里了。 但是如何在那个程序里创建一个自己的按钮? 搜了下网上的演示。 表示不明。 求指教~
  • DLL的远程注入技术

    2011-04-22 02:18:00
    DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的...
  • DLL注入的三种方法

    2009-04-21 11:30:00
    转自... 一、应用HOOK技术进行DLL注入 我原来写过有关HOOK的介绍,如果你看过了或者是以前写过HOOK程序,那么你已经会这种DLL注入了。它其它就是为系统或
  • 实现DLL注入的方法已经很多了,也都比较成熟,用的最多的方法是通过远程线程进行线程注入,然后导入Dll文件。远程线程里有两个关键技术需要解决,一个是全局变量和字符串的存取问题,另一个是地址重定位问题。如果用...
  • 转:DLL注入大法—之HOOK注入

    千次阅读 2010-12-21 15:40:00
    我原来写过有关HOOK的介绍,如果你看过了或者是以前写过HOOK程序,那么你已经会这种DLL注入了。它其它就是为系统或某个线程安装一个钩子。这里要说的是,如果是全局钩子,那么你的DLL将会在进程调用时载入到任意一个...
  • 我们在写DLL的时候,需要在DLL项目里面加上window的API函数... 这样,windows会在用LoadLibrary加载DLL后,调用DllMain函数来执行,而你把自己的函数已经先写在在DllMain里面了,那么你的函数也自然而然被间接调用了. ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 231
精华内容 92
关键字:

dll已经注入