mirror of
https://github.com/x64dbg/x64dbg.git
synced 2024-11-27 06:40:24 +00:00
DBG: added 'push' and 'pop' commands
This commit is contained in:
parent
b3e3a340ca
commit
2d670c14ea
25
help/pop.htm
Normal file
25
help/pop.htm
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>pop</title>
|
||||||
|
<meta name="GENERATOR" content="WinCHM">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<style>
|
||||||
|
html,body {
|
||||||
|
/* Default Font */
|
||||||
|
font-family: Courier New;
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<P><STRONG>push<BR></STRONG>Pop a value from the stack.</P>
|
||||||
|
<P class=rvps3>
|
||||||
|
<U>arguments</U><BR>[arg1]: The destination.</P>
|
||||||
|
<P class=rvps3 >
|
||||||
|
|
||||||
|
<U>result</U><BR>This command does not set any
|
||||||
|
result variables.</P></body>
|
||||||
|
</html>
|
26
help/push.htm
Normal file
26
help/push.htm
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>push</title>
|
||||||
|
<meta name="GENERATOR" content="WinCHM">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<style>
|
||||||
|
html,body {
|
||||||
|
/* Default Font */
|
||||||
|
font-family: Courier New;
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<P><STRONG>push<BR></STRONG>Push a value on the stack.</P>
|
||||||
|
<P class=rvps3>
|
||||||
|
<U>arguments</U><BR> arg1: The value to push on the stack.
|
||||||
|
</P>
|
||||||
|
<P class=rvps3 >
|
||||||
|
|
||||||
|
<U>result</U><BR>This command does not set any
|
||||||
|
result variables.</P></body>
|
||||||
|
</html>
|
BIN
help/x64_dbg.wcp
BIN
help/x64_dbg.wcp
Binary file not shown.
@ -30,6 +30,7 @@
|
|||||||
#include "controlflowanalysis.h"
|
#include "controlflowanalysis.h"
|
||||||
#include "analysis_nukem.h"
|
#include "analysis_nukem.h"
|
||||||
#include "exceptiondirectoryanalysis.h"
|
#include "exceptiondirectoryanalysis.h"
|
||||||
|
#include "_scriptapi_stack.h"
|
||||||
|
|
||||||
static bool bRefinit = false;
|
static bool bRefinit = false;
|
||||||
|
|
||||||
@ -778,6 +779,40 @@ CMDRESULT cbInstrXor(int argc, char* argv[])
|
|||||||
return cmddirectexec(dbggetcommandlist(), newcmd);
|
return cmddirectexec(dbggetcommandlist(), newcmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CMDRESULT cbInstrPush(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
if(argc < 2)
|
||||||
|
{
|
||||||
|
dputs("not enough arguments!");
|
||||||
|
return STATUS_ERROR;
|
||||||
|
}
|
||||||
|
duint value;
|
||||||
|
if(!valfromstring(argv[1], &value))
|
||||||
|
{
|
||||||
|
dprintf("invalid argument \"%s\"!\n", argv[1]);
|
||||||
|
return STATUS_ERROR;
|
||||||
|
}
|
||||||
|
Script::Stack::Push(value);
|
||||||
|
uint csp = GetContextDataEx(hActiveThread, UE_CSP);
|
||||||
|
GuiStackDumpAt(csp, csp);
|
||||||
|
GuiUpdateRegisterView();
|
||||||
|
return STATUS_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CMDRESULT cbInstrPop(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
duint value = Script::Stack::Pop();
|
||||||
|
uint csp = GetContextDataEx(hActiveThread, UE_CSP);
|
||||||
|
GuiStackDumpAt(csp, csp);
|
||||||
|
GuiUpdateRegisterView();
|
||||||
|
if(argc > 1)
|
||||||
|
{
|
||||||
|
if(!valtostring(argv[1], value, false))
|
||||||
|
return STATUS_ERROR;
|
||||||
|
}
|
||||||
|
return STATUS_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
CMDRESULT cbInstrRefinit(int argc, char* argv[])
|
CMDRESULT cbInstrRefinit(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
GuiReferenceInitialize("Script");
|
GuiReferenceInitialize("Script");
|
||||||
|
@ -40,6 +40,8 @@ CMDRESULT cbInstrShr(int argc, char* argv[]);
|
|||||||
CMDRESULT cbInstrSub(int argc, char* argv[]);
|
CMDRESULT cbInstrSub(int argc, char* argv[]);
|
||||||
CMDRESULT cbInstrTest(int argc, char* argv[]);
|
CMDRESULT cbInstrTest(int argc, char* argv[]);
|
||||||
CMDRESULT cbInstrXor(int argc, char* argv[]);
|
CMDRESULT cbInstrXor(int argc, char* argv[]);
|
||||||
|
CMDRESULT cbInstrPush(int argc, char* argv[]);
|
||||||
|
CMDRESULT cbInstrPop(int argc, char* argv[]);
|
||||||
|
|
||||||
CMDRESULT cbInstrRefinit(int argc, char* argv[]);
|
CMDRESULT cbInstrRefinit(int argc, char* argv[]);
|
||||||
CMDRESULT cbInstrRefadd(int argc, char* argv[]);
|
CMDRESULT cbInstrRefadd(int argc, char* argv[]);
|
||||||
|
@ -173,6 +173,8 @@ static void registercommands()
|
|||||||
dbgcmdnew("sub", cbInstrSub, false);
|
dbgcmdnew("sub", cbInstrSub, false);
|
||||||
dbgcmdnew("test", cbInstrTest, false);
|
dbgcmdnew("test", cbInstrTest, false);
|
||||||
dbgcmdnew("xor", cbInstrXor, false);
|
dbgcmdnew("xor", cbInstrXor, false);
|
||||||
|
dbgcmdnew("push", cbInstrPush, true);
|
||||||
|
dbgcmdnew("pop", cbInstrPop, true);
|
||||||
|
|
||||||
//script
|
//script
|
||||||
dbgcmdnew("scriptload", cbScriptLoad, false);
|
dbgcmdnew("scriptload", cbScriptLoad, false);
|
||||||
|
Loading…
Reference in New Issue
Block a user