2010-10-28 16:04:01 +08:00
|
|
|
#
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
2010-10-28 17:06:43 +08:00
|
|
|
import sys
|
2010-10-28 16:04:01 +08:00
|
|
|
from pykd import *
|
|
|
|
|
|
|
|
def cr4( value = 0 ):
|
|
|
|
|
|
|
|
if value == 0:
|
|
|
|
value = reg( "cr4" )
|
|
|
|
|
2010-11-22 17:01:40 +08:00
|
|
|
dprintln( "CR4: %x (" % value + "".join( [ ( value & ( 1 << ( 31 - i ) ) ) and "1" or "0" for i in range(0,32) ] ) + ")" )
|
2010-10-28 16:04:01 +08:00
|
|
|
|
2013-01-14 19:33:14 +08:00
|
|
|
for i in range (0, 32):
|
2010-10-28 16:04:01 +08:00
|
|
|
bits = { 0 : "VME", 1 : "PVI", 2 : "TSD", 3 : "DE", 4 : "PSE", 5 : "PAE", 6 : "MCE", 7 : "PGE", 8 : "PCE", 9 : "OSFXSR", 10 : "OSXMMEXCPT", 13 : "VMXE", 14 : "SMXE", 17 : "PCIDE", 18 : "OSXSAVE" }
|
|
|
|
if ( ( 1 << ( 31 -i ) ) & value ) and 31-i in bits:
|
|
|
|
dprint( " " + bits[31-i] )
|
|
|
|
|
|
|
|
dprintln("")
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
2011-04-15 00:01:29 +08:00
|
|
|
if not isWindbgExt():
|
2010-10-28 16:04:01 +08:00
|
|
|
print "script is launch out of windbg"
|
|
|
|
quit( 0 )
|
|
|
|
|
2010-11-22 17:01:40 +08:00
|
|
|
if len(sys.argv) > 1:
|
|
|
|
cr4( int( sys.argv[1], 16 ) )
|
2010-10-28 16:04:01 +08:00
|
|
|
else:
|
|
|
|
cr4()
|
|
|
|
|
|
|
|
|
|
|
|
|