本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 74329|回复: 535

一部分淫荡的代码~   [复制链接]

Rank: 5Rank: 5

发表于 2008-2-5 04:56:15 |显示全部楼层
void hkKeAttachProcess(PEPROCESS Process)
{
    void* oricall;
    DWORD calleraddr;
    ULONG pid;
    BOOL find;
    PLDR_DATA_TABLE_ENTRY pldr;
    __asm mov eax,[ebp+4];
    __asm mov calleraddr,eax;
    oricall = phkKeAttachProcess->oritocall;
    pid = *(PULONG)((ULONG)Process + pIdOffset);
    find = FALSE;
    //if (KeGetCurrentIrql()<DISPATCH_LEVEL)
    //{
    //    //////////////////////////////////////////////////////////////////////////
    //    //event 模式
    //    //////////////////////////////////////////////////////////////////////////
    //}
   
    if (!g_PsLoadedModuleList) goto pass;
    if(!PrtFindRule(PROTECT_PROCESS,(PWSTR)pid)||PsGetCurrentProcessId()==(HANDLE)pid)
        goto pass;
    pldr = (PLDR_DATA_TABLE_ENTRY)g_PsLoadedModuleList;
    while (pldr->InLoadOrderModuleList.Flink != g_PsLoadedModuleList)
        {

        if (MmIsAddressValid((PVOID)pldr->FullDllName.Buffer))
            {
            DbgPrint("Base:0x%08x,Name:%ws,Size:0x%08x", pldr->DllBase, pldr->FullDllName.Buffer, pldr->SizeOfImage);
                if (calleraddr>=(DWORD)pldr->DllBase&&calleraddr<=(DWORD)pldr->DllBase+(DWORD)pldr->SizeOfImage)
                {
                    //////////////////////////////////////////////////////////////////////////
                    //对于我们保护的进程
                    //检查模块名字是否是我们希望能够attach的
                    //列表
                    //不是我们希望attach的就将Process = IoGetCurrentProcess();
                    //////////////////////////////////////////////////////////////////////////
                    find = TRUE;
                    if (Find_attach_filter((HANDLE)pid,pldr->BaseDllName.Buffer,sizeof(WCHAR)*wcslen(pldr->BaseDllName.Buffer)))
                        {
                            Process = IoGetCurrentProcess();
                        }
                }
            }
            pldr = (PLDR_DATA_TABLE_ENTRY)pldr->InLoadOrderModuleList.Flink;
        }
    if (!find)
    {
        //////////////////////////////////////////////////////////////////////////
        //未知模块,直接Trap死人
        //////////////////////////////////////////////////////////////////////////
        Process = IoGetCurrentProcess();
    }
pass:   
    __asm
    {
            push Process
            call dword ptr oricall
    }
    return ;
}

void hkKeStackAttachProcess(PEPROCESS Process,PKAPC_STATE apc)
    {
    void* oricall;
    DWORD calleraddr;
    ULONG pid;
    BOOL find;
    PLDR_DATA_TABLE_ENTRY pldr;
    __asm mov eax,[ebp+4];
    __asm mov calleraddr,eax;
    oricall = phkKeStackAttachProcess->oritocall;
    pid = *(PULONG)((ULONG)Process + pIdOffset);
    find = FALSE;
    //if (KeGetCurrentIrql()<DISPATCH_LEVEL)
    //{
    //    //////////////////////////////////////////////////////////////////////////
    //    //event 模式
    //    //////////////////////////////////////////////////////////////////////////
    //}

    if (!g_PsLoadedModuleList) goto pass;
    if(!PrtFindRule(PROTECT_PROCESS,(PWSTR)pid)||PsGetCurrentProcessId()==(HANDLE)pid)
        goto pass;
    pldr = (PLDR_DATA_TABLE_ENTRY)g_PsLoadedModuleList;
    while (pldr->InLoadOrderModuleList.Flink != g_PsLoadedModuleList)
        {

        if (MmIsAddressValid((PVOID)pldr->FullDllName.Buffer))
            {
            DbgPrint("Base:0x%08x,Name:%ws,Size:0x%08x", pldr->DllBase, pldr->FullDllName.Buffer, pldr->SizeOfImage);
            if (calleraddr>=(DWORD)pldr->DllBase&&calleraddr<=(DWORD)pldr->DllBase+(DWORD)pldr->SizeOfImage)
                {
                //////////////////////////////////////////////////////////////////////////
                //对于我们保护的进程
                //检查模块名字是否是我们希望能够attach的
                //dxg.ntos.ndis.tdi.afd.tcp win32k,ddi驱动等都是应该允许的,这个是个列表
                //估计需要ring3维护传入
                //不是我们希望attach的就将Process = IoGetCurrentProcess();
                //////////////////////////////////////////////////////////////////////////
                find = TRUE;
                if (Find_attach_filter((HANDLE)pid,pldr->BaseDllName.Buffer,sizeof(WCHAR)*wcslen(pldr->BaseDllName.Buffer)))
                {
                    Process = IoGetCurrentProcess();
                }
                }
            }
        pldr = (PLDR_DATA_TABLE_ENTRY)pldr->InLoadOrderModuleList.Flink;
        }
    if (!find)
        {
        //////////////////////////////////////////////////////////////////////////
        //未知模块,直接Trap死人
        //////////////////////////////////////////////////////////////////////////
        Process = IoGetCurrentProcess();
        }
pass:   
    __asm
        {
            push apc
            push Process
            call dword ptr oricall
        }
    return ;
    }

Rank: 5Rank: 5

发表于 2008-2-5 04:56:36 |显示全部楼层
非常邪恶哦~

Rank: 2

发表于 2008-2-5 06:00:37 |显示全部楼层
R3下就改一个字节就可以防止Attach了吧,不过没驱动的淫荡

Rank: 4

发表于 2008-2-5 10:44:10 |显示全部楼层
啥啥~~


Rank: 1

发表于 2008-2-5 12:22:26 |显示全部楼层
甚是淫荡~~~   

Rank: 1

发表于 2008-2-5 12:23:12 |显示全部楼层
引用第2楼bughoho于2008-02-05 03:00发表的  :
R3下就改一个字节就可以防止Attach了吧,不过没驱动的淫荡

我要学,我要学。。。BUGHOHO教我吧

Rank: 1

发表于 2008-2-5 13:30:34 |显示全部楼层
越淫荡越好!

Rank: 3Rank: 3

发表于 2008-2-5 14:00:32 |显示全部楼层
喜欢淫荡的~

Rank: 2

发表于 2008-2-5 14:01:03 |显示全部楼层
淫荡?看看

Rank: 1

发表于 2008-2-5 14:56:14 |显示全部楼层
有传说中的那么淫荡?

Rank: 1

发表于 2008-2-5 16:22:14 |显示全部楼层
我看不到

Rank: 2

发表于 2008-2-5 19:30:20 |显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊。。。。

万恶的声望。。。。。。。。。。。

我要声望。。。。。。。。。。。。

Rank: 1

发表于 2008-2-6 03:08:42 |显示全部楼层
   貌似威望不够看淫荡的?

Rank: 1

发表于 2008-2-6 12:25:52 |显示全部楼层
我晕
还限制菜鸟浏览呀

Rank: 1

发表于 2008-2-6 14:37:29 |显示全部楼层
淫荡?看看

Rank: 2

发表于 2008-2-6 17:11:14 |显示全部楼层
回复啊回复。。。

Rank: 2

发表于 2008-2-6 19:43:04 |显示全部楼层
只能靠想象了...

Rank: 1

发表于 2008-2-8 19:07:54 |显示全部楼层
  

Rank: 1

发表于 2008-2-10 23:20:07 |显示全部楼层
为什么呢?

Rank: 1

发表于 2008-2-11 01:24:42 |显示全部楼层
又是隐藏的....
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-6-16 11:58 , Processed in 0.027302 second(s), 9 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部