首页
社区
课程
招聘
[求助]从内核文件搜索NtOpenProcess地址怎么搜不到啊
发表于: 2009-5-18 00:03 3571

[求助]从内核文件搜索NtOpenProcess地址怎么搜不到啊

2009-5-18 00:03
3571
我系统是xp3的,下面的那代码用的是sudami的,但是我搜不到啊。还请问的是,是不是能从文件里读入内存,再写入恢复NtOpenProcess的inline hook。
for (i = 0; i < fsi.EndOfFile.LowPart; i++)   // 暴力搜索NtOpenProcess这个函数
        {
               
                if ( FileContent[i] == 0x68 && FileContent[i+1] == 0xc4 && FileContent[i+2] == 0x00 && FileContent[i+3] == 0x00 &&
                        FileContent[i+4] == 0x00 && FileContent[i+5] == 0x68 && FileContent[i+6] == 0xc0 && FileContent[i+7] == 0xb4 &&
                        FileContent[i+8] == 0x4d && FileContent[i+9] == 0x80 && FileContent[i+10] == 0xe8 && FileContent[i+11] == 0x79 &&
                        FileContent[i+12] == 0x07 && FileContent[i+13] == 0xf7 && FileContent[i+14] == 0xff &&FileContent[i+15] == 0x33 &&
                        FileContent[i+16] == 0xf6 && FileContent[i+17] == 0x89 && FileContent[i+18] == 0x75 &&FileContent[i+19] == 0xd4 &&
                        FileContent[i+20] == 0x33 && FileContent[i+21] == 0xc0 && FileContent[i+22] == 0x8d && FileContent[i+23] == 0x7d &&
                        FileContent[i+24] == 0xd8 && FileContent[i+25] == 0xab && FileContent[i+26] == 0x64 &&FileContent[i+27] == 0xa1 &&
                        FileContent[i+28] == 0x24 && FileContent[i+29] == 0x01 && FileContent[i+30] == 0x00 && FileContent[i+31] == 0x00 &&
                        FileContent[i+32] == 0x8a && FileContent[i+33] == 0x80&& FileContent[i+34] == 0x40 )                
                {
                        DbgPrint("文件偏移i: %08lx\n", (PVOID)i);
                        ylb_1 = OffsetToRva(psh, pfh->NumberOfSections ,i); //文件偏移到RVA
                        if (ylb_1 == 0) {
                                DbgPrint("ylb_1 == 0 Error\n");
                                return ;

                        }
                        if (ylb_1 > SizeOfImage) {
                                DbgPrint("ylb_1 > SizeOfImage Error\n");
                                return ;
                        }
                        ylb_1 += ModuleBase; //得到函数的真实地址
                        if ( !MmIsAddressValid((PVOID)ylb_1) )
                        {
                                DbgPrint("!MmIsAddressValid((PVOID)ylb_1 )  Error\n");
                                return;
                        }
                        funcAddr=ylb_1;
                        DbgPrint("NtOpenProcess:\t0x%08x\n",funcAddr);
                        break;
                }

        }
    DbgPrint("Nonting is found\n");

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
特征码匹配多不好
2009-5-18 07:34
0
游客
登录 | 注册 方可回帖
返回
//