-
-
内核下获取地址的问题
-
发表于:
2018-9-26 14:31
2526
-
win7 32下
NTSTATUS AnitNtOpenProcess()
{
unsigned long pushaddr;
BYTE * NtWriteVirtualMemoryByte
BYTE *p;
LONG * NtWriteVirtualMemorydangqian = (LONG*)GetNtSSDT_Adrr(0x18F);
//0x18 NtWriteVirtualMemory序号
DbgPrint("NtWriteVirtualMemory地址:%0x", NtWriteVirtualMemorydangqian);
NtWriteVirtualMemoryByte= (BYTE *)GetNtSSDT_Adrr(0x18F);
p = NtWriteVirtualMemoryByte;
while (1)
{
if ( (*(p + 5) == 0xE8) && (*p == 0x68))
{
//定位成功后取地址
push= *(PULONG)(p + 1) + (ULONG)(p + 5);
break;
}
//推动指针
p++;
}
DbgPrint("Push地址:%0x", pushaddr);
return 1;
}
附上 汇编汇编代码
840a4d31 6a18 push 18h
840a4d33 68886ee983 push offset nt! ?? ::FNODOBFM::`string'+0x3f08 (83e96e88)
840a4d38 e8b3a7e1ff call nt!_SEH_prolog4 (83ebf4f0)
840a4d3d 648b3d24010000 mov edi,dword ptr fs:[124h]
取出 第2行的 83e96e88 一直取出的不对 但是取 call nt!_SEH_prolog4 (83ebf4f0) 或者JMP XXX可以取出来 这是为什么呢?怎么办
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!