破虚拟化 DLL也是一样 没破是写不进去内存的
有没有详细教程 不知道应用层怎么实现,如果你都能读了和虚拟化就没有什么关系了
应该是内存写保护属性,驱动层的话修改一下cr0寄存器的值就可以了
下面附个短代码
//关闭内存写保护
KIRQL CloseProtection() {
KIRQL irql = KeRaiseIrqlToDpcLevel();
UINT64 cr0 = __readcr0();
cr0 &= 0xfffffffffffeffff;
__writecr0(cr0);
_disable();
return irql;
}
//恢复内存写保护
void ResumeProtection(KIRQL irql) {
UINT64 cr0 = __readcr0();
cr0 |= 0x10000;
_enable();
__writecr0(cr0);
KeLowerIrql(irql);
}
这边建议调用完一定要恢复,不然你会寄的 r3层调用VirtualProtectEx试试 解决了,用了修改内存属性函数就行了
页:
1
[2]
