1
0
Fork 0

DBG: better (and more modular) script api. added Script::Pattern, Script::Gui and Script::Module

This commit is contained in:
Mr. eXoDia 2015-06-29 00:42:59 +02:00
parent b44cd46e8d
commit ea1ca19db2
15 changed files with 1035 additions and 383 deletions

View File

@ -5,283 +5,4 @@
#define SCRIPT_EXPORT PLUG_IMPEXP
namespace Script
{
namespace Debug
{
SCRIPT_EXPORT void Wait();
SCRIPT_EXPORT void Run();
SCRIPT_EXPORT void Pause();
SCRIPT_EXPORT void Stop();
SCRIPT_EXPORT void StepIn();
SCRIPT_EXPORT void StepOver();
SCRIPT_EXPORT void StepOut();
};
namespace Memory
{
SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead);
SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten);
SCRIPT_EXPORT unsigned char ReadByte(duint addr);
SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data);
SCRIPT_EXPORT unsigned short ReadWord(duint addr);
SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data);
SCRIPT_EXPORT unsigned int ReadDword(duint addr);
SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data);
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long ReadQword(duint addr);
SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data);
#endif //_WIN64
SCRIPT_EXPORT duint ReadPtr(duint addr);
SCRIPT_EXPORT bool WritePtr(duint addr, duint data);
};
namespace Register
{
enum RegisterEnum
{
DR0,
DR1,
DR2,
DR3,
DR6,
DR7,
EAX,
AX,
AH,
AL,
EBX,
BX,
BH,
BL,
ECX,
CX,
CH,
CL,
EDX,
DX,
DH,
DL,
EDI,
DI,
ESI,
SI,
EBP,
BP,
ESP,
SP,
EIP,
CIP,
#ifdef _WIN64
RAX,
RBX,
RCX,
RDX,
RSI,
SIL,
RDI,
DIL,
RBP,
BPL,
RSP,
SPL,
RIP,
R8,
R8D,
R8W,
R8B,
R9,
R9D,
R9W,
R9B,
R10,
R10D,
R10W,
R10B,
R11,
R11D,
R11W,
R11B,
R12,
R12D,
R12W,
R12B,
R13,
R13D,
R13W,
R13B,
R14,
R14D,
R14W,
R14B,
R15,
R15D,
R15W,
R15B
#endif //_WIN64
};
SCRIPT_EXPORT duint Get(RegisterEnum reg);
SCRIPT_EXPORT bool Set(RegisterEnum reg, duint value);
SCRIPT_EXPORT duint GetDR0();
SCRIPT_EXPORT bool SetDR0(duint value);
SCRIPT_EXPORT duint GetDR1();
SCRIPT_EXPORT bool SetDR1(duint value);
SCRIPT_EXPORT duint GetDR2();
SCRIPT_EXPORT bool SetDR2(duint value);
SCRIPT_EXPORT duint GetDR3();
SCRIPT_EXPORT bool SetDR3(duint value);
SCRIPT_EXPORT duint GetDR6();
SCRIPT_EXPORT bool SetDR6(duint value);
SCRIPT_EXPORT duint GetDR7();
SCRIPT_EXPORT bool SetDR7(duint value);
SCRIPT_EXPORT unsigned int GetEAX();
SCRIPT_EXPORT bool SetEAX(unsigned int value);
SCRIPT_EXPORT unsigned short GetAX();
SCRIPT_EXPORT bool SetAX(unsigned short value);
SCRIPT_EXPORT unsigned char GetAH();
SCRIPT_EXPORT bool SetAH(unsigned char value);
SCRIPT_EXPORT unsigned char GetAL();
SCRIPT_EXPORT bool SetAL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEBX();
SCRIPT_EXPORT bool SetEBX(unsigned int value);
SCRIPT_EXPORT unsigned short GetBX();
SCRIPT_EXPORT bool SetBX(unsigned short value);
SCRIPT_EXPORT unsigned char GetBH();
SCRIPT_EXPORT bool SetBH(unsigned char value);
SCRIPT_EXPORT unsigned char GetBL();
SCRIPT_EXPORT bool SetBL(unsigned char value);
SCRIPT_EXPORT unsigned int GetECX();
SCRIPT_EXPORT bool SetECX(unsigned int value);
SCRIPT_EXPORT unsigned short GetCX();
SCRIPT_EXPORT bool SetCX(unsigned short value);
SCRIPT_EXPORT unsigned char GetCH();
SCRIPT_EXPORT bool SetCH(unsigned char value);
SCRIPT_EXPORT unsigned char GetCL();
SCRIPT_EXPORT bool SetCL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEDX();
SCRIPT_EXPORT bool SetEDX(unsigned int value);
SCRIPT_EXPORT unsigned short GetDX();
SCRIPT_EXPORT bool SetDX(unsigned short value);
SCRIPT_EXPORT unsigned char GetDH();
SCRIPT_EXPORT bool SetDH(unsigned char value);
SCRIPT_EXPORT unsigned char GetDL();
SCRIPT_EXPORT bool SetDL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEDI();
SCRIPT_EXPORT bool SetEDI(unsigned int value);
SCRIPT_EXPORT unsigned short GetDI();
SCRIPT_EXPORT bool SetDI(unsigned short value);
SCRIPT_EXPORT unsigned int GetESI();
SCRIPT_EXPORT bool SetESI(unsigned int value);
SCRIPT_EXPORT unsigned short GetSI();
SCRIPT_EXPORT bool SetSI(unsigned short value);
SCRIPT_EXPORT unsigned int GetEBP();
SCRIPT_EXPORT bool SetEBP(unsigned int value);
SCRIPT_EXPORT unsigned short GetBP();
SCRIPT_EXPORT bool SetBP(unsigned short value);
SCRIPT_EXPORT unsigned int GetESP();
SCRIPT_EXPORT bool SetESP(unsigned int value);
SCRIPT_EXPORT unsigned short GetSP();
SCRIPT_EXPORT bool SetSP(unsigned short value);
SCRIPT_EXPORT unsigned int GetEIP();
SCRIPT_EXPORT bool SetEIP(unsigned int value);
SCRIPT_EXPORT duint GetCIP();
SCRIPT_EXPORT bool SetCIP(duint value);
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long GetRAX();
SCRIPT_EXPORT bool SetRAX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRBX();
SCRIPT_EXPORT bool SetRBX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRCX();
SCRIPT_EXPORT bool SetRCX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRDX();
SCRIPT_EXPORT bool SetRDX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRSI();
SCRIPT_EXPORT bool SetRSI(unsigned long long value);
SCRIPT_EXPORT unsigned char GetSIL();
SCRIPT_EXPORT bool SetSIL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRDI();
SCRIPT_EXPORT bool SetRDI(unsigned long long value);
SCRIPT_EXPORT unsigned char GetDIL();
SCRIPT_EXPORT bool SetDIL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRBP();
SCRIPT_EXPORT bool SetRBP(unsigned long long value);
SCRIPT_EXPORT unsigned char GetBPL();
SCRIPT_EXPORT bool SetBPL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRSP();
SCRIPT_EXPORT bool SetRSP(unsigned long long value);
SCRIPT_EXPORT unsigned char GetSPL();
SCRIPT_EXPORT bool SetSPL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRIP();
SCRIPT_EXPORT bool SetRIP(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetR8();
SCRIPT_EXPORT bool SetR8(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR8D();
SCRIPT_EXPORT bool SetR8D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR8W();
SCRIPT_EXPORT bool SetR8W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR8B();
SCRIPT_EXPORT bool SetR8B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR9();
SCRIPT_EXPORT bool SetR9(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR9D();
SCRIPT_EXPORT bool SetR9D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR9W();
SCRIPT_EXPORT bool SetR9W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR9B();
SCRIPT_EXPORT bool SetR9B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR10();
SCRIPT_EXPORT bool SetR10(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR10D();
SCRIPT_EXPORT bool SetR10D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR10W();
SCRIPT_EXPORT bool SetR10W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR10B();
SCRIPT_EXPORT bool SetR10B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR11();
SCRIPT_EXPORT bool SetR11(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR11D();
SCRIPT_EXPORT bool SetR11D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR11W();
SCRIPT_EXPORT bool SetR11W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR11B();
SCRIPT_EXPORT bool SetR11B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR12();
SCRIPT_EXPORT bool SetR12(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR12D();
SCRIPT_EXPORT bool SetR12D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR12W();
SCRIPT_EXPORT bool SetR12W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR12B();
SCRIPT_EXPORT bool SetR12B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR13();
SCRIPT_EXPORT bool SetR13(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR13D();
SCRIPT_EXPORT bool SetR13D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR13W();
SCRIPT_EXPORT bool SetR13W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR13B();
SCRIPT_EXPORT bool SetR13B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR14();
SCRIPT_EXPORT bool SetR14(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR14D();
SCRIPT_EXPORT bool SetR14D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR14W();
SCRIPT_EXPORT bool SetR14W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR14B();
SCRIPT_EXPORT bool SetR14B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR15();
SCRIPT_EXPORT bool SetR15(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR15D();
SCRIPT_EXPORT bool SetR15D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR15W();
SCRIPT_EXPORT bool SetR15W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR15B();
SCRIPT_EXPORT bool SetR15B(unsigned char value);
#endif //_WIN64
};
};
#endif //_SCRIPT_API_H

View File

@ -0,0 +1,42 @@
#include "_scriptapi_debug.h"
SCRIPT_EXPORT void Script::Debug::Wait()
{
_plugin_waituntilpaused();
}
SCRIPT_EXPORT void Script::Debug::Run()
{
DbgCmdExecDirect("run");
Wait();
}
SCRIPT_EXPORT void Script::Debug::Pause()
{
DbgCmdExecDirect("pause");
Wait();
}
SCRIPT_EXPORT void Script::Debug::Stop()
{
DbgCmdExecDirect("StopDebug");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepIn()
{
DbgCmdExecDirect("StepInto");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepOver()
{
DbgCmdExecDirect("StepOver");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepOut()
{
DbgCmdExecDirect("StepOut");
Wait();
}

View File

@ -0,0 +1,20 @@
#ifndef _SCRIPTAPI_DEBUG_H
#define _SCRIPTAPI_DEBUG_H
#include "_scriptapi.h"
namespace Script
{
namespace Debug
{
SCRIPT_EXPORT void Wait();
SCRIPT_EXPORT void Run();
SCRIPT_EXPORT void Pause();
SCRIPT_EXPORT void Stop();
SCRIPT_EXPORT void StepIn();
SCRIPT_EXPORT void StepOver();
SCRIPT_EXPORT void StepOut();
}; //Debug
}; //Script
#endif //_SCRIPTAPI_DEBUG_H

View File

@ -0,0 +1,108 @@
#include "_scriptapi_gui.h"
static inline int windowToBridge(Script::Gui::Window window)
{
switch(window)
{
case Script::Gui::DisassemblyWindow:
return GUI_DISASSEMBLY;
case Script::Gui::DumpWindow:
return GUI_DUMP;
case Script::Gui::StackWindow:
return GUI_STACK;
default:
return GUI_DISASSEMBLY;
}
}
SCRIPT_EXPORT bool Script::Gui::SelectionGet(Script::Gui::Window window, duint* start, duint* end)
{
SELECTIONDATA selection;
if(!GuiSelectionGet(windowToBridge(window), &selection))
return false;
if(start)
*start = selection.start;
if(end)
*end = selection.end;
return true;
}
SCRIPT_EXPORT bool Script::Gui::SelectionSet(Script::Gui::Window window, duint start, duint end)
{
SELECTIONDATA selection;
selection.start = start;
selection.end = end;
return GuiSelectionSet(windowToBridge(window), &selection);
}
SCRIPT_EXPORT duint Script::Gui::SelectionGetStart(Script::Gui::Window window)
{
duint start;
return Gui::SelectionGet(window, &start, nullptr) ? start : 0;
}
SCRIPT_EXPORT duint Script::Gui::SelectionGetEnd(Script::Gui::Window window)
{
duint end;
return Gui::SelectionGet(window, nullptr, &end) ? end : 0;
}
SCRIPT_EXPORT bool Script::Gui::Disassembly::SelectionGet(duint* start, duint* end)
{
return Gui::SelectionGet(DisassemblyWindow, start, end);
}
SCRIPT_EXPORT bool Script::Gui::Disassembly::SelectionSet(duint start, duint end)
{
return Gui::SelectionSet(DisassemblyWindow, start, end);
}
SCRIPT_EXPORT duint Script::Gui::Disassembly::SelectionGetStart()
{
return Gui::SelectionGetStart(DisassemblyWindow);
}
SCRIPT_EXPORT duint Script::Gui::Disassembly::SelectionGetEnd()
{
return Gui::SelectionGetEnd(DisassemblyWindow);
}
SCRIPT_EXPORT bool Script::Gui::Dump::SelectionGet(duint* start, duint* end)
{
return Gui::SelectionGet(DumpWindow, start, end);
}
SCRIPT_EXPORT bool Script::Gui::Dump::SelectionSet(duint start, duint end)
{
return Gui::SelectionSet(DumpWindow, start, end);
}
SCRIPT_EXPORT duint Script::Gui::Dump::SelectionGetStart()
{
return Gui::SelectionGetStart(DumpWindow);
}
SCRIPT_EXPORT duint Script::Gui::Dump::SelectionGetEnd()
{
return Gui::SelectionGetEnd(DumpWindow);
}
SCRIPT_EXPORT bool Script::Gui::Stack::SelectionGet(duint* start, duint* end)
{
return Gui::SelectionGet(StackWindow, start, end);
}
SCRIPT_EXPORT bool Script::Gui::Stack::SelectionSet(duint start, duint end)
{
return Gui::SelectionSet(StackWindow, start, end);
}
SCRIPT_EXPORT duint Script::Gui::Stack::SelectionGetStart()
{
return Gui::SelectionGetStart(StackWindow);
}
SCRIPT_EXPORT duint Script::Gui::Stack::SelectionGetEnd()
{
return Gui::SelectionGetEnd(StackWindow);
}

View File

@ -0,0 +1,48 @@
#ifndef _SCRIPTAPI_GUI_H
#define _SCRIPTAPI_GUI_H
#include "_scriptapi.h"
namespace Script
{
namespace Gui
{
enum Window
{
DisassemblyWindow,
DumpWindow,
StackWindow
};
SCRIPT_EXPORT bool SelectionGet(Window window, duint* start, duint* end);
SCRIPT_EXPORT bool SelectionSet(Window window, duint start, duint end);
SCRIPT_EXPORT duint SelectionGetStart(Window window);
SCRIPT_EXPORT duint SelectionGetEnd(Window window);
namespace Disassembly
{
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
SCRIPT_EXPORT duint SelectionGetStart();
SCRIPT_EXPORT duint SelectionGetEnd();
}; //Disassembly
namespace Dump
{
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
SCRIPT_EXPORT duint SelectionGetStart();
SCRIPT_EXPORT duint SelectionGetEnd();
}; //Dump
namespace Stack
{
SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end);
SCRIPT_EXPORT bool SelectionSet(duint start, duint end);
SCRIPT_EXPORT duint SelectionGetStart();
SCRIPT_EXPORT duint SelectionGetEnd();
}; //Stack
}; //Gui
}; //Script
#endif //_SCRIPTAPI_GUI_H

View File

@ -0,0 +1,74 @@
#include "_scriptapi_memory.h"
#include "memory.h"
SCRIPT_EXPORT bool Script::Memory::Read(duint addr, void* data, duint size, duint* sizeRead)
{
return MemRead((void*)addr, data, size, sizeRead);
}
SCRIPT_EXPORT bool Script::Memory::Write(duint addr, const void* data, duint size, duint* sizeWritten)
{
return MemWrite((void*)addr, (void*)data, size, sizeWritten);
}
SCRIPT_EXPORT unsigned char Script::Memory::ReadByte(duint addr)
{
unsigned char data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteByte(duint addr, unsigned char data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
SCRIPT_EXPORT unsigned short Script::Memory::ReadWord(duint addr)
{
unsigned short data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteWord(duint addr, unsigned short data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
SCRIPT_EXPORT unsigned int Script::Memory::ReadDword(duint addr)
{
unsigned int data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteDword(duint addr, unsigned int data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long Script::Memory::ReadQword(duint addr)
{
unsigned long long data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteQword(duint addr, unsigned long long data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
#endif //_WIN64
SCRIPT_EXPORT duint Script::Memory::ReadPtr(duint addr)
{
duint data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WritePtr(duint addr, duint data)
{
return Write(addr, &data, sizeof(data), nullptr);
}

View File

@ -0,0 +1,28 @@
#ifndef _SCRIPTAPI_MEMORY_H
#define _SCRIPTAPI_MEMORY_H
#include "_scriptapi.h"
namespace Script
{
namespace Memory
{
SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead);
SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten);
SCRIPT_EXPORT unsigned char ReadByte(duint addr);
SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data);
SCRIPT_EXPORT unsigned short ReadWord(duint addr);
SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data);
SCRIPT_EXPORT unsigned int ReadDword(duint addr);
SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data);
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long ReadQword(duint addr);
SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data);
#endif //_WIN64
SCRIPT_EXPORT duint ReadPtr(duint addr);
SCRIPT_EXPORT bool WritePtr(duint addr, duint data);
}; //Memory
}; //Script
#endif //_SCRIPTAPI_MEMORY_H

View File

@ -0,0 +1,131 @@
#include "_scriptapi_module.h"
#include "module.h"
#include "debugger.h"
SCRIPT_EXPORT bool Script::Module::InfoFromAddr(duint addr, Script::Module::ModuleInfo* info)
{
MODINFO* modInfo = ModInfoFromAddr(addr);
if(!info || !modInfo)
return false;
info->base = modInfo->base;
info->size = modInfo->size;
info->entry = modInfo->entry;
info->sectionCount = (int)modInfo->sections.size();
strcpy_s(info->name, modInfo->name);
strcat_s(info->name, modInfo->extension);
strcpy_s(info->path, modInfo->path);
return true;
}
SCRIPT_EXPORT bool Script::Module::InfoFromName(const char* name, Script::Module::ModuleInfo* info)
{
return Module::InfoFromAddr(Module::BaseFromName(name), info);
}
SCRIPT_EXPORT duint Script::Module::BaseFromAddr(duint addr)
{
return ModBaseFromAddr(addr);
}
SCRIPT_EXPORT duint Script::Module::BaseFromName(const char* name)
{
return ModBaseFromName(name);
}
SCRIPT_EXPORT duint Script::Module::SizeFromAddr(duint addr)
{
return ModSizeFromAddr(addr);
}
SCRIPT_EXPORT duint Script::Module::SizeFromName(const char* name)
{
return Module::SizeFromAddr(Module::BaseFromName(name));
}
SCRIPT_EXPORT bool Script::Module::NameFromAddr(duint addr, char* name)
{
return ModNameFromAddr(addr, name, true);
}
SCRIPT_EXPORT bool Script::Module::PathFromAddr(duint addr, char* path)
{
return !!ModPathFromAddr(addr, path, MAX_PATH);
}
SCRIPT_EXPORT bool Script::Module::PathFromName(const char* name, char* path)
{
return Module::PathFromAddr(Module::BaseFromName(name), path);
}
SCRIPT_EXPORT duint Script::Module::EntryFromAddr(duint addr)
{
return ModEntryFromAddr(addr);
}
SCRIPT_EXPORT duint Script::Module::EntryFromName(const char* name)
{
return Module::EntryFromAddr(Module::BaseFromName(name));
}
SCRIPT_EXPORT int Script::Module::SectionCountFromAddr(duint addr)
{
MODINFO* modInfo = ModInfoFromAddr(addr);
return modInfo ? (int)modInfo->sections.size() : 0;
}
SCRIPT_EXPORT int Script::Module::SectionCountFromName(const char* name)
{
return Module::SectionCountFromAddr(Module::BaseFromName(name));
}
SCRIPT_EXPORT bool Script::Module::SectionFromAddr(duint addr, int number, ModuleSectionInfo* section)
{
MODINFO* modInfo = ModInfoFromAddr(addr);
if(!section || !modInfo || number < 0 || number >= (int)modInfo->sections.size())
return false;
const MODSECTIONINFO & secInfo = modInfo->sections.at(number);
section->addr = secInfo.addr;
section->size = secInfo.size;
strcpy_s(section->name, secInfo.name);
return true;
}
SCRIPT_EXPORT bool Script::Module::SectionFromName(const char* name, int number, ModuleSectionInfo* section)
{
return Module::SectionFromAddr(Module::BaseFromName(name), number, section);
}
SCRIPT_EXPORT bool Script::Module::GetMainModuleInfo(ModuleInfo* info)
{
return Module::InfoFromAddr(Module::GetMainModuleBase(), info);
}
SCRIPT_EXPORT duint Script::Module::GetMainModuleBase()
{
return dbggetdebuggedbase();
}
SCRIPT_EXPORT duint Script::Module::GetMainModuleSize()
{
return Module::SizeFromAddr(Module::GetMainModuleBase());
}
SCRIPT_EXPORT duint Script::Module::GetMainModuleEntry()
{
return Module::EntryFromAddr(Module::GetMainModuleBase());
}
SCRIPT_EXPORT int Script::Module::GetMainModuleSectionCount()
{
return Module::SectionCountFromAddr(Module::GetMainModuleBase());
}
SCRIPT_EXPORT bool Script::Module::GetMainModuleName(char* name)
{
return Module::NameFromAddr(Module::GetMainModuleBase(), name);
}
SCRIPT_EXPORT bool Script::Module::GetMainModulePath(char* path)
{
return Module::PathFromAddr(Module::GetMainModuleBase(), path);
}

View File

@ -0,0 +1,52 @@
#ifndef _SCRIPTAPI_MODULE_H
#define _SCRIPTAPI_MODULE_H
#include "_scriptapi.h"
namespace Script
{
namespace Module
{
struct ModuleInfo
{
duint base;
duint size;
duint entry;
int sectionCount;
char name[MAX_MODULE_SIZE];
char path[MAX_PATH];
};
struct ModuleSectionInfo
{
duint addr;
duint size;
char name[MAX_SECTION_SIZE * 5];
};
SCRIPT_EXPORT bool InfoFromAddr(duint addr, ModuleInfo* info);
SCRIPT_EXPORT bool InfoFromName(const char* name, ModuleInfo* info);
SCRIPT_EXPORT duint BaseFromAddr(duint addr);
SCRIPT_EXPORT duint BaseFromName(const char* name);
SCRIPT_EXPORT duint SizeFromAddr(duint addr);
SCRIPT_EXPORT duint SizeFromName(const char* name);
SCRIPT_EXPORT bool NameFromAddr(duint addr, char* name); //name[MAX_MODULE_SIZE]
SCRIPT_EXPORT bool PathFromAddr(duint addr, char* path); //path[MAX_MODULE_PATH_SIZE]
SCRIPT_EXPORT bool PathFromName(const char* name, char* path); //path[MAX_PATH]
SCRIPT_EXPORT duint EntryFromAddr(duint addr);
SCRIPT_EXPORT duint EntryFromName(const char* name);
SCRIPT_EXPORT int SectionCountFromAddr(duint addr);
SCRIPT_EXPORT int SectionCountFromName(const char* name);
SCRIPT_EXPORT bool SectionFromAddr(duint addr, int number, ModuleSectionInfo* section);
SCRIPT_EXPORT bool SectionFromName(const char* name, int number, ModuleSectionInfo* section);
SCRIPT_EXPORT bool GetMainModuleInfo(ModuleInfo* info);
SCRIPT_EXPORT duint GetMainModuleBase();
SCRIPT_EXPORT duint GetMainModuleSize();
SCRIPT_EXPORT duint GetMainModuleEntry();
SCRIPT_EXPORT int GetMainModuleSectionCount();
SCRIPT_EXPORT bool GetMainModuleName(char* name); //name[MAX_MODULE_SIZE]
SCRIPT_EXPORT bool GetMainModulePath(char* path); //path[MAX_PATH]
}; //Module
}; //Script
#endif //_SCRIPTAPI_MODULE_H

View File

@ -0,0 +1,48 @@
#include "_scriptapi_pattern.h"
#include "patternfind.h"
#include "memory.h"
duint Script::Pattern::Find(unsigned char* data, duint datasize, const char* pattern)
{
return patternfind(data, datasize, pattern);
}
duint Script::Pattern::FindMem(duint start, duint size, const char* pattern)
{
Memory<unsigned char*> data(size, "Script::Pattern::FindMem::data");
if(!MemRead((void*)start, data(), size, nullptr))
return -1;
return Pattern::Find(data(), data.size(), pattern) + start;
}
void Script::Pattern::Write(unsigned char* data, duint datasize, const char* pattern)
{
patternwrite(data, datasize, pattern);
}
void Script::Pattern::WriteMem(duint start, duint size, const char* pattern)
{
Memory<unsigned char*> data(size, "Script::Pattern::WriteMem::data");
if(!MemRead((void*)start, data(), data.size(), nullptr))
return;
patternwrite(data(), data.size(), pattern);
MemWrite((void*)start, data(), data.size(), nullptr);
}
bool Script::Pattern::SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern)
{
return patternsnr(data, datasize, searchpattern, replacepattern);
}
bool Script::Pattern::SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern)
{
Memory<unsigned char*> data(size, "Script::Pattern::SearchAndReplaceMem::data");
if(!MemRead((void*)start, data(), size, nullptr))
return false;
duint found = patternfind(data(), data.size(), searchpattern);
if(found == -1)
return false;
patternwrite(data() + found, data.size() - found, replacepattern);
MemWrite((void*)(start + found), data() + found, data.size() - found, nullptr);
return true;
}

View File

@ -0,0 +1,19 @@
#ifndef _SCRIPTAPI_PATTERN_H
#define _SCRIPTAPI_PATTERN_H
#include "_scriptapi.h"
namespace Script
{
namespace Pattern
{
duint Find(unsigned char* data, duint datasize, const char* pattern);
duint FindMem(duint start, duint size, const char* pattern);
void Write(unsigned char* data, duint datasize, const char* pattern);
void WriteMem(duint start, duint size, const char* pattern);
bool SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern);
bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern);
};
};
#endif //_SCRIPTAPI_FIND_H

View File

@ -1,105 +1,6 @@
#include "_scriptapi.h"
#include "memory.h"
#include "_scriptapi_register.h"
#include "value.h"
using namespace Script;
SCRIPT_EXPORT void Script::Debug::Wait()
{
_plugin_waituntilpaused();
}
SCRIPT_EXPORT void Script::Debug::Run()
{
DbgCmdExecDirect("run");
Wait();
}
SCRIPT_EXPORT void Script::Debug::Pause()
{
DbgCmdExecDirect("pause");
Wait();
}
SCRIPT_EXPORT void Script::Debug::Stop()
{
DbgCmdExecDirect("StopDebug");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepIn()
{
DbgCmdExecDirect("StepInto");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepOver()
{
DbgCmdExecDirect("StepOver");
Wait();
}
SCRIPT_EXPORT void Script::Debug::StepOut()
{
DbgCmdExecDirect("StepOut");
Wait();
}
SCRIPT_EXPORT bool Script::Memory::Read(duint addr, void* data, duint size, duint* sizeRead)
{
return MemRead((void*)addr, data, size, sizeRead);
}
SCRIPT_EXPORT bool Script::Memory::Write(duint addr, const void* data, duint size, duint* sizeWritten)
{
return MemWrite((void*)addr, (void*)data, size, sizeWritten);
}
SCRIPT_EXPORT unsigned char Script::Memory::ReadByte(duint addr)
{
unsigned char data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteByte(duint addr, unsigned char data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
SCRIPT_EXPORT unsigned short Script::Memory::ReadWord(duint addr)
{
unsigned short data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteWord(duint addr, unsigned short data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
SCRIPT_EXPORT unsigned int Script::Memory::ReadDword(duint addr)
{
unsigned int data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteDword(duint addr, unsigned int data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long Script::Memory::ReadQword(duint addr)
{
unsigned long long data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WriteQword(duint addr, unsigned long long data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
#endif //_WIN64
SCRIPT_EXPORT duint Script::Memory::ReadPtr(duint addr)
{
duint data;
Read(addr, &data, sizeof(data), nullptr);
return data;
}
SCRIPT_EXPORT bool Script::Memory::WritePtr(duint addr, duint data)
{
return Write(addr, &data, sizeof(data), nullptr);
}
static const char* regTable[] =
{
"DR0",
@ -189,623 +90,778 @@ SCRIPT_EXPORT duint Script::Register::Get(Script::Register::RegisterEnum reg)
valfromstring(regTable[reg], &value);
return value;
}
SCRIPT_EXPORT bool Script::Register::Set(Script::Register::RegisterEnum reg, duint value)
{
return setregister(regTable[reg], value);
}
SCRIPT_EXPORT duint Script::Register::GetDR0()
{
return Get(DR0);
}
SCRIPT_EXPORT bool Script::Register::SetDR0(duint value)
{
return Set(DR0, value);
}
SCRIPT_EXPORT duint Script::Register::GetDR1()
{
return Get(DR1);
}
SCRIPT_EXPORT bool Script::Register::SetDR1(duint value)
{
return Set(DR1, value);
}
SCRIPT_EXPORT duint Script::Register::GetDR2()
{
return Get(DR2);
}
SCRIPT_EXPORT bool Script::Register::SetDR2(duint value)
{
return Set(DR2, value);
}
SCRIPT_EXPORT duint Script::Register::GetDR3()
{
return Get(DR3);
}
SCRIPT_EXPORT bool Script::Register::SetDR3(duint value)
{
return Set(DR3, value);
}
SCRIPT_EXPORT duint Script::Register::GetDR6()
{
return Get(DR6);
}
SCRIPT_EXPORT bool Script::Register::SetDR6(duint value)
{
return Set(DR6, value);
}
SCRIPT_EXPORT duint Script::Register::GetDR7()
{
return Get(DR7);
}
SCRIPT_EXPORT bool Script::Register::SetDR7(duint value)
{
return Set(DR7, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEAX()
{
return (unsigned int)Get(EAX);
}
SCRIPT_EXPORT bool Script::Register::SetEAX(unsigned int value)
{
return Set(EAX, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetAX()
{
return (unsigned short)Get(AX);
}
SCRIPT_EXPORT bool Script::Register::SetAX(unsigned short value)
{
return Set(AX, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetAH()
{
return (unsigned char)Get(AH);
}
SCRIPT_EXPORT bool Script::Register::SetAH(unsigned char value)
{
return Set(AH, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetAL()
{
return (unsigned char)Get(AL);
}
SCRIPT_EXPORT bool Script::Register::SetAL(unsigned char value)
{
return Set(AL, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEBX()
{
return (unsigned int)Get(EBX);
}
SCRIPT_EXPORT bool Script::Register::SetEBX(unsigned int value)
{
return Set(EBX, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetBX()
{
return (unsigned short)Get(BX);
}
SCRIPT_EXPORT bool Script::Register::SetBX(unsigned short value)
{
return Set(BX, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetBH()
{
return (unsigned char)Get(BH);
}
SCRIPT_EXPORT bool Script::Register::SetBH(unsigned char value)
{
return Set(BH, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetBL()
{
return (unsigned char)Get(BL);
}
SCRIPT_EXPORT bool Script::Register::SetBL(unsigned char value)
{
return Set(BL, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetECX()
{
return (unsigned int)Get(ECX);
}
SCRIPT_EXPORT bool Script::Register::SetECX(unsigned int value)
{
return Set(ECX, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetCX()
{
return (unsigned short)Get(CX);
}
SCRIPT_EXPORT bool Script::Register::SetCX(unsigned short value)
{
return Set(CX, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetCH()
{
return (unsigned char)Get(CH);
}
SCRIPT_EXPORT bool Script::Register::SetCH(unsigned char value)
{
return Set(CH, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetCL()
{
return (unsigned char)Get(CL);
}
SCRIPT_EXPORT bool Script::Register::SetCL(unsigned char value)
{
return Set(CL, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEDX()
{
return (unsigned int)Get(EDX);
}
SCRIPT_EXPORT bool Script::Register::SetEDX(unsigned int value)
{
return Set(EDX, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetDX()
{
return (unsigned short)Get(DX);
}
SCRIPT_EXPORT bool Script::Register::SetDX(unsigned short value)
{
return Set(DX, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetDH()
{
return (unsigned char)Get(DH);
}
SCRIPT_EXPORT bool Script::Register::SetDH(unsigned char value)
{
return Set(DH, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetDL()
{
return (unsigned char)Get(DL);
}
SCRIPT_EXPORT bool Script::Register::SetDL(unsigned char value)
{
return Set(DL, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEDI()
{
return (unsigned int)Get(EDI);
}
SCRIPT_EXPORT bool Script::Register::SetEDI(unsigned int value)
{
return Set(EDI, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetDI()
{
return (unsigned short)Get(DI);
}
SCRIPT_EXPORT bool Script::Register::SetDI(unsigned short value)
{
return Set(DI, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetESI()
{
return (unsigned int)Get(ESI);
}
SCRIPT_EXPORT bool Script::Register::SetESI(unsigned int value)
{
return Set(ESI, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetSI()
{
return (unsigned short)Get(SI);
}
SCRIPT_EXPORT bool Script::Register::SetSI(unsigned short value)
{
return Set(SI, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEBP()
{
return (unsigned int)Get(EBP);
}
SCRIPT_EXPORT bool Script::Register::SetEBP(unsigned int value)
{
return Set(EBP, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetBP()
{
return (unsigned short)Get(BP);
}
SCRIPT_EXPORT bool Script::Register::SetBP(unsigned short value)
{
return Set(BP, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetESP()
{
return (unsigned int)Get(ESP);
}
SCRIPT_EXPORT bool Script::Register::SetESP(unsigned int value)
{
return Set(ESP, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetSP()
{
return (unsigned short)Get(SP);
}
SCRIPT_EXPORT bool Script::Register::SetSP(unsigned short value)
{
return Set(SP, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetEIP()
{
return (unsigned int)Get(EIP);
}
SCRIPT_EXPORT bool Script::Register::SetEIP(unsigned int value)
{
return Set(EIP, value);
}
SCRIPT_EXPORT duint Script::Register::GetCIP()
{
return Get(CIP);
}
SCRIPT_EXPORT bool Script::Register::SetCIP(duint value)
{
return Set(CIP, value);
}
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long Script::Register::GetRAX()
{
return (unsigned long long)Get(RAX);
}
SCRIPT_EXPORT bool Script::Register::SetRAX(unsigned long long value)
{
return Set(RAX, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRBX()
{
return (unsigned long long)Get(RBX);
}
SCRIPT_EXPORT bool Script::Register::SetRBX(unsigned long long value)
{
return Set(RBX, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRCX()
{
return (unsigned long long)Get(RCX);
}
SCRIPT_EXPORT bool Script::Register::SetRCX(unsigned long long value)
{
return Set(RCX, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRDX()
{
return (unsigned long long)Get(RDX);
}
SCRIPT_EXPORT bool Script::Register::SetRDX(unsigned long long value)
{
return Set(RDX, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRSI()
{
return (unsigned long long)Get(RSI);
}
SCRIPT_EXPORT bool Script::Register::SetRSI(unsigned long long value)
{
return Set(RSI, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetSIL()
{
return (unsigned char)Get(SIL);
}
SCRIPT_EXPORT bool Script::Register::SetSIL(unsigned char value)
{
return Set(SIL, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRDI()
{
return (unsigned long long)Get(RDI);
}
SCRIPT_EXPORT bool Script::Register::SetRDI(unsigned long long value)
{
return Set(RDI, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetDIL()
{
return (unsigned char)Get(DIL);
}
SCRIPT_EXPORT bool Script::Register::SetDIL(unsigned char value)
{
return Set(DIL, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRBP()
{
return (unsigned long long)Get(RBP);
}
SCRIPT_EXPORT bool Script::Register::SetRBP(unsigned long long value)
{
return Set(RBP, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetBPL()
{
return (unsigned char)Get(BPL);
}
SCRIPT_EXPORT bool Script::Register::SetBPL(unsigned char value)
{
return Set(BPL, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRSP()
{
return (unsigned long long)Get(RSP);
}
SCRIPT_EXPORT bool Script::Register::SetRSP(unsigned long long value)
{
return Set(RSP, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetSPL()
{
return (unsigned char)Get(SPL);
}
SCRIPT_EXPORT bool Script::Register::SetSPL(unsigned char value)
{
return Set(SPL, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetRIP()
{
return (unsigned long long)Get(RIP);
}
SCRIPT_EXPORT bool Script::Register::SetRIP(unsigned long long value)
{
return Set(RIP, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR8()
{
return (unsigned long long)Get(R8);
}
SCRIPT_EXPORT bool Script::Register::SetR8(unsigned long long value)
{
return Set(R8, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR8D()
{
return (unsigned int)Get(R8D);
}
SCRIPT_EXPORT bool Script::Register::SetR8D(unsigned int value)
{
return Set(R8D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR8W()
{
return (unsigned short)Get(R8W);
}
SCRIPT_EXPORT bool Script::Register::SetR8W(unsigned short value)
{
return Set(R8W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR8B()
{
return (unsigned char)Get(R8B);
}
SCRIPT_EXPORT bool Script::Register::SetR8B(unsigned char value)
{
return Set(R8B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR9()
{
return (unsigned long long)Get(R9);
}
SCRIPT_EXPORT bool Script::Register::SetR9(unsigned long long value)
{
return Set(R9, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR9D()
{
return (unsigned int)Get(R9D);
}
SCRIPT_EXPORT bool Script::Register::SetR9D(unsigned int value)
{
return Set(R9D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR9W()
{
return (unsigned short)Get(R9W);
}
SCRIPT_EXPORT bool Script::Register::SetR9W(unsigned short value)
{
return Set(R9W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR9B()
{
return (unsigned char)Get(R9B);
}
SCRIPT_EXPORT bool Script::Register::SetR9B(unsigned char value)
{
return Set(R9B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR10()
{
return (unsigned long long)Get(R10);
}
SCRIPT_EXPORT bool Script::Register::SetR10(unsigned long long value)
{
return Set(R10, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR10D()
{
return (unsigned int)Get(R10D);
}
SCRIPT_EXPORT bool Script::Register::SetR10D(unsigned int value)
{
return Set(R10D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR10W()
{
return (unsigned short)Get(R10W);
}
SCRIPT_EXPORT bool Script::Register::SetR10W(unsigned short value)
{
return Set(R10W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR10B()
{
return (unsigned char)Get(R10B);
}
SCRIPT_EXPORT bool Script::Register::SetR10B(unsigned char value)
{
return Set(R10B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR11()
{
return (unsigned long long)Get(R11);
}
SCRIPT_EXPORT bool Script::Register::SetR11(unsigned long long value)
{
return Set(R11, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR11D()
{
return (unsigned int)Get(R11D);
}
SCRIPT_EXPORT bool Script::Register::SetR11D(unsigned int value)
{
return Set(R11D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR11W()
{
return (unsigned short)Get(R11W);
}
SCRIPT_EXPORT bool Script::Register::SetR11W(unsigned short value)
{
return Set(R11W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR11B()
{
return (unsigned char)Get(R11B);
}
SCRIPT_EXPORT bool Script::Register::SetR11B(unsigned char value)
{
return Set(R11B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR12()
{
return (unsigned long long)Get(R12);
}
SCRIPT_EXPORT bool Script::Register::SetR12(unsigned long long value)
{
return Set(R12, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR12D()
{
return (unsigned int)Get(R12D);
}
SCRIPT_EXPORT bool Script::Register::SetR12D(unsigned int value)
{
return Set(R12D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR12W()
{
return (unsigned short)Get(R12W);
}
SCRIPT_EXPORT bool Script::Register::SetR12W(unsigned short value)
{
return Set(R12W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR12B()
{
return (unsigned char)Get(R12B);
}
SCRIPT_EXPORT bool Script::Register::SetR12B(unsigned char value)
{
return Set(R12B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR13()
{
return (unsigned long long)Get(R13);
}
SCRIPT_EXPORT bool Script::Register::SetR13(unsigned long long value)
{
return Set(R13, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR13D()
{
return (unsigned int)Get(R13D);
}
SCRIPT_EXPORT bool Script::Register::SetR13D(unsigned int value)
{
return Set(R13D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR13W()
{
return (unsigned short)Get(R13W);
}
SCRIPT_EXPORT bool Script::Register::SetR13W(unsigned short value)
{
return Set(R13W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR13B()
{
return (unsigned char)Get(R13B);
}
SCRIPT_EXPORT bool Script::Register::SetR13B(unsigned char value)
{
return Set(R13B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR14()
{
return (unsigned long long)Get(R14);
}
SCRIPT_EXPORT bool Script::Register::SetR14(unsigned long long value)
{
return Set(R14, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR14D()
{
return (unsigned int)Get(R14D);
}
SCRIPT_EXPORT bool Script::Register::SetR14D(unsigned int value)
{
return Set(R14D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR14W()
{
return (unsigned short)Get(R14W);
}
SCRIPT_EXPORT bool Script::Register::SetR14W(unsigned short value)
{
return Set(R14W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR14B()
{
return (unsigned char)Get(R14B);
}
SCRIPT_EXPORT bool Script::Register::SetR14B(unsigned char value)
{
return Set(R14B, value);
}
SCRIPT_EXPORT unsigned long long Script::Register::GetR15()
{
return (unsigned long long)Get(R15);
}
SCRIPT_EXPORT bool Script::Register::SetR15(unsigned long long value)
{
return Set(R15, value);
}
SCRIPT_EXPORT unsigned int Script::Register::GetR15D()
{
return (unsigned int)Get(R15D);
}
SCRIPT_EXPORT bool Script::Register::SetR15D(unsigned int value)
{
return Set(R15D, value);
}
SCRIPT_EXPORT unsigned short Script::Register::GetR15W()
{
return (unsigned short)Get(R15W);
}
SCRIPT_EXPORT bool Script::Register::SetR15W(unsigned short value)
{
return Set(R15W, value);
}
SCRIPT_EXPORT unsigned char Script::Register::GetR15B()
{
return (unsigned char)Get(R15B);
}
SCRIPT_EXPORT bool Script::Register::SetR15B(unsigned char value)
{
return Set(R15B, value);

View File

@ -0,0 +1,255 @@
#ifndef _SCRIPTAPI_REGISTER_H
#define _SCRIPTAPI_REGISTER_H
#include "_scriptapi.h"
namespace Script
{
namespace Register
{
enum RegisterEnum
{
DR0,
DR1,
DR2,
DR3,
DR6,
DR7,
EAX,
AX,
AH,
AL,
EBX,
BX,
BH,
BL,
ECX,
CX,
CH,
CL,
EDX,
DX,
DH,
DL,
EDI,
DI,
ESI,
SI,
EBP,
BP,
ESP,
SP,
EIP,
CIP,
#ifdef _WIN64
RAX,
RBX,
RCX,
RDX,
RSI,
SIL,
RDI,
DIL,
RBP,
BPL,
RSP,
SPL,
RIP,
R8,
R8D,
R8W,
R8B,
R9,
R9D,
R9W,
R9B,
R10,
R10D,
R10W,
R10B,
R11,
R11D,
R11W,
R11B,
R12,
R12D,
R12W,
R12B,
R13,
R13D,
R13W,
R13B,
R14,
R14D,
R14W,
R14B,
R15,
R15D,
R15W,
R15B
#endif //_WIN64
}; //RegisterEnum
SCRIPT_EXPORT duint Get(RegisterEnum reg);
SCRIPT_EXPORT bool Set(RegisterEnum reg, duint value);
SCRIPT_EXPORT duint GetDR0();
SCRIPT_EXPORT bool SetDR0(duint value);
SCRIPT_EXPORT duint GetDR1();
SCRIPT_EXPORT bool SetDR1(duint value);
SCRIPT_EXPORT duint GetDR2();
SCRIPT_EXPORT bool SetDR2(duint value);
SCRIPT_EXPORT duint GetDR3();
SCRIPT_EXPORT bool SetDR3(duint value);
SCRIPT_EXPORT duint GetDR6();
SCRIPT_EXPORT bool SetDR6(duint value);
SCRIPT_EXPORT duint GetDR7();
SCRIPT_EXPORT bool SetDR7(duint value);
SCRIPT_EXPORT unsigned int GetEAX();
SCRIPT_EXPORT bool SetEAX(unsigned int value);
SCRIPT_EXPORT unsigned short GetAX();
SCRIPT_EXPORT bool SetAX(unsigned short value);
SCRIPT_EXPORT unsigned char GetAH();
SCRIPT_EXPORT bool SetAH(unsigned char value);
SCRIPT_EXPORT unsigned char GetAL();
SCRIPT_EXPORT bool SetAL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEBX();
SCRIPT_EXPORT bool SetEBX(unsigned int value);
SCRIPT_EXPORT unsigned short GetBX();
SCRIPT_EXPORT bool SetBX(unsigned short value);
SCRIPT_EXPORT unsigned char GetBH();
SCRIPT_EXPORT bool SetBH(unsigned char value);
SCRIPT_EXPORT unsigned char GetBL();
SCRIPT_EXPORT bool SetBL(unsigned char value);
SCRIPT_EXPORT unsigned int GetECX();
SCRIPT_EXPORT bool SetECX(unsigned int value);
SCRIPT_EXPORT unsigned short GetCX();
SCRIPT_EXPORT bool SetCX(unsigned short value);
SCRIPT_EXPORT unsigned char GetCH();
SCRIPT_EXPORT bool SetCH(unsigned char value);
SCRIPT_EXPORT unsigned char GetCL();
SCRIPT_EXPORT bool SetCL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEDX();
SCRIPT_EXPORT bool SetEDX(unsigned int value);
SCRIPT_EXPORT unsigned short GetDX();
SCRIPT_EXPORT bool SetDX(unsigned short value);
SCRIPT_EXPORT unsigned char GetDH();
SCRIPT_EXPORT bool SetDH(unsigned char value);
SCRIPT_EXPORT unsigned char GetDL();
SCRIPT_EXPORT bool SetDL(unsigned char value);
SCRIPT_EXPORT unsigned int GetEDI();
SCRIPT_EXPORT bool SetEDI(unsigned int value);
SCRIPT_EXPORT unsigned short GetDI();
SCRIPT_EXPORT bool SetDI(unsigned short value);
SCRIPT_EXPORT unsigned int GetESI();
SCRIPT_EXPORT bool SetESI(unsigned int value);
SCRIPT_EXPORT unsigned short GetSI();
SCRIPT_EXPORT bool SetSI(unsigned short value);
SCRIPT_EXPORT unsigned int GetEBP();
SCRIPT_EXPORT bool SetEBP(unsigned int value);
SCRIPT_EXPORT unsigned short GetBP();
SCRIPT_EXPORT bool SetBP(unsigned short value);
SCRIPT_EXPORT unsigned int GetESP();
SCRIPT_EXPORT bool SetESP(unsigned int value);
SCRIPT_EXPORT unsigned short GetSP();
SCRIPT_EXPORT bool SetSP(unsigned short value);
SCRIPT_EXPORT unsigned int GetEIP();
SCRIPT_EXPORT bool SetEIP(unsigned int value);
SCRIPT_EXPORT duint GetCIP();
SCRIPT_EXPORT bool SetCIP(duint value);
#ifdef _WIN64
SCRIPT_EXPORT unsigned long long GetRAX();
SCRIPT_EXPORT bool SetRAX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRBX();
SCRIPT_EXPORT bool SetRBX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRCX();
SCRIPT_EXPORT bool SetRCX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRDX();
SCRIPT_EXPORT bool SetRDX(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetRSI();
SCRIPT_EXPORT bool SetRSI(unsigned long long value);
SCRIPT_EXPORT unsigned char GetSIL();
SCRIPT_EXPORT bool SetSIL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRDI();
SCRIPT_EXPORT bool SetRDI(unsigned long long value);
SCRIPT_EXPORT unsigned char GetDIL();
SCRIPT_EXPORT bool SetDIL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRBP();
SCRIPT_EXPORT bool SetRBP(unsigned long long value);
SCRIPT_EXPORT unsigned char GetBPL();
SCRIPT_EXPORT bool SetBPL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRSP();
SCRIPT_EXPORT bool SetRSP(unsigned long long value);
SCRIPT_EXPORT unsigned char GetSPL();
SCRIPT_EXPORT bool SetSPL(unsigned char value);
SCRIPT_EXPORT unsigned long long GetRIP();
SCRIPT_EXPORT bool SetRIP(unsigned long long value);
SCRIPT_EXPORT unsigned long long GetR8();
SCRIPT_EXPORT bool SetR8(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR8D();
SCRIPT_EXPORT bool SetR8D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR8W();
SCRIPT_EXPORT bool SetR8W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR8B();
SCRIPT_EXPORT bool SetR8B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR9();
SCRIPT_EXPORT bool SetR9(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR9D();
SCRIPT_EXPORT bool SetR9D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR9W();
SCRIPT_EXPORT bool SetR9W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR9B();
SCRIPT_EXPORT bool SetR9B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR10();
SCRIPT_EXPORT bool SetR10(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR10D();
SCRIPT_EXPORT bool SetR10D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR10W();
SCRIPT_EXPORT bool SetR10W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR10B();
SCRIPT_EXPORT bool SetR10B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR11();
SCRIPT_EXPORT bool SetR11(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR11D();
SCRIPT_EXPORT bool SetR11D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR11W();
SCRIPT_EXPORT bool SetR11W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR11B();
SCRIPT_EXPORT bool SetR11B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR12();
SCRIPT_EXPORT bool SetR12(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR12D();
SCRIPT_EXPORT bool SetR12D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR12W();
SCRIPT_EXPORT bool SetR12W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR12B();
SCRIPT_EXPORT bool SetR12B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR13();
SCRIPT_EXPORT bool SetR13(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR13D();
SCRIPT_EXPORT bool SetR13D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR13W();
SCRIPT_EXPORT bool SetR13W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR13B();
SCRIPT_EXPORT bool SetR13B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR14();
SCRIPT_EXPORT bool SetR14(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR14D();
SCRIPT_EXPORT bool SetR14D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR14W();
SCRIPT_EXPORT bool SetR14W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR14B();
SCRIPT_EXPORT bool SetR14B(unsigned char value);
SCRIPT_EXPORT unsigned long long GetR15();
SCRIPT_EXPORT bool SetR15(unsigned long long value);
SCRIPT_EXPORT unsigned int GetR15D();
SCRIPT_EXPORT bool SetR15D(unsigned int value);
SCRIPT_EXPORT unsigned short GetR15W();
SCRIPT_EXPORT bool SetR15W(unsigned short value);
SCRIPT_EXPORT unsigned char GetR15B();
SCRIPT_EXPORT bool SetR15B(unsigned char value);
#endif //_WIN64
}; //Register
}; //Script
#endif //_SCRIPTAPI_REGISTER_H

View File

@ -51,7 +51,6 @@
<ClCompile Include="patternfind.cpp" />
<ClCompile Include="plugin_loader.cpp" />
<ClCompile Include="reference.cpp" />
<ClCompile Include="_scriptapi.cpp" />
<ClCompile Include="simplescript.cpp" />
<ClCompile Include="stackinfo.cpp" />
<ClCompile Include="stringformat.cpp" />
@ -66,6 +65,12 @@
<ClCompile Include="_dbgfunctions.cpp" />
<ClCompile Include="_global.cpp" />
<ClCompile Include="_plugins.cpp" />
<ClCompile Include="_scriptapi_debug.cpp" />
<ClCompile Include="_scriptapi_gui.cpp" />
<ClCompile Include="_scriptapi_pattern.cpp" />
<ClCompile Include="_scriptapi_memory.cpp" />
<ClCompile Include="_scriptapi_module.cpp" />
<ClCompile Include="_scriptapi_register.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="addrinfo.h" />
@ -168,6 +173,12 @@
<ClInclude Include="_global.h" />
<ClInclude Include="_plugins.h" />
<ClInclude Include="_plugin_types.h" />
<ClInclude Include="_scriptapi_debug.h" />
<ClInclude Include="_scriptapi_gui.h" />
<ClInclude Include="_scriptapi_pattern.h" />
<ClInclude Include="_scriptapi_memory.h" />
<ClInclude Include="_scriptapi_module.h" />
<ClInclude Include="_scriptapi_register.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E6548308-401E-3A8A-5819-905DB90522A6}</ProjectGuid>

View File

@ -79,6 +79,12 @@
<Filter Include="Source Files\Analysis">
<UniqueIdentifier>{a2a92bf5-753d-4a01-be80-66cc61434fbf}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Interfaces/Exports\_scriptapi">
<UniqueIdentifier>{4d81f6f8-bb8a-457b-b372-932857e99035}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Interfaces/Exports\_scriptapi">
<UniqueIdentifier>{eb7d9981-6079-4b4b-af18-e44e63451d10}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
@ -219,8 +225,23 @@
<ClCompile Include="expressionparser.cpp">
<Filter>Source Files\Core</Filter>
</ClCompile>
<ClCompile Include="_scriptapi.cpp">
<Filter>Source Files\Interfaces/Exports</Filter>
<ClCompile Include="_scriptapi_module.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
<ClCompile Include="_scriptapi_register.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
<ClCompile Include="_scriptapi_memory.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
<ClCompile Include="_scriptapi_debug.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
<ClCompile Include="_scriptapi_pattern.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
<ClCompile Include="_scriptapi_gui.cpp">
<Filter>Source Files\Interfaces/Exports\_scriptapi</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
@ -521,8 +542,26 @@
<ClInclude Include="expressionparser.h">
<Filter>Header Files\Core</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_debug.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_memory.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_module.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_register.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi.h">
<Filter>Header Files\Interfaces/Exports</Filter>
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_pattern.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
<ClInclude Include="_scriptapi_gui.h">
<Filter>Header Files\Interfaces/Exports\_scriptapi</Filter>
</ClInclude>
</ItemGroup>
</Project>