mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 11:43:23 +08:00

[0.3.x] added : disasm::opmnemo method ( return mnemocode of the instruction ) git-svn-id: https://pykd.svn.codeplex.com/svn@89568 9b283d60-5439-405e-af05-b73fd8c4d996
115 lines
2.6 KiB
C++
115 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include "kdlib/disasm.h"
|
|
|
|
#include "pythreadstate.h"
|
|
#include "stladaptor.h"
|
|
|
|
namespace pykd {
|
|
|
|
inline kdlib::Disasm* loadDisasm()
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return new kdlib::Disasm();
|
|
}
|
|
|
|
|
|
inline kdlib::Disasm* loadDisasmWithOffset(kdlib::MEMOFFSET_64 offset)
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return new kdlib::Disasm(offset);
|
|
}
|
|
|
|
class DisasmAdapter {
|
|
|
|
public:
|
|
|
|
static std::wstring disassemble(kdlib::Disasm& disasm)
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.disassemble();
|
|
}
|
|
|
|
static std::wstring jump(kdlib::Disasm& disasm, kdlib::MEMOFFSET_64 offset)
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.jump(offset);
|
|
}
|
|
|
|
static std::wstring jumprel( kdlib::Disasm& disasm, kdlib::MEMDISPLACEMENT delta)
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.jumprel(delta);
|
|
}
|
|
|
|
static kdlib::MEMOFFSET_64 getNearInstruction( kdlib::Disasm& disasm, kdlib::MEMDISPLACEMENT delta )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.getNearInstruction(delta);
|
|
}
|
|
|
|
static std::wstring reset( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.reset();
|
|
}
|
|
|
|
static std::wstring assembly( kdlib::Disasm& disasm, const std::wstring &instr )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.assembly(instr);
|
|
}
|
|
|
|
static std::wstring instruction( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.instruction();
|
|
}
|
|
|
|
static python::list opcode(kdlib::Disasm& disasm)
|
|
{
|
|
std::vector<unsigned char> lst;
|
|
|
|
do {
|
|
AutoRestorePyState pystate;
|
|
lst = disasm.opcode();
|
|
} while (false);
|
|
|
|
return vectorToList(lst);
|
|
}
|
|
|
|
static std::wstring opmnemo(kdlib::Disasm& disasm)
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.opmnemo();
|
|
}
|
|
|
|
static kdlib::MEMOFFSET_64 begin( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.begin();
|
|
}
|
|
|
|
static kdlib::MEMOFFSET_64 current( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.current();
|
|
}
|
|
|
|
static size_t length( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.length();
|
|
}
|
|
|
|
static kdlib::MEMOFFSET_64 ea( kdlib::Disasm& disasm )
|
|
{
|
|
AutoRestorePyState pystate;
|
|
return disasm.ea();
|
|
}
|
|
};
|
|
|
|
|
|
} // namespace pykd
|
|
|