首页
社区
课程
招聘
请问EncryptPE是如何注入到explorer.exe中的?
发表于: 2006-10-30 17:30 4553

请问EncryptPE是如何注入到explorer.exe中的?

2006-10-30 17:30
4553
新版的不用全局hook了,终于不用再与消息循环打交道;
但是它是如何注入到explorer中的呢?是不是通过WriteProcessMemory写入LoadLibary"v2006105.epe"之类的代码呢?
唉,这个软件经常要结束explorer,搞到电脑很慢啊!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
SetWindowsHookEx
2006-10-30 17:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
// inject.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>

int main(int argc, char* argv[])
{
        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);
       
       
        DWORD pid;

        HANDLE hSnapshot = NULL;

        hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);

        PROCESSENTRY32 pe;
        pe.dwSize = sizeof(PROCESSENTRY32);

        Process32First(hSnapshot,&pe);

        do
        {
                if(stricmp(pe.szExeFile,"winlogon.exe")==0) //.......
                {
                        pid = pe.th32ProcessID;
                        break;
                }
        }
        while(Process32Next(hSnapshot,&pe)==TRUE);

        CloseHandle (hSnapshot);

        ////////////////////////////////////////////////////////////
        //             把dll注入explorer.exe进程                  //
        ////////////////////////////////////////////////////////////
        PWSTR pszLibFileRemote = NULL;
        HANDLE hRemoteProcess = NULL,hRemoteThread = NULL;

        hRemoteProcess = OpenProcess(
                 PROCESS_QUERY_INFORMATION |   // Required by Alpha
         PROCESS_CREATE_THREAD     |   // For CreateRemoteThread
         PROCESS_VM_OPERATION      |   // For VirtualAllocEx/VirtualFreeEx
         PROCESS_VM_WRITE,             // For WriteProcessMemory
         FALSE, pid);

        char CurPath[256]={0};
        //strcpy(CurPath,argv[1]);
        //GetSystemDirectory(CurPath,256);
        GetCurrentDirectory(256,CurPath);

        lstrcat(CurPath,"\\dll1.dll");

        int len = (strlen(CurPath)+1)*2;
        WCHAR wCurPath[256];
        MultiByteToWideChar(CP_ACP,0,CurPath,-1,wCurPath,256);

        pszLibFileRemote = (PWSTR)
                VirtualAllocEx(hRemoteProcess, NULL, len, MEM_COMMIT, PAGE_READWRITE);

        bool ret=WriteProcessMemory(hRemoteProcess, pszLibFileRemote,
                (PVOID) wCurPath, len, NULL);

        PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
         GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW");

        hRemoteThread = CreateRemoteThread(hRemoteProcess, NULL, 0, pfnThreadRtn, pszLibFileRemote, 0, NULL);

        if(!hRemoteThread)
                MessageBox(NULL,"ERROR","",0);
        else
       MessageBox(NULL,"OK","",0);

        Sleep(4000);
        return 0;
}

////////http://virvir.bolgbus.com
/////414947531
2006-10-30 20:21
0
雪    币: 12626
活跃值: (3122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
无法断在CreateRemoteThread中.
2006-11-2 08:37
0
雪    币: 12626
活跃值: (3122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
无法断在CreateRemoteThread中.是否EncryptPE不使用该注入方法.
2006-11-2 08:37
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
看二楼的~~
2006-11-2 08:48
0
雪    币: 12626
活跃值: (3122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
也断不下来,不是说不用全局钩子了吗?
2006-11-2 16:21
0
雪    币: 356
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
V22006以后的版本好象都是使用SetwindowshookEx来注入EPE模块的.呵呵,具体方法可以参见《核心编程》中的DLL注入方法。上面甚至有例子,同样是注入exeplorer.我怀疑老王直接从上面copy代码。哈哈。
2006-11-12 23:44
0
游客
登录 | 注册 方可回帖
返回
//