我系统是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直播授课