From b7555ab69a7430eddf3ce31e72ecf0c78d1e4c6b Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Sat, 20 Jul 2013 11:29:11 +0000 Subject: [PATCH] [0.3.x] added : loadMSR git-svn-id: https://pykd.svn.codeplex.com/svn@84383 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/cpucontext.h | 16 ++++++++++++++++ pykd/dbgengine.cpp | 15 ++++++++------- pykd/dbgengine.h | 2 +- pykd/pymod.cpp | 21 ++++++++++----------- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/pykd/cpucontext.h b/pykd/cpucontext.h index 9eb4e6c..025e2d0 100644 --- a/pykd/cpucontext.h +++ b/pykd/cpucontext.h @@ -17,6 +17,22 @@ public: static python::object getRegisterByIndex( kdlib::CPUContext& cpu, size_t index ); }; +inline python::object getRegisterByName( const std::wstring &name ) +{ + return CPUContextAdaptor::getRegisterByName( *kdlib::loadCPUCurrentContext().get(), name ); +} + +inline unsigned long long loadMSR( size_t msrIndex ) +{ + return kdlib::loadCPUCurrentContext()->loadMSR( msrIndex ); +} + +inline void setMSR( size_t msrIndex, unsigned long long value ) +{ + return kdlib::loadCPUCurrentContext()->setMSR( msrIndex, value ); +} + + /////////////////////////////////////////////////////////////////////////////// } //end namespace pykd diff --git a/pykd/dbgengine.cpp b/pykd/dbgengine.cpp index 65d6e50..4ce18aa 100644 --- a/pykd/dbgengine.cpp +++ b/pykd/dbgengine.cpp @@ -155,19 +155,20 @@ python::tuple findSymbolAndDisp( ULONG64 offset ) /////////////////////////////////////////////////////////////////////////////// -python::dict getSystemVersion() +python::object getSystemVersion() { kdlib::SystemInfo sysInfo; kdlib::getSystemInfo( sysInfo ); - python::dict dct; - dct["majorVersion"] = sysInfo.majorVersion; - dct["minorVersion"] = sysInfo.minorVersion; - dct["buildNumber"] = sysInfo.buildNumber; - dct["buildDescription"] = sysInfo.buildDescription; + python::object obj; - return dct; + obj.attr("majorVersion") = sysInfo.majorVersion; + obj.attr("minorVersion") = sysInfo.minorVersion; + obj.attr("buildNumber") = sysInfo.buildNumber; + obj.attr("buildDescription") = sysInfo.buildDescription; + + return obj; } /////////////////////////////////////////////////////////////////////////////// diff --git a/pykd/dbgengine.h b/pykd/dbgengine.h index 6d93c76..c81e427 100644 --- a/pykd/dbgengine.h +++ b/pykd/dbgengine.h @@ -25,7 +25,7 @@ python::tuple getSourceLine( kdlib::MEMOFFSET_64 offset = 0 ); python::tuple findSymbolAndDisp( ULONG64 offset ); -python::dict getSystemVersion(); +python::object getSystemVersion(); /////////////////////////////////////////////////////////////////////////////// diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index efc957f..2642562 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -248,17 +248,16 @@ BOOST_PYTHON_MODULE( pykd ) "Return instance of the typedVar class. It's value are loaded from the target memory." "The start address is calculated by the same method as the standard macro CONTAINING_RECORD does" ); - - // // CPU registers - // python::def( "reg", &getRegByName, - // "Return a CPU regsiter value by the register's name" ); - // python::def( "reg", &getRegByIndex, - // "Return a CPU regsiter value by the register's value" ); - // python::def ( "rdmsr", &loadMSR, - // "Return MSR value" ); - // python::def( "wrmsr", &setMSR, - // "Set MSR value" ); - // python::def( "getProcessorMode", &getProcessorMode, + // CPU registers + python::def( "reg", &getRegisterByName, + "Return a CPU regsiter value by the register's name" ); + python::def ( "rdmsr", &loadMSR, + "Return MSR value" ); + python::def( "wrmsr", &setMSR, + "Set MSR value" ); + + + // python::def( "getProcessorMode", &getProcessorMode, // "Return current processor mode as string: X86, ARM, IA64 or X64" ); // python::def( "getProcessorType", &getProcessorType, // "Return type of physical processor: X86, ARM, IA64 or X64" );