怎样取得WIN98、WIN2000下CR3的值?请高手解疑后付上原代码,谢谢

解决方案 »

  1.   

    嘿嘿
    15分就想这个问题的答案????!!!Win98的就不说了,Delphi中用ASM进入Ring0 Mov EAX, CR3就出来了
    2000的就不容易了
    Tips:ZwQuerySystemInformation获得系统内核对象
    其OffSet=0X18就是CR3的虚拟地址,换为物理地址,直接对RAM就可以了
    <<< Linear Address to Physical Address Translation >>>
    Total System Handle = 7272
    Current Process ID = $00000CA4
    Open Current PID Handle = $000000AC
    Object EProcess virtual address = $81930D20
    > PDE/PDBR/CR3 virtual address = EProcess + $18
    PDE/PDBR/CR3 virtual address = $81930D38
    PDE/PDBR/CR3 = $02CF9000当然你在2000下用驱动是Easy Job了
    也可以是建立CallGate通过Far Call,进入Ring0,读CR3就很容易了哈哈:)