mirror of
https://github.com/x64dbg/x64dbg.git
synced 2025-02-22 22:11:55 +00:00
DBG: added various API functions
This commit is contained in:
parent
1ddef656f3
commit
5f6a151d32
@ -654,6 +654,54 @@ BRIDGE_IMPEXP bool DbgIsBpDisabled(duint addr)
|
||||
return false;
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP bool DbgSetAutoCommentAt(duint addr, const char* text)
|
||||
{
|
||||
if(_dbg_sendmessage(DBG_SET_AUTO_COMMENT_AT, (void*)addr, (void*)text))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgClearAutoCommentRange(duint start, duint end)
|
||||
{
|
||||
_dbg_sendmessage(DBG_DELETE_AUTO_COMMENT_RANGE, (void*)start, (void*)end);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP bool DbgSetAutoLabelAt(duint addr, const char* text)
|
||||
{
|
||||
if(_dbg_sendmessage(DBG_SET_AUTO_LABEL_AT, (void*)addr, (void*)text))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgClearAutoLabelRange(duint start, duint end)
|
||||
{
|
||||
_dbg_sendmessage(DBG_DELETE_AUTO_LABEL_RANGE, (void*)start, (void*)end);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP bool DbgSetAutoBookmarkAt(duint addr)
|
||||
{
|
||||
if(_dbg_sendmessage(DBG_SET_AUTO_BOOKMARK_AT, (void*)addr, 0))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgClearAutoBookmarkRange(duint start, duint end)
|
||||
{
|
||||
_dbg_sendmessage(DBG_DELETE_AUTO_BOOKMARK_RANGE, (void*)start, (void*)end);
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP bool DbgSetAutoFunctionAt(duint start, duint end)
|
||||
{
|
||||
if(_dbg_sendmessage(DBG_SET_AUTO_FUNCTION_AT, (void*)start, (void*)end))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgClearAutoFunctionRange(duint start, duint end)
|
||||
{
|
||||
_dbg_sendmessage(DBG_DELETE_AUTO_FUNCTION_RANGE, (void*)start, (void*)end);
|
||||
}
|
||||
|
||||
//GUI
|
||||
BRIDGE_IMPEXP void GuiDisasmAt(duint addr, duint cip)
|
||||
{
|
||||
|
@ -145,7 +145,15 @@ enum DBGMSG
|
||||
DBG_LOOP_ADD, // param1=FUNCTION_LOOP_INFO* info, param2=unused
|
||||
DBG_LOOP_DEL, // param1=FUNCTION_LOOP_INFO* info, param2=unused
|
||||
DBG_IS_RUN_LOCKED, // param1=unused, param2=unused
|
||||
DBG_IS_BP_DISABLED // param1=duint addr, param2=unused
|
||||
DBG_IS_BP_DISABLED, // param1=duint addr, param2=unused
|
||||
DBG_SET_AUTO_COMMENT_AT, // param1=duint addr, param2=const char* text
|
||||
DBG_DELETE_AUTO_COMMENT_RANGE, // param1=duint start, param2=duint end
|
||||
DBG_SET_AUTO_LABEL_AT, // param1=duint addr, param2=const char* text
|
||||
DBG_DELETE_AUTO_LABEL_RANGE, // param1=duint start, param2=duint end
|
||||
DBG_SET_AUTO_BOOKMARK_AT, // param1=duint addr, param2=const char* text
|
||||
DBG_DELETE_AUTO_BOOKMARK_RANGE, // param1=duint start, param2=duint end
|
||||
DBG_SET_AUTO_FUNCTION_AT, // param1=duint addr, param2=const char* text
|
||||
DBG_DELETE_AUTO_FUNCTION_RANGE, // param1=duint start, param2=duint end
|
||||
};
|
||||
|
||||
enum SCRIPTLINETYPE
|
||||
@ -530,6 +538,14 @@ BRIDGE_IMPEXP bool DbgLoopAdd(duint start, duint end);
|
||||
BRIDGE_IMPEXP bool DbgLoopDel(int depth, duint addr);
|
||||
BRIDGE_IMPEXP bool DbgIsRunLocked();
|
||||
BRIDGE_IMPEXP bool DbgIsBpDisabled(duint addr);
|
||||
BRIDGE_IMPEXP bool DbgSetAutoCommentAt(duint addr, const char* text);
|
||||
BRIDGE_IMPEXP void DbgClearAutoCommentRange(duint start, duint end);
|
||||
BRIDGE_IMPEXP bool DbgSetAutoLabelAt(duint addr, const char* text);
|
||||
BRIDGE_IMPEXP void DbgClearAutoLabelRange(duint start, duint end);
|
||||
BRIDGE_IMPEXP bool DbgSetAutoBookmarkAt(duint addr);
|
||||
BRIDGE_IMPEXP void DbgClearAutoBookmarkRange(duint start, duint end);
|
||||
BRIDGE_IMPEXP bool DbgSetAutoFunctionAt(duint start, duint end);
|
||||
BRIDGE_IMPEXP void DbgClearAutoFunctionRange(duint start, duint end);
|
||||
|
||||
//Gui defines
|
||||
#define GUI_PLUGIN_MENU 0
|
||||
|
@ -934,6 +934,54 @@ extern "C" DLL_EXPORT uint _dbg_sendmessage(DBGMSG type, void* param1, void* par
|
||||
return (uint)false;
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_SET_AUTO_COMMENT_AT:
|
||||
{
|
||||
return (uint)commentset((uint)param1, (const char*)param2, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_DELETE_AUTO_COMMENT_RANGE:
|
||||
{
|
||||
commentdelrange((uint)param1, (uint)param2);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_SET_AUTO_LABEL_AT:
|
||||
{
|
||||
return (uint)labelset((uint)param1, (const char*)param2, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_DELETE_AUTO_LABEL_RANGE:
|
||||
{
|
||||
labeldelrange((uint)param1, (uint)param2);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_SET_AUTO_BOOKMARK_AT:
|
||||
{
|
||||
return (uint)bookmarkset((uint)param1, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_DELETE_AUTO_BOOKMARK_RANGE:
|
||||
{
|
||||
bookmarkdelrange((uint)param1, (uint)param2);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_SET_AUTO_FUNCTION_AT:
|
||||
{
|
||||
return (uint)functionadd((uint)param1, (uint)param2, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case DBG_DELETE_AUTO_FUNCTION_RANGE:
|
||||
{
|
||||
functiondelrange((uint)param1, (uint)param2);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
return 0;
|
||||
|
@ -290,6 +290,29 @@ bool commentdel(uint addr)
|
||||
return (comments.erase(modhashfromva(addr))==1);
|
||||
}
|
||||
|
||||
void commentdelrange(uint start, uint end)
|
||||
{
|
||||
bool bDelAll=(start==0 && end==~0); //0x00000000-0xFFFFFFFF
|
||||
uint modbase=modbasefromaddr(start);
|
||||
if(modbase!=modbasefromaddr(end))
|
||||
return;
|
||||
start-=modbase;
|
||||
end-=modbase;
|
||||
CommentsInfo::iterator i=comments.begin();
|
||||
while(i!=comments.end())
|
||||
{
|
||||
if(i->second.manual) //ignore manual
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(bDelAll || (i->second.addr>=start && i->second.addr<end))
|
||||
comments.erase(i++);
|
||||
else
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void commentcachesave(JSON root)
|
||||
{
|
||||
const JSON jsoncomments=json_array();
|
||||
@ -420,6 +443,29 @@ bool labeldel(uint addr)
|
||||
return (labels.erase(modhashfromva(addr))>0);
|
||||
}
|
||||
|
||||
void labeldelrange(uint start, uint end)
|
||||
{
|
||||
bool bDelAll=(start==0 && end==~0); //0x00000000-0xFFFFFFFF
|
||||
uint modbase=modbasefromaddr(start);
|
||||
if(modbase!=modbasefromaddr(end))
|
||||
return;
|
||||
start-=modbase;
|
||||
end-=modbase;
|
||||
LabelsInfo::iterator i=labels.begin();
|
||||
while(i!=labels.end())
|
||||
{
|
||||
if(i->second.manual) //ignore manual
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(bDelAll || (i->second.addr>=start && i->second.addr<end))
|
||||
labels.erase(i++);
|
||||
else
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void labelcachesave(JSON root)
|
||||
{
|
||||
const JSON jsonlabels=json_array();
|
||||
@ -527,6 +573,29 @@ bool bookmarkdel(uint addr)
|
||||
return (bookmarks.erase(modhashfromva(addr))>0);
|
||||
}
|
||||
|
||||
void bookmarkdelrange(uint start, uint end)
|
||||
{
|
||||
bool bDelAll=(start==0 && end==~0); //0x00000000-0xFFFFFFFF
|
||||
uint modbase=modbasefromaddr(start);
|
||||
if(modbase!=modbasefromaddr(end))
|
||||
return;
|
||||
start-=modbase;
|
||||
end-=modbase;
|
||||
BookmarksInfo::iterator i=bookmarks.begin();
|
||||
while(i!=bookmarks.end())
|
||||
{
|
||||
if(i->second.manual) //ignore manual
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(bDelAll || (i->second.addr>=start && i->second.addr<end))
|
||||
bookmarks.erase(i++);
|
||||
else
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void bookmarkcachesave(JSON root)
|
||||
{
|
||||
const JSON jsonbookmarks=json_array();
|
||||
@ -643,6 +712,29 @@ bool functiondel(uint addr)
|
||||
return (functions.erase(ModuleRange(modhashfromva(modbase), Range(addr-modbase, addr-modbase)))>0);
|
||||
}
|
||||
|
||||
void functiondelrange(uint start, uint end)
|
||||
{
|
||||
bool bDelAll=(start==0 && end==~0); //0x00000000-0xFFFFFFFF
|
||||
uint modbase=modbasefromaddr(start);
|
||||
if(modbase!=modbasefromaddr(end))
|
||||
return;
|
||||
start-=modbase;
|
||||
end-=modbase;
|
||||
FunctionsInfo::iterator i=functions.begin();
|
||||
while(i!=functions.end())
|
||||
{
|
||||
if(i->second.manual) //ignore manual
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if(bDelAll or !(i->second.start<=end and i->second.end>=start))
|
||||
functions.erase(i++);
|
||||
else
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void functioncachesave(JSON root)
|
||||
{
|
||||
const JSON jsonfunctions=json_array();
|
||||
|
@ -130,6 +130,7 @@ bool apienumexports(uint base, EXPORTENUMCALLBACK cbEnum);
|
||||
bool commentset(uint addr, const char* text, bool manual);
|
||||
bool commentget(uint addr, char* text);
|
||||
bool commentdel(uint addr);
|
||||
void commentdelrange(uint start, uint end);
|
||||
void commentcachesave(JSON root);
|
||||
void commentcacheload(JSON root);
|
||||
|
||||
@ -137,12 +138,14 @@ bool labelset(uint addr, const char* text, bool manual);
|
||||
bool labelfromstring(const char* text, uint* addr);
|
||||
bool labelget(uint addr, char* text);
|
||||
bool labeldel(uint addr);
|
||||
void labeldelrange(uint start, uint end);
|
||||
void labelcachesave(JSON root);
|
||||
void labelcacheload(JSON root);
|
||||
|
||||
bool bookmarkset(uint addr, bool manual);
|
||||
bool bookmarkget(uint addr);
|
||||
bool bookmarkdel(uint addr);
|
||||
void bookmarkdelrange(uint start, uint end);
|
||||
void bookmarkcachesave(JSON root);
|
||||
void bookmarkcacheload(JSON root);
|
||||
|
||||
@ -150,6 +153,7 @@ bool functionadd(uint start, uint end, bool manual);
|
||||
bool functionget(uint addr, uint* start, uint* end);
|
||||
bool functionoverlaps(uint start, uint end);
|
||||
bool functiondel(uint addr);
|
||||
void functiondelrange(uint start, uint end);
|
||||
void functioncachesave(JSON root);
|
||||
void functioncacheload(JSON root);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user