2010-07-06 22:49:02 +08:00
|
|
|
#pragma once
|
|
|
|
|
2011-02-24 18:46:00 +08:00
|
|
|
#include <boost/scoped_array.hpp>
|
2010-07-27 18:24:50 +08:00
|
|
|
|
2010-07-06 22:49:02 +08:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
bool
|
2010-10-26 21:44:19 +08:00
|
|
|
loadMemory( ULONG64 address, PVOID dest, ULONG length, BOOLEAN phyAddr = FALSE );
|
2010-07-06 22:49:02 +08:00
|
|
|
|
2010-07-30 01:49:08 +08:00
|
|
|
ULONG64
|
|
|
|
loadPtrByPtr( ULONG64 address );
|
|
|
|
|
2010-12-21 00:46:21 +08:00
|
|
|
ULONG64
|
|
|
|
loadMWord( ULONG64 address );
|
|
|
|
|
|
|
|
LONG64
|
|
|
|
loadSignMWord( ULONG64 address );
|
|
|
|
|
2010-07-30 01:49:08 +08:00
|
|
|
|
2010-07-27 18:24:50 +08:00
|
|
|
template<typename T>
|
|
|
|
boost::python::object
|
2010-10-26 21:44:19 +08:00
|
|
|
loadArray( ULONG64 address, ULONG number, BOOLEAN phyAddr = FALSE )
|
2010-07-27 18:24:50 +08:00
|
|
|
{
|
2011-02-24 18:46:00 +08:00
|
|
|
boost::scoped_array<T> buffer(new T[number]);
|
2010-07-27 18:24:50 +08:00
|
|
|
|
2011-02-24 18:46:00 +08:00
|
|
|
if ( loadMemory( address, buffer.get(), number*sizeof(T), phyAddr ) )
|
2010-07-27 18:24:50 +08:00
|
|
|
{
|
2011-02-11 15:48:53 +08:00
|
|
|
boost::python::list lst;
|
2010-07-27 18:24:50 +08:00
|
|
|
|
|
|
|
for ( ULONG i = 0; i < number; ++i )
|
2011-02-11 15:48:53 +08:00
|
|
|
lst.append( buffer[i] );
|
2010-07-27 18:24:50 +08:00
|
|
|
|
2011-02-11 15:48:53 +08:00
|
|
|
return lst;
|
2010-07-27 18:24:50 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return boost::python::object();
|
|
|
|
}
|
|
|
|
|
2011-01-25 23:32:01 +08:00
|
|
|
|
2010-07-28 18:07:43 +08:00
|
|
|
template<typename T>
|
|
|
|
boost::python::object
|
|
|
|
loadByPtr( ULONG64 address )
|
|
|
|
{
|
|
|
|
T value;
|
|
|
|
|
|
|
|
if ( loadMemory( address, &value, sizeof(T) ) )
|
|
|
|
{
|
|
|
|
return boost::python::object( value );
|
|
|
|
}
|
|
|
|
|
|
|
|
return boost::python::object();
|
|
|
|
}
|
|
|
|
|
2011-01-25 23:32:01 +08:00
|
|
|
template<>
|
|
|
|
boost::python::object
|
|
|
|
loadByPtr<char>( ULONG64 address );
|
|
|
|
|
2010-07-27 19:36:17 +08:00
|
|
|
boost::python::object
|
|
|
|
loadPtrArray( ULONG64 address, ULONG number );
|
|
|
|
|
2010-07-28 22:42:05 +08:00
|
|
|
boost::python::object
|
|
|
|
loadUnicodeStr( ULONG64 address );
|
|
|
|
|
2010-07-29 22:39:49 +08:00
|
|
|
boost::python::object
|
|
|
|
loadAnsiStr( ULONG64 address );
|
|
|
|
|
2010-11-09 17:33:19 +08:00
|
|
|
boost::python::object
|
|
|
|
loadCStr( ULONG64 address );
|
|
|
|
|
2011-01-24 22:13:02 +08:00
|
|
|
bool
|
|
|
|
loadCStrToBuffer( ULONG64 address, PCHAR buffer, ULONG bufferLen );
|
|
|
|
|
2010-11-09 17:33:19 +08:00
|
|
|
boost::python::object
|
|
|
|
loadWStr( ULONG64 address );
|
|
|
|
|
2011-01-24 22:13:02 +08:00
|
|
|
bool
|
|
|
|
loadWStrToBuffer( ULONG64 address, PWCHAR buffer, ULONG bufferLen );
|
|
|
|
|
2010-07-06 22:49:02 +08:00
|
|
|
bool
|
2010-10-26 21:44:19 +08:00
|
|
|
compareMemory( ULONG64 addr1, ULONG64 addr2, ULONG length, BOOLEAN phyAddr = FALSE );
|
2010-07-06 22:49:02 +08:00
|
|
|
|
|
|
|
ULONG64
|
|
|
|
addr64( ULONG64 addr );
|
|
|
|
|
2010-08-16 23:04:22 +08:00
|
|
|
boost::python::object
|
|
|
|
loadLinkedList( ULONG64 address );
|
|
|
|
|
2011-02-07 15:59:22 +08:00
|
|
|
bool
|
|
|
|
isOffsetValid( ULONG64 addr );
|
|
|
|
|
2010-07-06 22:49:02 +08:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|