首页
社区
课程
招聘
发一个注射DLL到其他进程的代码 VC6
发表于: 2005-2-18 21:31 11489

发一个注射DLL到其他进程的代码 VC6

2005-2-18 21:31
11489
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
有点意思!
2005-2-18 22:21
0
雪    币: 216
活跃值: (370)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
随便看了一下,
一点小建议
调试权限可以进程开始时启用一次就行了,
另外,m_hToken没有关闭。
2005-2-19 20:02
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
恩,最好再提供一个卸载接口
2005-2-19 23:09
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
不错,看看
2005-3-11 17:17
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
6
下载...
2005-3-15 15:37
0
雪    币: 415
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
鼓励一下,写起来是不是很麻烦的!

懂得原理就行了
2005-5-21 09:53
0
雪    币: 1
活跃值: (344)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
如题~~~~~
2005-5-30 17:27
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
9
最初由 littlepotato 发布
如题~~~~~

好象不是的吧
2005-5-31 16:37
0
雪    币: 100
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zmh
10
不懂啊 能不能给出详细的思路哈
2005-5-31 18:16
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
嗯,好玩。由它启发能不能写些其它工具的扩展。例如,有一个程序已经停止开发了,又没有源代码。现在想加一个功能进去,纯用汇编又觉得好麻烦,是不是就可以考虑这个方法。;)
2005-6-24 02:28
0
雪    币: 538
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好东西就是用来收藏滴
2005-7-1 14:31
0
雪    币: 226
活跃值: (115)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
不带卸载DLL模块吗??

希望能写个卸载DLL模块的程序共享一下. 谢谢!

因为现在很多病毒都采用注入DLL方式来保护自己.
那我们是否需要更新自己的反病毒方式呢??
2005-8-22 21:11
0
雪    币: 126
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
最初由 skyXnet 发布
不带卸载DLL模块吗??

希望能写个卸载DLL模块的程序共享一下. 谢谢!

因为现在很多病毒都采用注入DLL方式来保护自己.
........


bool WINAPI FreeDll(DWORD dwProcessId, PCSTR pszDllEject)
{      
        HANDLE        hToken,hProcess;
        TOKEN_PRIVILEGES tp;
        char *pSEDEBUG="SeDebugPrivilege";

        hProcess=GetCurrentProcess();
        OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
        LookupPrivilegeValue(NULL,pSEDEBUG,&tp.Privileges[0].Luid);
        tp.PrivilegeCount=1;
        tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL);

       BOOL bRtn = FALSE;
       HANDLE hthSnapshot = NULL;
       HANDLE hProcess = NULL, hThread = NULL;

    __try {
        hthSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
        if (hthSnapshot == NULL) return FALSE;

        // Get the HMODULE of the desired library
        MODULEENTRY32 me = { sizeof(me) };
        BOOL bFound = FALSE;
        BOOL bMoreMods = Module32First(hthSnapshot, &me);
        for (; bMoreMods; bMoreMods = Module32Next(hthSnapshot, &me)) {
            bFound = (stricmp(me.szModule,  pszDllEject) == 0) ||
                        (stricmp(me.szExePath, pszDllEject) == 0);
            if (bFound) break;
        }
        if (!bFound) return FALSE;

        // Get a handle for the target process.
        hProcess = OpenProcess(
            PROCESS_QUERY_INFORMATION |     // Required by Alpha
            PROCESS_CREATE_THREAD     |
            PROCESS_VM_OPERATION,           // For CreateRemoteThread
            FALSE, dwProcessId);
        if (hProcess == NULL) return FALSE;

        // Get the real address of FreeLibrary in Kernel32.dll
        PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
            GetProcAddress(GetModuleHandle("Kernel32"), "FreeLibrary");
        if (pfnThreadRtn == NULL) return FALSE;

        // Create a remote thread that calls FreeLibraryA(HANDLE)
        hThread = CreateRemoteThread(hProcess, NULL, 0,
            pfnThreadRtn, me.modBaseAddr, 0, NULL);
        if (hThread == NULL) return FALSE;

        // Wait for the remote thread to terminate
        ///WaitForSingleObject(hThread, INFINITE);

        bRtn = TRUE; // Everything executed successfully
    }
    __finally { // Now we can clean everything up

        if (hthSnapshot != NULL)
            CloseHandle(hthSnapshot);

        if (hThread     != NULL)
            CloseHandle(hThread);

        if (hProcess    != NULL)
            CloseHandle(hProcess);
    }

    return bRtn;
}
2005-10-6 00:52
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最好有卸载DLL功能

最初由 nOpnOp 发布
本代码不支持Win9x系列的系统附件:InjectDLL.rar
2005-10-16 22:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
请问注入后可以执行注入文件的其它函数吗 ?
2005-10-23 18:14
0
雪    币: 236
活跃值: (155)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
最初由 childe 发布
请问注入后可以执行注入文件的其它函数吗 ?


需要再那个DLL里面建立一个线程,然后就可以和发射动态库的进程
进行通信,理论上可以完全控制被注入的进程,包括类似调试的功能。
2005-10-25 17:08
0
雪    币: 212
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
为什么不用VC做呢?
2005-11-1 20:43
0
游客
登录 | 注册 方可回帖
返回
//