From 06239a502a4cfc1d3d06fbd29bb6140832a0b607 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Fri, 9 Sep 2016 08:34:59 +0000 Subject: [PATCH] [0.3.x] added : setIP, setSP, setBP routines ( change instruction, stack, frame pointers ) git-svn-id: https://pykd.svn.codeplex.com/svn@91034 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/pycpucontext.h | 17 +++++++++++++++++ pykd/pymod.cpp | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/pykd/pycpucontext.h b/pykd/pycpucontext.h index 34a1726..d3e9f75 100644 --- a/pykd/pycpucontext.h +++ b/pykd/pycpucontext.h @@ -101,6 +101,23 @@ inline kdlib::MEMOFFSET_64 getFP() return kdlib::getFrameOffset(); } +inline void setIP(kdlib::MEMOFFSET_64 offset) +{ + AutoRestorePyState pystate; + kdlib::setInstructionOffset(offset); +} + +inline void setSP(kdlib::MEMOFFSET_64 offset) +{ + AutoRestorePyState pystate; + return kdlib::setStackOffset(offset); +} + +inline void setFP(kdlib::MEMOFFSET_64 offset) +{ + AutoRestorePyState pystate; + return kdlib::setFrameOffset(offset); +} inline unsigned long long loadMSR( unsigned long msrIndex ) { AutoRestorePyState pystate; diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index e9e3349..d2c16aa 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -425,6 +425,12 @@ BOOST_PYTHON_MODULE( pykd ) "Return stack pointer"); python::def("getFP", pykd::getFP, "Return frame pointer"); + python::def("setIP", pykd::setIP, + "Change instruction pointer"); + python::def("setSP", pykd::setSP, + "Change stack pointer"); + python::def("setFP", pykd::setFP, + "Change frame pointer"); python::def ( "rdmsr", pykd::loadMSR, "Return MSR value" ); python::def( "wrmsr", pykd::setMSR,