PROJECT: updated readme
BRIDGE: added DbgDisasmAt function
This commit is contained in:
parent
93e5e0489e
commit
f92a4091f5
|
@ -56,6 +56,8 @@ without having to update the code of the other parts.
|
|||
- easily follow calls/jumps/ret (press ENTER in when selecting)
|
||||
- (buggy) dynamic commenting
|
||||
- scripting support (using the debugger commands)!
|
||||
- simple dump
|
||||
- symbols (+ exports) view with search
|
||||
|
||||
>Known bugs:
|
||||
- memory breakpoints sometimes fail (TitanEngine bug)
|
||||
|
|
|
@ -544,6 +544,11 @@ BRIDGE_IMPEXP duint DbgModBaseFromName(const char* name)
|
|||
return _dbg_sendmessage(DBG_MODBASE_FROM_NAME, (void*)name, 0);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgDisasmAt(duint addr, DISASM_INSTR* instr)
|
||||
{
|
||||
_dbg_sendmessage(DBG_DISASM_AT, (void*)addr, instr);
|
||||
}
|
||||
|
||||
//GUI
|
||||
BRIDGE_IMPEXP void GuiDisasmAt(duint addr, duint cip)
|
||||
{
|
||||
|
|
|
@ -113,7 +113,8 @@ enum DBGMSG
|
|||
DBG_SCRIPT_SETIP, // param1=int line, param2=unused
|
||||
DBG_SYMBOL_ENUM, // param1=SYMBOLCBINFO* cbInfo, param2=unused
|
||||
DBG_ASSEMBLE_AT, // param1=duint addr, param2=const char* instruction
|
||||
DBG_MODBASE_FROM_NAME // param1=const char* modname, param2=unused
|
||||
DBG_MODBASE_FROM_NAME, // param1=const char* modname, param2=unused
|
||||
DBG_DISASM_AT // param1=duint addr, param2=DISASM_INSTR* instr
|
||||
};
|
||||
|
||||
enum SCRIPTLINETYPE
|
||||
|
@ -125,6 +126,26 @@ enum SCRIPTLINETYPE
|
|||
lineempty,
|
||||
};
|
||||
|
||||
enum DISASM_INSTRTYPE
|
||||
{
|
||||
instr_normal,
|
||||
instr_branch,
|
||||
instr_stack
|
||||
};
|
||||
|
||||
enum DISASM_ARGTYPE
|
||||
{
|
||||
arg_normal,
|
||||
arg_memory
|
||||
};
|
||||
|
||||
enum STRING_TYPE
|
||||
{
|
||||
str_none,
|
||||
str_ascii,
|
||||
str_unicode
|
||||
};
|
||||
|
||||
//Debugger typedefs
|
||||
struct SYMBOLINFO;
|
||||
|
||||
|
@ -247,6 +268,26 @@ struct REGDUMP
|
|||
duint dr7;
|
||||
};
|
||||
|
||||
struct DISASM_ARG
|
||||
{
|
||||
DISASM_ARGTYPE type;
|
||||
SEGMENTREG segment;
|
||||
char mnemonic[64];
|
||||
duint constant;
|
||||
duint value;
|
||||
duint memvalue;
|
||||
};
|
||||
|
||||
|
||||
struct DISASM_INSTR
|
||||
{
|
||||
char instruction[64];
|
||||
DISASM_INSTRTYPE type;
|
||||
int argcount;
|
||||
int instr_size;
|
||||
DISASM_ARG arg[3];
|
||||
};
|
||||
|
||||
//Debugger functions
|
||||
BRIDGE_IMPEXP const char* DbgInit();
|
||||
BRIDGE_IMPEXP void DbgMemRead(duint va, unsigned char* dest, duint size);
|
||||
|
@ -276,7 +317,6 @@ BRIDGE_IMPEXP LOOPTYPE DbgGetLoopTypeAt(duint addr, int depth);
|
|||
BRIDGE_IMPEXP duint DbgGetBranchDestination(duint addr);
|
||||
BRIDGE_IMPEXP bool DbgFunctionOverlaps(duint start, duint end);
|
||||
BRIDGE_IMPEXP bool DbgFunctionGet(duint addr, duint* start, duint* end);
|
||||
|
||||
BRIDGE_IMPEXP void DbgScriptLoad(const char* filename);
|
||||
BRIDGE_IMPEXP void DbgScriptUnload();
|
||||
BRIDGE_IMPEXP void DbgScriptRun(int destline);
|
||||
|
@ -287,10 +327,10 @@ BRIDGE_IMPEXP bool DbgScriptCmdExec(const char* command);
|
|||
BRIDGE_IMPEXP void DbgScriptAbort();
|
||||
BRIDGE_IMPEXP SCRIPTLINETYPE DbgScriptGetLineType(int line);
|
||||
BRIDGE_IMPEXP void DbgScriptSetIp(int line);
|
||||
|
||||
BRIDGE_IMPEXP void DbgSymbolEnum(duint base, CBSYMBOLENUM cbSymbolEnum, void* user);
|
||||
BRIDGE_IMPEXP bool DbgAssembleAt(duint addr, const char* instruction);
|
||||
BRIDGE_IMPEXP duint DbgModBaseFromName(const char* name);
|
||||
BRIDGE_IMPEXP void DbgDisasmAt(duint addr, DISASM_INSTR* instr);
|
||||
|
||||
//Gui enums
|
||||
enum GUIMSG
|
||||
|
@ -354,7 +394,6 @@ BRIDGE_IMPEXP void GuiUpdateWindowTitle(const char* filename);
|
|||
BRIDGE_IMPEXP void GuiUpdateCPUTitle(const char* modname);
|
||||
BRIDGE_IMPEXP HWND GuiGetWindowHandle();
|
||||
BRIDGE_IMPEXP void GuiDumpAt(duint va);
|
||||
|
||||
BRIDGE_IMPEXP void GuiScriptAdd(int count, const char** lines);
|
||||
BRIDGE_IMPEXP void GuiScriptClear();
|
||||
BRIDGE_IMPEXP void GuiScriptSetIp(int line);
|
||||
|
@ -363,12 +402,10 @@ BRIDGE_IMPEXP void GuiScriptSetTitle(const char* title);
|
|||
BRIDGE_IMPEXP void GuiScriptSetInfoLine(int line, const char* info);
|
||||
BRIDGE_IMPEXP void GuiScriptMessage(const char* message);
|
||||
BRIDGE_IMPEXP int GuiScriptMsgyn(const char* message);
|
||||
|
||||
BRIDGE_IMPEXP void GuiSymbolLogAdd(const char* message);
|
||||
BRIDGE_IMPEXP void GuiSymbolLogClear();
|
||||
BRIDGE_IMPEXP void GuiSymbolSetProgress(int percent);
|
||||
BRIDGE_IMPEXP void GuiSymbolUpdateModuleList(int count, SYMBOLMODULEINFO* modules);
|
||||
|
||||
BRIDGE_IMPEXP void GuiReferenceAddColumn(int width, const char* title);
|
||||
BRIDGE_IMPEXP void GuiReferenceSetRowCount(int count);
|
||||
BRIDGE_IMPEXP int GuiReferenceGetRowCount();
|
||||
|
|
|
@ -605,6 +605,12 @@ extern "C" DLL_EXPORT uint _dbg_sendmessage(DBGMSG type, void* param1, void* par
|
|||
return modbasefromname((const char*)param1);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_DISASM_AT:
|
||||
{
|
||||
disasmget((uint)param1, (DISASM_INSTR*)param2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1285,7 +1285,6 @@ CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[])
|
|||
uint size=UE_HARDWARE_SIZE_1;
|
||||
if(argget(*argv, arg3, 2, true))
|
||||
{
|
||||
|
||||
if(!valfromstring(arg3, &size))
|
||||
return STATUS_ERROR;
|
||||
switch(size)
|
||||
|
|
|
@ -3,48 +3,6 @@
|
|||
|
||||
#include "_global.h"
|
||||
|
||||
//enums
|
||||
enum DISASM_INSTRTYPE
|
||||
{
|
||||
instr_normal,
|
||||
instr_branch,
|
||||
instr_stack
|
||||
};
|
||||
|
||||
enum DISASM_ARGTYPE
|
||||
{
|
||||
arg_normal,
|
||||
arg_memory
|
||||
};
|
||||
|
||||
enum STRING_TYPE
|
||||
{
|
||||
str_none,
|
||||
str_ascii,
|
||||
str_unicode
|
||||
};
|
||||
|
||||
//structures
|
||||
struct DISASM_ARG
|
||||
{
|
||||
DISASM_ARGTYPE type;
|
||||
SEGMENTREG segment;
|
||||
char mnemonic[64];
|
||||
uint constant;
|
||||
uint value;
|
||||
uint memvalue;
|
||||
};
|
||||
|
||||
|
||||
struct DISASM_INSTR
|
||||
{
|
||||
char instruction[64];
|
||||
DISASM_INSTRTYPE type;
|
||||
int argcount;
|
||||
int instr_size;
|
||||
DISASM_ARG arg[3];
|
||||
};
|
||||
|
||||
//functions
|
||||
const char* disasmtext(uint addr);
|
||||
void disasmprint(uint addr);
|
||||
|
|
Loading…
Reference in New Issue