#1 - 2023-10-9 22:48
石原英里華(常盤るる) (来如遠致)
近日,在我针对一款游戏Read-Only部分的程序或Memory,渴望使其变为Read/Write Memory。因为种种原因,最好也最为可行的办法是建立一个Kernel Driver,使用Memory Descriptor List将其映射为可修改的Memory。
其程式逻辑为
一、阅取ini File,获得程式PID(进程ID)
二、读取目标程式Base address与Section Size
三、完成MDL(Memory Descriptor List)映射。
然而在编译完成后,使用DebugView程式监视Kernel,无法找到任何Ouput Messages。
(注:此点已经解决。KdPrint需要在Debug模式下完成compile才会正常Print。另外,DebugView需要勾选所有Kernel相关选项)
另外,使用sc delete <ServiceName>删除Service后,无法再次create或是start。其均会显示The specified service has been marked for deletion,依据stackoverflow的某些建议无果。需要对PC进行Restart。
如果方便,可以帮助我审视一下代码吗?
一切程式源码与可利用程式可以在此找到。
https://icedrive.net/s/SDkiPQwVuvxgwC8CTatPSjhPNkzV
Disable DSE来自Unknowncheats,它使您可以运行未经签名的Kernel Driver。
如果您需要调试,我可以直接协助您编译新的Kernel Driver。
其程式逻辑为
一、阅取ini File,获得程式PID(进程ID)
二、读取目标程式Base address与Section Size
三、完成MDL(Memory Descriptor List)映射。
然而在编译完成后,使用DebugView程式监视Kernel,无法找到任何Ouput Messages。
(注:此点已经解决。KdPrint需要在Debug模式下完成compile才会正常Print。另外,DebugView需要勾选所有Kernel相关选项)
另外,使用sc delete <ServiceName>删除Service后,无法再次create或是start。其均会显示The specified service has been marked for deletion,依据stackoverflow的某些建议无果。需要对PC进行Restart。
如果方便,可以帮助我审视一下代码吗?
一切程式源码与可利用程式可以在此找到。
https://icedrive.net/s/SDkiPQwVuvxgwC8CTatPSjhPNkzV
Disable DSE来自Unknowncheats,它使您可以运行未经签名的Kernel Driver。
如果您需要调试,我可以直接协助您编译新的Kernel Driver。
相比于NT,前置的知识应该是Kernel的内存与User的内存是何种关系。这一点我的确没有任何了解。
一个物理内存页可以映射到多个不同的虚拟内存地址 可以在多个页表中映射到不同的位置 用户进程和你的内核驱动不一定用同一个页表
我理解你想把某个进程的代码页映射到你驱动程序的虚拟内存空间里 大概是要拿到MDL再映射
了解x86 paging怎么工作看 intel sdm vol 3 chap 4: https://www.intel.com/content/ww ... ical/intel-sdm.html
NT内核怎么操作内存查microsoft的文档
一般概念上的分页怎么工作 去修一门操作系统的课程