PROJECT: updated help

PROJECT: updated todo list
DBG: added 'erun', 'estep' etc.
DBG: added explicit api retrieval ("ntdll.dll:LdrGetFailuredata" works now)
GUI: added erun, estep etc in the menu + shortcut
GUI: fixed pageup+pagedown problem in disassembly
This commit is contained in:
mr.exodia 2013-12-28 02:33:23 +01:00
parent 3da353e8c5
commit 99d67a5777
19 changed files with 636 additions and 230 deletions

View File

@ -75,10 +75,11 @@ the "x" prefix. Decimal numbers can be used by prefixing the number with a "."
See "Calculations" for more
information.</SPAN></P>
<P class=rvps3><SPAN class=rvts9><U>DLL exports</U>: Type 'GetProcAddress' and it will
automatically be resolved to the
automatically be resolved to the actual address of the function. To explicitly define from
which module to load the
actual address of the
function.</SPAN></P>
API, use: "kernel32.dll:GetProcAddress" or
"kernel32:GetProcAddress"</SPAN></P>
<P class=rvps3><SPAN class=rvts9><U>labels/symbols</U>
: user-defined labels
@ -89,4 +90,4 @@ expressions.</SPAN></P>
Input
for arguments can always be done in any of the above forms, except if stated
otherwise.</SPAN></P></BODY></HTML>
otherwise.</SPAN></P></body></HTML>

View File

@ -16,10 +16,10 @@ html,body {
<body>
<P><STRONG>StepOver[,step,sto,st]<BR></STRONG>Step over
calls, when the instruction at CIP isn't a call,&nbsp;a StepInto is performed.</P>
calls. When the instruction at CIP isn't a call,&nbsp;a StepInto is performed.</P>
<P><SPAN class=rvts11><U>arguments</U><BR></SPAN><SPAN
class=rvts9>This command has no arguments.</SPAN><SPAN
class=rvts9>
</P></SPAN>
<P class=rvps3><SPAN class=rvts11><U>result<BR></U></SPAN><SPAN class=rvts9>This command does not set any result
variables.</SPAN></P></body>
variables.</SPAN></P></head>

View File

@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>eSingleStep/esstep/esst</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 >
eSingleStep[,esstep,esst]
<BR></STRONG>Step a specified number of instructions using the
Trap-Flag, skipping first-chance exceptions.</P>
<P class=rvps3><SPAN class=rvts11><U>arguments</U><BR></SPAN><SPAN
class=rvts9></SPAN><SPAN class=rvts9>[arg1]: The number of instructions to executre (this can be
any valid expression). When not specified, a StepInto is performed.<BR></SPAN></P>
<P class=rvps3><SPAN class=rvts11><U>result<BR></U></SPAN><SPAN class=rvts9>This command does not set any result variables.</SPAN></P>
<P>&nbsp;</P></body>

36
help/eStepInto_esti.htm Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>eStepInto/esti</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>
eStepInto[,esti]
<BR>
</STRONG>Single Step (using Trap-Flag), skipping
first-chance exceptions.
</P>
<P class=rvps3 >
<SPAN class=rvts11 >
<U>
arguments</U>
<BR></SPAN><SPAN
class=rvts9>This command has no arguments.</SPAN><SPAN
class=rvts9><BR></SPAN></P>
<P class=rvps3><SPAN class=rvts11><U>result<BR></U></SPAN><SPAN class=rvts9>This command does not set any result variables.</SPAN></P>
<P>&nbsp;</P></body>
</html>

34
help/eStepOut_ertr.htm Normal file
View File

@ -0,0 +1,34 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>eStepOut/ertr</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>
eStepOut[,ertr]
<BR>
</STRONG>Return from function by calling eStepOver until
the current instruction is a RET.</P>
<P class=rvps3>
<SPAN class=rvts11 >
<U >
arguments</U>
<BR></SPAN>
<SPAN
class=rvts9>This command has no arguments.</SPAN> </P>
<P class=rvps3><SPAN class=rvts11><U>result<BR></U></SPAN><SPAN class=rvts9>This command does not set any result
variables.</SPAN></P></body>
</html>

View File

@ -0,0 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>eStepOver/estep/esto/est</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>
eStepOver[,estep,esto,est]
<BR>
</STRONG>Step over calls, skipping first-chance
exceptions.&nbsp;When the instruction at CIP isn't a call,&nbsp;a StepInto is
performed.</P>
<P>
<SPAN class=rvts11 >
<U >
arguments</U>
<BR></SPAN>
<SPAN
class=rvts9>This command has no arguments.</SPAN><SPAN
class=rvts9> </P></SPAN>
<P class=rvps3><SPAN class=rvts11><U>result<BR></U></SPAN><SPAN class=rvts9>This command does not set any result
variables.</SPAN></P></body>

32
help/erun_ego_er_eg.htm Normal file
View File

@ -0,0 +1,32 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>erun/ego/er/eg</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>erun[,ego,er,eg]</STRONG><BR>Free the
lock and allow the program to run, skipping first-chance exceptions.</P>
<P>
<U>
arguments
</U>
<BR>
This command has no arguments.</P>
<P>
<U >
result</U>
<BR >
This command does not set any result variables.</P>
<P>&nbsp;</P></body>
</html>

View File

@ -96,7 +96,7 @@ Font=
DefaultTopic=Introduction.htm
[TOPICS]
TitleList=65
TitleList=70
TitleList.Title.0=Introduction
TitleList.Level.0=0
TitleList.Url.0=Introduction.htm
@ -105,7 +105,7 @@ TitleList.Status.0=0
TitleList.Keywords.0=
TitleList.ContextNumber.0=1000
TitleList.ApplyTemp.0=0
TitleList.Expanded.0=0
TitleList.Expanded.0=1
TitleList.Kind.0=0
TitleList.Title.1=Input
TitleList.Level.1=1
@ -145,7 +145,7 @@ TitleList.Status.4=0
TitleList.Keywords.4=
TitleList.ContextNumber.4=1003
TitleList.ApplyTemp.4=0
TitleList.Expanded.4=1
TitleList.Expanded.4=0
TitleList.Kind.4=0
TitleList.Title.5=Debug Control
TitleList.Level.5=1
@ -187,564 +187,614 @@ TitleList.ContextNumber.8=1013
TitleList.ApplyTemp.8=0
TitleList.Expanded.8=0
TitleList.Kind.8=0
TitleList.Title.9=pause
TitleList.Title.9=erun/ego/er/eg
TitleList.Level.9=2
TitleList.Url.9=pause.htm
TitleList.Url.9=erun_ego_er_eg.htm
TitleList.Icon.9=0
TitleList.Status.9=0
TitleList.Keywords.9=
TitleList.ContextNumber.9=1045
TitleList.ContextNumber.9=1065
TitleList.ApplyTemp.9=0
TitleList.Expanded.9=0
TitleList.Kind.9=0
TitleList.Title.10=StepInto/sti
TitleList.Title.10=pause
TitleList.Level.10=2
TitleList.Url.10=StepInto.htm
TitleList.Url.10=pause.htm
TitleList.Icon.10=0
TitleList.Status.10=0
TitleList.Keywords.10=
TitleList.ContextNumber.10=1021
TitleList.ContextNumber.10=1045
TitleList.ApplyTemp.10=0
TitleList.Expanded.10=0
TitleList.Kind.10=0
TitleList.Title.11=StepOver/step/sto/st
TitleList.Title.11=StepInto/sti
TitleList.Level.11=2
TitleList.Url.11=StepOver.htm
TitleList.Url.11=StepInto.htm
TitleList.Icon.11=0
TitleList.Status.11=0
TitleList.Keywords.11=
TitleList.ContextNumber.11=1022
TitleList.ContextNumber.11=1021
TitleList.ApplyTemp.11=0
TitleList.Expanded.11=0
TitleList.Kind.11=0
TitleList.Title.12=SingleStep/sstep/sst
TitleList.Title.12=eStepInto/esti
TitleList.Level.12=2
TitleList.Url.12=SingleStep.htm
TitleList.Url.12=eStepInto_esti.htm
TitleList.Icon.12=0
TitleList.Status.12=0
TitleList.Keywords.12=
TitleList.ContextNumber.12=1023
TitleList.ContextNumber.12=1064
TitleList.ApplyTemp.12=0
TitleList.Expanded.12=0
TitleList.Kind.12=0
TitleList.Title.13=StepOut/rtr
TitleList.Title.13=StepOver/step/sto/st
TitleList.Level.13=2
TitleList.Url.13=rtr.htm
TitleList.Url.13=StepOver.htm
TitleList.Icon.13=0
TitleList.Status.13=0
TitleList.Keywords.13=
TitleList.ContextNumber.13=1028
TitleList.ContextNumber.13=1022
TitleList.ApplyTemp.13=0
TitleList.Expanded.13=0
TitleList.Kind.13=0
TitleList.Title.14=Breakpoints
TitleList.Level.14=1
TitleList.Url.14=Breakpoints.htm
TitleList.Title.14=eStepOver/estep/esto/est
TitleList.Level.14=2
TitleList.Url.14=eStepOver_estep_esto_est.htm
TitleList.Icon.14=0
TitleList.Status.14=0
TitleList.Keywords.14=
TitleList.ContextNumber.14=1019
TitleList.ContextNumber.14=1066
TitleList.ApplyTemp.14=0
TitleList.Expanded.14=0
TitleList.Kind.14=0
TitleList.Title.15=bplist
TitleList.Title.15=SingleStep/sstep/sst
TitleList.Level.15=2
TitleList.Url.15=bplist.htm
TitleList.Url.15=SingleStep.htm
TitleList.Icon.15=0
TitleList.Status.15=0
TitleList.Keywords.15=
TitleList.ContextNumber.15=1015
TitleList.ContextNumber.15=1023
TitleList.ApplyTemp.15=0
TitleList.Expanded.15=0
TitleList.Kind.15=0
TitleList.Title.16=SetBPXOptions/bptype
TitleList.Title.16=eSingleStep/esstep/esst
TitleList.Level.16=2
TitleList.Url.16=SetBPXOptions_bptype.htm
TitleList.Url.16=eSingleStep_esstep_esst.htm
TitleList.Icon.16=0
TitleList.Status.16=0
TitleList.Keywords.16=
TitleList.ContextNumber.16=1018
TitleList.ContextNumber.16=1067
TitleList.ApplyTemp.16=0
TitleList.Expanded.16=0
TitleList.Kind.16=0
TitleList.Title.17=SetBPX/bp/bpx
TitleList.Title.17=StepOut/rtr
TitleList.Level.17=2
TitleList.Url.17=SetBPX_bp_bpx.htm
TitleList.Url.17=rtr.htm
TitleList.Icon.17=0
TitleList.Status.17=0
TitleList.Keywords.17=
TitleList.ContextNumber.17=1012
TitleList.ContextNumber.17=1028
TitleList.ApplyTemp.17=0
TitleList.Expanded.17=0
TitleList.Kind.17=0
TitleList.Title.18=DeleteBPX/bpc/bc
TitleList.Title.18=eStepOut/ertr
TitleList.Level.18=2
TitleList.Url.18=DeleteBPX_bpc_bc.htm
TitleList.Url.18=eStepOut_ertr.htm
TitleList.Icon.18=0
TitleList.Status.18=0
TitleList.Keywords.18=
TitleList.ContextNumber.18=1017
TitleList.ContextNumber.18=1068
TitleList.ApplyTemp.18=0
TitleList.Expanded.18=0
TitleList.Kind.18=0
TitleList.Title.19=EnableBPX/bpe/be
TitleList.Level.19=2
TitleList.Url.19=EnableBPX_bpe_be.htm
TitleList.Title.19=Breakpoints
TitleList.Level.19=1
TitleList.Url.19=Breakpoints.htm
TitleList.Icon.19=0
TitleList.Status.19=0
TitleList.Keywords.19=
TitleList.ContextNumber.19=1014
TitleList.ContextNumber.19=1019
TitleList.ApplyTemp.19=0
TitleList.Expanded.19=0
TitleList.Kind.19=0
TitleList.Title.20=DisableBPX/bpd/bd
TitleList.Title.20=bplist
TitleList.Level.20=2
TitleList.Url.20=DisableBPX_bpd_bd.htm
TitleList.Url.20=bplist.htm
TitleList.Icon.20=0
TitleList.Status.20=0
TitleList.Keywords.20=
TitleList.ContextNumber.20=1016
TitleList.ContextNumber.20=1015
TitleList.ApplyTemp.20=0
TitleList.Expanded.20=0
TitleList.Kind.20=0
TitleList.Title.21=SetHardwareBreakpoint/bph/bphws
TitleList.Title.21=SetBPXOptions/bptype
TitleList.Level.21=2
TitleList.Url.21=SetHardwareBreakpoint_bph_bphws.htm
TitleList.Url.21=SetBPXOptions_bptype.htm
TitleList.Icon.21=0
TitleList.Status.21=0
TitleList.Keywords.21=
TitleList.ContextNumber.21=1030
TitleList.ContextNumber.21=1018
TitleList.ApplyTemp.21=0
TitleList.Expanded.21=0
TitleList.Kind.21=0
TitleList.Title.22=SetMemoryBPX/membp/bpm
TitleList.Title.22=SetBPX/bp/bpx
TitleList.Level.22=2
TitleList.Url.22=SetMemoryBPX_membp_bpm.htm
TitleList.Url.22=SetBPX_bp_bpx.htm
TitleList.Icon.22=0
TitleList.Status.22=0
TitleList.Keywords.22=
TitleList.ContextNumber.22=1027
TitleList.ContextNumber.22=1012
TitleList.ApplyTemp.22=0
TitleList.Expanded.22=0
TitleList.Kind.22=0
TitleList.Title.23=DeleteHardwareBreakpoint/bphc/bphwc
TitleList.Title.23=DeleteBPX/bpc/bc
TitleList.Level.23=2
TitleList.Url.23=DeleteHardwareBreakpoint_bphc_bphwc.htm
TitleList.Url.23=DeleteBPX_bpc_bc.htm
TitleList.Icon.23=0
TitleList.Status.23=0
TitleList.Keywords.23=
TitleList.ContextNumber.23=1048
TitleList.ContextNumber.23=1017
TitleList.ApplyTemp.23=0
TitleList.Expanded.23=0
TitleList.Kind.23=0
TitleList.Title.24=DeleteMemoryBPX/membpc/bpmc
TitleList.Title.24=EnableBPX/bpe/be
TitleList.Level.24=2
TitleList.Url.24=DeleteMemoryBPX_membpc_bpmc.htm
TitleList.Url.24=EnableBPX_bpe_be.htm
TitleList.Icon.24=0
TitleList.Status.24=0
TitleList.Keywords.24=
TitleList.ContextNumber.24=1049
TitleList.ContextNumber.24=1014
TitleList.ApplyTemp.24=0
TitleList.Expanded.24=0
TitleList.Kind.24=0
TitleList.Title.25=Variables
TitleList.Level.25=1
TitleList.Url.25=Variables_section.htm
TitleList.Title.25=DisableBPX/bpd/bd
TitleList.Level.25=2
TitleList.Url.25=DisableBPX_bpd_bd.htm
TitleList.Icon.25=0
TitleList.Status.25=0
TitleList.Keywords.25=
TitleList.ContextNumber.25=1041
TitleList.ContextNumber.25=1016
TitleList.ApplyTemp.25=0
TitleList.Expanded.25=0
TitleList.Kind.25=0
TitleList.Title.26=var/varnew
TitleList.Title.26=SetHardwareBreakpoint/bph/bphws
TitleList.Level.26=2
TitleList.Url.26=var_varnew.htm
TitleList.Url.26=SetHardwareBreakpoint_bph_bphws.htm
TitleList.Icon.26=0
TitleList.Status.26=0
TitleList.Keywords.26=
TitleList.ContextNumber.26=1006
TitleList.ContextNumber.26=1030
TitleList.ApplyTemp.26=0
TitleList.Expanded.26=0
TitleList.Kind.26=0
TitleList.Title.27=vardel
TitleList.Title.27=SetMemoryBPX/membp/bpm
TitleList.Level.27=2
TitleList.Url.27=vardel.htm
TitleList.Url.27=SetMemoryBPX_membp_bpm.htm
TitleList.Icon.27=0
TitleList.Status.27=0
TitleList.Keywords.27=
TitleList.ContextNumber.27=1007
TitleList.ContextNumber.27=1027
TitleList.ApplyTemp.27=0
TitleList.Expanded.27=0
TitleList.Kind.27=0
TitleList.Title.28=varlist
TitleList.Title.28=DeleteHardwareBreakpoint/bphc/bphwc
TitleList.Level.28=2
TitleList.Url.28=varlist.htm
TitleList.Url.28=DeleteHardwareBreakpoint_bphc_bphwc.htm
TitleList.Icon.28=0
TitleList.Status.28=0
TitleList.Keywords.28=
TitleList.ContextNumber.28=1010
TitleList.ContextNumber.28=1048
TitleList.ApplyTemp.28=0
TitleList.Expanded.28=0
TitleList.Kind.28=0
TitleList.Title.29=mov/set
TitleList.Title.29=DeleteMemoryBPX/membpc/bpmc
TitleList.Level.29=2
TitleList.Url.29=mov_set.htm
TitleList.Url.29=DeleteMemoryBPX_membpc_bpmc.htm
TitleList.Icon.29=0
TitleList.Status.29=0
TitleList.Keywords.29=
TitleList.ContextNumber.29=1008
TitleList.ContextNumber.29=1049
TitleList.ApplyTemp.29=0
TitleList.Expanded.29=0
TitleList.Kind.29=0
TitleList.Title.30=Misc
TitleList.Title.30=Variables
TitleList.Level.30=1
TitleList.Url.30=Misc.htm
TitleList.Url.30=Variables_section.htm
TitleList.Icon.30=0
TitleList.Status.30=0
TitleList.Keywords.30=
TitleList.ContextNumber.30=1004
TitleList.ContextNumber.30=1041
TitleList.ApplyTemp.30=0
TitleList.Expanded.30=0
TitleList.Kind.30=0
TitleList.Title.31=strlen/charcount/ccount
TitleList.Title.31=var/varnew
TitleList.Level.31=2
TitleList.Url.31=strlen_charcount_ccount.htm
TitleList.Url.31=var_varnew.htm
TitleList.Icon.31=0
TitleList.Status.31=0
TitleList.Keywords.31=
TitleList.ContextNumber.31=1005
TitleList.ContextNumber.31=1006
TitleList.ApplyTemp.31=0
TitleList.Expanded.31=0
TitleList.Kind.31=0
TitleList.Title.32=cls/lc/lclr
TitleList.Title.32=vardel
TitleList.Level.32=2
TitleList.Url.32=cls.htm
TitleList.Url.32=vardel.htm
TitleList.Icon.32=0
TitleList.Status.32=0
TitleList.Keywords.32=
TitleList.ContextNumber.32=1009
TitleList.ContextNumber.32=1007
TitleList.ApplyTemp.32=0
TitleList.Expanded.32=0
TitleList.Kind.32=0
TitleList.Title.33=chd
TitleList.Title.33=varlist
TitleList.Level.33=2
TitleList.Url.33=chd.htm
TitleList.Url.33=varlist.htm
TitleList.Icon.33=0
TitleList.Status.33=0
TitleList.Keywords.33=
TitleList.ContextNumber.33=1029
TitleList.ContextNumber.33=1010
TitleList.ApplyTemp.33=0
TitleList.Expanded.33=0
TitleList.Kind.33=0
TitleList.Title.34=disasm/dis/d
TitleList.Title.34=mov/set
TitleList.Level.34=2
TitleList.Url.34=disasm_dis_d.htm
TitleList.Url.34=mov_set.htm
TitleList.Icon.34=0
TitleList.Status.34=0
TitleList.Keywords.34=
TitleList.ContextNumber.34=1026
TitleList.ContextNumber.34=1008
TitleList.ApplyTemp.34=0
TitleList.Expanded.34=0
TitleList.Kind.34=0
TitleList.Title.35=HideDebugger/dbh/hide
TitleList.Level.35=2
TitleList.Url.35=HideDebugger_dbh_hide.htm
TitleList.Title.35=Misc
TitleList.Level.35=1
TitleList.Url.35=Misc.htm
TitleList.Icon.35=0
TitleList.Status.35=0
TitleList.Keywords.35=
TitleList.ContextNumber.35=1025
TitleList.ContextNumber.35=1004
TitleList.ApplyTemp.35=0
TitleList.Expanded.35=0
TitleList.Kind.35=0
TitleList.Title.36=User Database
TitleList.Level.36=1
TitleList.Url.36=User_Database.htm
TitleList.Title.36=strlen/charcount/ccount
TitleList.Level.36=2
TitleList.Url.36=strlen_charcount_ccount.htm
TitleList.Icon.36=0
TitleList.Status.36=0
TitleList.Keywords.36=
TitleList.ContextNumber.36=1042
TitleList.ContextNumber.36=1005
TitleList.ApplyTemp.36=0
TitleList.Expanded.36=1
TitleList.Expanded.36=0
TitleList.Kind.36=0
TitleList.Title.37=cmt/cmtset/commentset
TitleList.Title.37=cls/lc/lclr
TitleList.Level.37=2
TitleList.Url.37=cmt_cmtset_commentset.htm
TitleList.Url.37=cls.htm
TitleList.Icon.37=0
TitleList.Status.37=0
TitleList.Keywords.37=
TitleList.ContextNumber.37=1035
TitleList.ContextNumber.37=1009
TitleList.ApplyTemp.37=0
TitleList.Expanded.37=0
TitleList.Kind.37=0
TitleList.Title.38=cmtc/cmtdel/commentdel
TitleList.Title.38=chd
TitleList.Level.38=2
TitleList.Url.38=cmtc_cmtdel_commentdel.htm
TitleList.Url.38=chd.htm
TitleList.Icon.38=0
TitleList.Status.38=0
TitleList.Keywords.38=
TitleList.ContextNumber.38=1036
TitleList.ContextNumber.38=1029
TitleList.ApplyTemp.38=0
TitleList.Expanded.38=0
TitleList.Kind.38=0
TitleList.Title.39=lbl/lblset/labelset
TitleList.Title.39=disasm/dis/d
TitleList.Level.39=2
TitleList.Url.39=lbl_lblset_labelset.htm
TitleList.Url.39=disasm_dis_d.htm
TitleList.Icon.39=0
TitleList.Status.39=0
TitleList.Keywords.39=
TitleList.ContextNumber.39=1037
TitleList.ContextNumber.39=1026
TitleList.ApplyTemp.39=0
TitleList.Expanded.39=0
TitleList.Kind.39=0
TitleList.Title.40=lblc/lbldel/labeldel
TitleList.Title.40=HideDebugger/dbh/hide
TitleList.Level.40=2
TitleList.Url.40=lblc_lbldel_labeldel.htm
TitleList.Url.40=HideDebugger_dbh_hide.htm
TitleList.Icon.40=0
TitleList.Status.40=0
TitleList.Keywords.40=
TitleList.ContextNumber.40=1038
TitleList.ContextNumber.40=1025
TitleList.ApplyTemp.40=0
TitleList.Expanded.40=0
TitleList.Kind.40=0
TitleList.Title.41=savedb/dbsave
TitleList.Level.41=2
TitleList.Url.41=savedb_dbsave.htm
TitleList.Title.41=User Database
TitleList.Level.41=1
TitleList.Url.41=User_Database.htm
TitleList.Icon.41=0
TitleList.Status.41=0
TitleList.Keywords.41=
TitleList.ContextNumber.41=1034
TitleList.ContextNumber.41=1042
TitleList.ApplyTemp.41=0
TitleList.Expanded.41=0
TitleList.Kind.41=0
TitleList.Title.42=loaddb/dbload
TitleList.Title.42=cmt/cmtset/commentset
TitleList.Level.42=2
TitleList.Url.42=loaddb_dbload.htm
TitleList.Url.42=cmt_cmtset_commentset.htm
TitleList.Icon.42=0
TitleList.Status.42=0
TitleList.Keywords.42=
TitleList.ContextNumber.42=1039
TitleList.ContextNumber.42=1035
TitleList.ApplyTemp.42=0
TitleList.Expanded.42=0
TitleList.Kind.42=0
TitleList.Title.43=functionadd/func
TitleList.Title.43=cmtc/cmtdel/commentdel
TitleList.Level.43=2
TitleList.Url.43=functionadd_func.htm
TitleList.Url.43=cmtc_cmtdel_commentdel.htm
TitleList.Icon.43=0
TitleList.Status.43=0
TitleList.Keywords.43=
TitleList.ContextNumber.43=1062
TitleList.ContextNumber.43=1036
TitleList.ApplyTemp.43=0
TitleList.Expanded.43=0
TitleList.Kind.43=0
TitleList.Title.44=functiondel/funcc
TitleList.Title.44=lbl/lblset/labelset
TitleList.Level.44=2
TitleList.Url.44=functiondel_funcc.htm
TitleList.Url.44=lbl_lblset_labelset.htm
TitleList.Icon.44=0
TitleList.Status.44=0
TitleList.Keywords.44=
TitleList.ContextNumber.44=1063
TitleList.ContextNumber.44=1037
TitleList.ApplyTemp.44=0
TitleList.Expanded.44=0
TitleList.Kind.44=0
TitleList.Title.45=Memory Operations
TitleList.Level.45=1
TitleList.Url.45=Memory_Operations.htm
TitleList.Title.45=lblc/lbldel/labeldel
TitleList.Level.45=2
TitleList.Url.45=lblc_lbldel_labeldel.htm
TitleList.Icon.45=0
TitleList.Status.45=0
TitleList.Keywords.45=
TitleList.ContextNumber.45=1043
TitleList.ContextNumber.45=1038
TitleList.ApplyTemp.45=0
TitleList.Expanded.45=0
TitleList.Kind.45=0
TitleList.Title.46=alloc
TitleList.Title.46=savedb/dbsave
TitleList.Level.46=2
TitleList.Url.46=alloc.htm
TitleList.Url.46=savedb_dbsave.htm
TitleList.Icon.46=0
TitleList.Status.46=0
TitleList.Keywords.46=
TitleList.ContextNumber.46=1032
TitleList.ContextNumber.46=1034
TitleList.ApplyTemp.46=0
TitleList.Expanded.46=0
TitleList.Kind.46=0
TitleList.Title.47=free
TitleList.Title.47=loaddb/dbload
TitleList.Level.47=2
TitleList.Url.47=free.htm
TitleList.Url.47=loaddb_dbload.htm
TitleList.Icon.47=0
TitleList.Status.47=0
TitleList.Keywords.47=
TitleList.ContextNumber.47=1031
TitleList.ContextNumber.47=1039
TitleList.ApplyTemp.47=0
TitleList.Expanded.47=0
TitleList.Kind.47=0
TitleList.Title.48=Fill/memset
TitleList.Title.48=functionadd/func
TitleList.Level.48=2
TitleList.Url.48=Fill_memset.htm
TitleList.Url.48=functionadd_func.htm
TitleList.Icon.48=0
TitleList.Status.48=0
TitleList.Keywords.48=
TitleList.ContextNumber.48=1033
TitleList.ContextNumber.48=1062
TitleList.ApplyTemp.48=0
TitleList.Expanded.48=0
TitleList.Kind.48=0
TitleList.Title.49=Plugins
TitleList.Level.49=1
TitleList.Url.49=Plugins_section.htm
TitleList.Title.49=functiondel/funcc
TitleList.Level.49=2
TitleList.Url.49=functiondel_funcc.htm
TitleList.Icon.49=0
TitleList.Status.49=0
TitleList.Keywords.49=
TitleList.ContextNumber.49=1046
TitleList.ContextNumber.49=1063
TitleList.ApplyTemp.49=0
TitleList.Expanded.49=0
TitleList.Kind.49=0
TitleList.Title.50=StartScylla/scylla/imprec
TitleList.Level.50=2
TitleList.Url.50=StartScylla_scylla_imprec.htm
TitleList.Title.50=Memory Operations
TitleList.Level.50=1
TitleList.Url.50=Memory_Operations.htm
TitleList.Icon.50=0
TitleList.Status.50=0
TitleList.Keywords.50=
TitleList.ContextNumber.50=1047
TitleList.ContextNumber.50=1043
TitleList.ApplyTemp.50=0
TitleList.Expanded.50=0
TitleList.Kind.50=0
TitleList.Title.51=Plugins
TitleList.Level.51=0
TitleList.Url.51=Plugins.htm
TitleList.Title.51=alloc
TitleList.Level.51=2
TitleList.Url.51=alloc.htm
TitleList.Icon.51=0
TitleList.Status.51=0
TitleList.Keywords.51=
TitleList.ContextNumber.51=1050
TitleList.ContextNumber.51=1032
TitleList.ApplyTemp.51=0
TitleList.Expanded.51=0
TitleList.Kind.51=0
TitleList.Title.52=Exports
TitleList.Level.52=1
TitleList.Url.52=Exports.htm
TitleList.Title.52=free
TitleList.Level.52=2
TitleList.Url.52=free.htm
TitleList.Icon.52=0
TitleList.Status.52=0
TitleList.Keywords.52=
TitleList.ContextNumber.52=1051
TitleList.ContextNumber.52=1031
TitleList.ApplyTemp.52=0
TitleList.Expanded.52=0
TitleList.Kind.52=0
TitleList.Title.53=_plugin_registercallback
TitleList.Title.53=Fill/memset
TitleList.Level.53=2
TitleList.Url.53=_plugin_registercallback.htm
TitleList.Url.53=Fill_memset.htm
TitleList.Icon.53=0
TitleList.Status.53=0
TitleList.Keywords.53=
TitleList.ContextNumber.53=1052
TitleList.ContextNumber.53=1033
TitleList.ApplyTemp.53=0
TitleList.Expanded.53=0
TitleList.Kind.53=0
TitleList.Title.54=_plugin_unregistercallback
TitleList.Level.54=2
TitleList.Url.54=_plugin_unregistercallback.htm
TitleList.Title.54=Plugins
TitleList.Level.54=1
TitleList.Url.54=Plugins_section.htm
TitleList.Icon.54=0
TitleList.Status.54=0
TitleList.Keywords.54=
TitleList.ContextNumber.54=1053
TitleList.ContextNumber.54=1046
TitleList.ApplyTemp.54=0
TitleList.Expanded.54=0
TitleList.Kind.54=0
TitleList.Title.55=_plugin_registercommand
TitleList.Title.55=StartScylla/scylla/imprec
TitleList.Level.55=2
TitleList.Url.55=_plugin_registercommand.htm
TitleList.Url.55=StartScylla_scylla_imprec.htm
TitleList.Icon.55=0
TitleList.Status.55=0
TitleList.Keywords.55=
TitleList.ContextNumber.55=1054
TitleList.ContextNumber.55=1047
TitleList.ApplyTemp.55=0
TitleList.Expanded.55=0
TitleList.Kind.55=0
TitleList.Title.56=_plugin_unregistercommand
TitleList.Level.56=2
TitleList.Url.56=_plugin_unregistercommand.htm
TitleList.Title.56=Plugins
TitleList.Level.56=0
TitleList.Url.56=Plugins.htm
TitleList.Icon.56=0
TitleList.Status.56=0
TitleList.Keywords.56=
TitleList.ContextNumber.56=1055
TitleList.ContextNumber.56=1050
TitleList.ApplyTemp.56=0
TitleList.Expanded.56=0
TitleList.Kind.56=0
TitleList.Title.57=_plugin_logprintf
TitleList.Level.57=2
TitleList.Url.57=
TitleList.Title.57=Exports
TitleList.Level.57=1
TitleList.Url.57=Exports.htm
TitleList.Icon.57=0
TitleList.Status.57=1
TitleList.Status.57=0
TitleList.Keywords.57=
TitleList.ContextNumber.57=1056
TitleList.ContextNumber.57=1051
TitleList.ApplyTemp.57=0
TitleList.Expanded.57=0
TitleList.Kind.57=0
TitleList.Title.58=_plugin_logputs
TitleList.Title.58=_plugin_registercallback
TitleList.Level.58=2
TitleList.Url.58=
TitleList.Url.58=_plugin_registercallback.htm
TitleList.Icon.58=0
TitleList.Status.58=1
TitleList.Status.58=0
TitleList.Keywords.58=
TitleList.ContextNumber.58=1057
TitleList.ContextNumber.58=1052
TitleList.ApplyTemp.58=0
TitleList.Expanded.58=0
TitleList.Kind.58=0
TitleList.Title.59=_plugin_debugpause
TitleList.Title.59=_plugin_unregistercallback
TitleList.Level.59=2
TitleList.Url.59=
TitleList.Url.59=_plugin_unregistercallback.htm
TitleList.Icon.59=0
TitleList.Status.59=1
TitleList.Status.59=0
TitleList.Keywords.59=
TitleList.ContextNumber.59=1058
TitleList.ContextNumber.59=1053
TitleList.ApplyTemp.59=0
TitleList.Expanded.59=0
TitleList.Kind.59=0
TitleList.Title.60=Structures
TitleList.Level.60=1
TitleList.Url.60=Structures.htm
TitleList.Title.60=_plugin_registercommand
TitleList.Level.60=2
TitleList.Url.60=_plugin_registercommand.htm
TitleList.Icon.60=0
TitleList.Status.60=0
TitleList.Keywords.60=
TitleList.ContextNumber.60=1059
TitleList.ContextNumber.60=1054
TitleList.ApplyTemp.60=0
TitleList.Expanded.60=0
TitleList.Kind.60=0
TitleList.Title.61=Callbacks
TitleList.Title.61=_plugin_unregistercommand
TitleList.Level.61=2
TitleList.Url.61=Callbacks.htm
TitleList.Url.61=_plugin_unregistercommand.htm
TitleList.Icon.61=0
TitleList.Status.61=0
TitleList.Keywords.61=
TitleList.ContextNumber.61=1060
TitleList.ContextNumber.61=1055
TitleList.ApplyTemp.61=0
TitleList.Expanded.61=0
TitleList.Kind.61=0
TitleList.Title.62=PLUG_INITSTRUCT
TitleList.Title.62=_plugin_logprintf
TitleList.Level.62=2
TitleList.Url.62=PLUGINIT_STRUCT.htm
TitleList.Url.62=
TitleList.Icon.62=0
TitleList.Status.62=0
TitleList.Status.62=1
TitleList.Keywords.62=
TitleList.ContextNumber.62=1061
TitleList.ContextNumber.62=1056
TitleList.ApplyTemp.62=0
TitleList.Expanded.62=0
TitleList.Kind.62=0
TitleList.Title.63=Special Thanks
TitleList.Level.63=0
TitleList.Url.63=Special_Thanks.htm
TitleList.Title.63=_plugin_logputs
TitleList.Level.63=2
TitleList.Url.63=
TitleList.Icon.63=0
TitleList.Status.63=0
TitleList.Status.63=1
TitleList.Keywords.63=
TitleList.ContextNumber.63=1024
TitleList.ContextNumber.63=1057
TitleList.ApplyTemp.63=0
TitleList.Expanded.63=0
TitleList.Kind.63=0
TitleList.Title.64=Fixed Top Style
TitleList.Level.64=0
TitleList.Url.64=template\fixedtop.htm
TitleList.Title.64=_plugin_debugpause
TitleList.Level.64=2
TitleList.Url.64=
TitleList.Icon.64=0
TitleList.Status.64=0
TitleList.Status.64=1
TitleList.Keywords.64=
TitleList.ContextNumber.64=
TitleList.ContextNumber.64=1058
TitleList.ApplyTemp.64=0
TitleList.Expanded.64=0
TitleList.Kind.64=2
TitleList.Kind.64=0
TitleList.Title.65=Structures
TitleList.Level.65=1
TitleList.Url.65=Structures.htm
TitleList.Icon.65=0
TitleList.Status.65=0
TitleList.Keywords.65=
TitleList.ContextNumber.65=1059
TitleList.ApplyTemp.65=0
TitleList.Expanded.65=0
TitleList.Kind.65=0
TitleList.Title.66=Callbacks
TitleList.Level.66=2
TitleList.Url.66=Callbacks.htm
TitleList.Icon.66=0
TitleList.Status.66=0
TitleList.Keywords.66=
TitleList.ContextNumber.66=1060
TitleList.ApplyTemp.66=0
TitleList.Expanded.66=0
TitleList.Kind.66=0
TitleList.Title.67=PLUG_INITSTRUCT
TitleList.Level.67=2
TitleList.Url.67=PLUGINIT_STRUCT.htm
TitleList.Icon.67=0
TitleList.Status.67=0
TitleList.Keywords.67=
TitleList.ContextNumber.67=1061
TitleList.ApplyTemp.67=0
TitleList.Expanded.67=0
TitleList.Kind.67=0
TitleList.Title.68=Special Thanks
TitleList.Level.68=0
TitleList.Url.68=Special_Thanks.htm
TitleList.Icon.68=0
TitleList.Status.68=0
TitleList.Keywords.68=
TitleList.ContextNumber.68=1024
TitleList.ApplyTemp.68=0
TitleList.Expanded.68=0
TitleList.Kind.68=0
TitleList.Title.69=Fixed Top Style
TitleList.Level.69=0
TitleList.Url.69=template\fixedtop.htm
TitleList.Icon.69=0
TitleList.Status.69=0
TitleList.Keywords.69=
TitleList.ContextNumber.69=
TitleList.ApplyTemp.69=0
TitleList.Expanded.69=0
TitleList.Kind.69=2

View File

@ -19,12 +19,10 @@
- set pe data in memory
- va to offset
- offset to va
- getapiname
- float calculations
- command help
- inject asm code
- and or xor commands
- analysis
- getlasterror
- display open handles
- step to user code
@ -46,7 +44,6 @@
- TEB/TBI
- PEB/PBI
- cpu thread id
- shift+f7f8f9
- log breakpoints
- fix memory breakpoints
- membp in memmap
@ -56,9 +53,6 @@
- restore window position (BridgeSetting)
- follow in dump
- opcode byte split
- middle mouse click = copy addr/bytes/disasm
- DOS name fix in Qt browse dialog
- abstractTable column names
- stack window(!)
- dump window(!!!)
- tabbed GUI (workspace+dragable windows)
@ -68,7 +62,6 @@
- show export table
- find all intermodular calls
- highlight register changes (only when CIP changed also)
- PAGE UP + PAGE DOWN keys in disasm
- 'dead' bytes custom analysis
- loops lines database for analysis
- enable/disable hw+mem breakpoint

View File

@ -44,5 +44,11 @@ PLUG_IMPEXP void _plugin_debugpause()
DebugUpdateGui(GetContextData(UE_CIP));
GuiSetDebugState(paused);
lock(WAITID_RUN);
dbgsetskipexceptions(false);
wait(WAITID_RUN);
}
PLUG_IMPEXP void _plugin_debugskipexceptions(bool skip)
{
dbgsetskipexceptions(skip);
}

View File

@ -156,6 +156,7 @@ PLUG_IMPEXP bool _plugin_unregistercommand(int pluginHandle, const char* command
PLUG_IMPEXP void _plugin_logprintf(const char* format, ...);
PLUG_IMPEXP void _plugin_logputs(const char* text);
PLUG_IMPEXP void _plugin_debugpause();
PLUG_IMPEXP void _plugin_debugskipexceptions(bool skip);
#ifdef __cplusplus
}

View File

@ -22,6 +22,7 @@ static bool isStepping=false;
static bool isPausedByUser=false;
static bool bScyllaLoaded=false;
static bool bIsAttached=false;
static bool bSkipExceptions=false;
static int ecount=0;
//Superglobal variables
@ -62,6 +63,11 @@ bool dbgisrunning()
return false;
}
void dbgsetskipexceptions(bool skip)
{
bSkipExceptions=skip;
}
void DebugUpdateGui(uint disasm_addr)
{
GuiUpdateAllViews();
@ -125,6 +131,7 @@ static void cbUserBreakpoint()
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -157,6 +164,7 @@ static void cbHardwareBreakpoint(void* ExceptionAddress)
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -193,6 +201,7 @@ static void cbMemoryBreakpoint(void* ExceptionAddress)
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -285,6 +294,7 @@ static void cbStep()
plugincbcall(CB_STEPPED, &stepInfo);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -297,6 +307,7 @@ static void cbRtrFinalStep()
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -415,6 +426,7 @@ static void cbSystemBreakpoint(void* ExceptionData)
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -500,6 +512,7 @@ static void cbException(EXCEPTION_DEBUG_INFO* ExceptionData)
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -510,23 +523,24 @@ static void cbException(EXCEPTION_DEBUG_INFO* ExceptionData)
SetContextData(UE_CIP, (uint)ExceptionData->ExceptionRecord.ExceptionAddress);
}
char msg[1024]="";
if(ExceptionData->dwFirstChance) //first chance exception
{
sprintf(msg, "first chance exception on "fhex" (%.8X)!", addr, ExceptionData->ExceptionRecord.ExceptionCode);
dprintf("first chance exception on "fhex" (%.8X)!\n", addr, ExceptionData->ExceptionRecord.ExceptionCode);
SetNextDbgContinueStatus(DBG_EXCEPTION_NOT_HANDLED);
if(bSkipExceptions)
return;
}
else //lock the exception
{
sprintf(msg, "last chance exception on "fhex" (%.8X)!", addr, ExceptionData->ExceptionRecord.ExceptionCode);
dprintf("last chance exception on "fhex" (%.8X)!\n", addr, ExceptionData->ExceptionRecord.ExceptionCode);
SetNextDbgContinueStatus(DBG_CONTINUE);
}
dputs(msg);
DebugUpdateGui(GetContextData(UE_CIP));
GuiSetDebugState(paused);
//lock
lock(WAITID_RUN);
bSkipExceptions=false;
PLUG_CB_PAUSEDEBUG pauseInfo;
pauseInfo.reserved=0;
plugincbcall(CB_PAUSEDEBUG, &pauseInfo);
@ -534,11 +548,11 @@ static void cbException(EXCEPTION_DEBUG_INFO* ExceptionData)
wait(WAITID_RUN);
}
static DWORD WINAPI threadDebugLoop(void* lpParameter)
{
//initialize
bIsAttached=false;
bSkipExceptions=false;
INIT_STRUCT* init=(INIT_STRUCT*)lpParameter;
bFileIsDll=IsFileDLL(init->exe, 0);
pDebuggedEntry=GetPE32Data(init->exe, 0, UE_OEP);
@ -703,6 +717,13 @@ CMDRESULT cbDebugRun(int argc, char* argv[])
return STATUS_CONTINUE;
}
CMDRESULT cbDebugErun(int argc, char* argv[])
{
if(waitislocked(WAITID_RUN))
bSkipExceptions=true;
return cbDebugRun(argc, argv);
}
CMDRESULT cbDebugSetBPXOptions(int argc, char* argv[])
{
char argtype[deflen]="";
@ -992,6 +1013,12 @@ CMDRESULT cbDebugStepInto(int argc, char* argv[])
return cbDebugRun(argc, argv);
}
CMDRESULT cbDebugeStepInto(int argc, char* argv[])
{
bSkipExceptions=true;
return cbDebugStepInto(argc, argv);
}
CMDRESULT cbDebugStepOver(int argc, char* argv[])
{
StepOver((void*)cbStep);
@ -999,6 +1026,12 @@ CMDRESULT cbDebugStepOver(int argc, char* argv[])
return cbDebugRun(argc, argv);
}
CMDRESULT cbDebugeStepOver(int argc, char* argv[])
{
bSkipExceptions=true;
return cbDebugStepOver(argc, argv);
}
CMDRESULT cbDebugSingleStep(int argc, char* argv[])
{
char arg1[deflen]="";
@ -1008,12 +1041,17 @@ CMDRESULT cbDebugSingleStep(int argc, char* argv[])
if(!valfromstring(arg1, &stepcount, 0, 0, true, 0))
stepcount=1;
}
SingleStep((DWORD)stepcount, (void*)cbStep);
isStepping=true;
return cbDebugRun(argc, argv);
}
CMDRESULT cbDebugeSingleStep(int argc, char* argv[])
{
bSkipExceptions=true;
return cbDebugSingleStep(argc, argv);
}
CMDRESULT cbDebugHide(int argc, char* argv[])
{
if(HideDebugger(fdProcessInfo->hProcess, UE_HIDE_BASIC))
@ -1161,6 +1199,12 @@ CMDRESULT cbDebugRtr(int argc, char* argv[])
return STATUS_CONTINUE;
}
CMDRESULT cbDebugeRtr(int argc, char* argv[])
{
bSkipExceptions=true;
return cbDebugRtr(argc, argv);
}
CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[])
{
char arg1[deflen]=""; //addr
@ -1463,6 +1507,7 @@ static void cbAttachDebugger()
static DWORD WINAPI threadAttachLoop(void* lpParameter)
{
bIsAttached=true;
bSkipExceptions=false;
uint pid=(uint)lpParameter;
static PROCESS_INFORMATION pi_attached;
fdProcessInfo=&pi_attached;

View File

@ -19,10 +19,12 @@ void dbgdisablebpx();
void dbgenablebpx();
bool dbgisrunning();
void DebugUpdateGui(uint disasm_addr);
void dbgsetskipexceptions(bool skip);
//callbacks
CMDRESULT cbDebugInit(int argc, char* argv[]);
CMDRESULT cbStopDebug(int argc, char* argv[]);
CMDRESULT cbDebugRun(int argc, char* argv[]);
CMDRESULT cbDebugErun(int argc, char* argv[]);
CMDRESULT cbDebugSetBPXOptions(int argc, char* argv[]);
CMDRESULT cbDebugSetBPX(int argc, char* argv[]);
CMDRESULT cbDebugDeleteBPX(int argc, char* argv[]);
@ -30,12 +32,16 @@ CMDRESULT cbDebugEnableBPX(int argc, char* argv[]);
CMDRESULT cbDebugDisableBPX(int argc, char* argv[]);
CMDRESULT cbDebugBplist(int argc, char* argv[]);
CMDRESULT cbDebugStepInto(int argc, char* argv[]);
CMDRESULT cbDebugeStepInto(int argc, char* argv[]);
CMDRESULT cbDebugStepOver(int argc, char* argv[]);
CMDRESULT cbDebugeStepOver(int argc, char* argv[]);
CMDRESULT cbDebugSingleStep(int argc, char* argv[]);
CMDRESULT cbDebugeSingleStep(int argc, char* argv[]);
CMDRESULT cbDebugHide(int argc, char* argv[]);
CMDRESULT cbDebugDisasm(int argc, char* argv[]);
CMDRESULT cbDebugSetMemoryBpx(int argc, char* argv[]);
CMDRESULT cbDebugRtr(int argc, char* argv[]);
CMDRESULT cbDebugeRtr(int argc, char* argv[]);
CMDRESULT cbDebugSetHardwareBreakpoint(int argc, char* argv[]);
CMDRESULT cbDebugAlloc(int argc, char* argv[]);
CMDRESULT cbDebugFree(int argc, char* argv[]);

View File

@ -984,13 +984,21 @@ bool valapifromstring(const char* name, uint* value, int* value_size, bool print
uint addrfound[256];
int found=0;
int kernelbase=-1;
if(EnumProcessModules(fdProcessInfo->hProcess, hMods, sizeof(hMods), &cbNeeded))
//explicit API handling
const char* apiname=strstr(name, ":");
if(apiname)
{
for(unsigned int i=0; i<(cbNeeded/sizeof(HMODULE)); i++)
char modname[MAX_MODULE_SIZE]="";
strcpy(modname, name);
modname[apiname-name]=0;
apiname++;
uint modbase=modbasefromname(modname);
char szModName[MAX_PATH];
if(!GetModuleFileNameEx(fdProcessInfo->hProcess, (HMODULE)modbase, szModName, MAX_PATH) and !silent)
dprintf("could not get filename of module "fhex"\n", modbase);
else
{
char szModName[MAX_PATH];
if(!GetModuleFileNameEx(fdProcessInfo->hProcess, hMods[i], szModName, MAX_PATH) and !silent)
dprintf("could not get filename of module "fhex"\n", hMods[i]);
char szBaseName[256]="";
int len=strlen(szModName);
while(szModName[len]!='\\')
@ -999,14 +1007,51 @@ bool valapifromstring(const char* name, uint* value, int* value_size, bool print
HMODULE mod=LoadLibraryExA(szModName, 0, DONT_RESOLVE_DLL_REFERENCES|LOAD_LIBRARY_AS_DATAFILE);
if(!mod and !silent)
dprintf("unable to load library %s\n", szBaseName);
uint addr=(uint)GetProcAddress(mod, name);
FreeLibrary(mod);
if(addr)
else
{
if(!_stricmp(szBaseName, "kernelbase") or !_stricmp(szBaseName, "kernelbase.dll"))
kernelbase=found;
addrfound[found]=ImporterGetRemoteAPIAddressEx(szBaseName, (char*)name);
found++;
uint addr=(uint)GetProcAddress(mod, apiname);
FreeLibrary(mod);
if(addr) //found!
{
if(value_size)
*value_size=sizeof(uint);
if(hexonly)
*hexonly=true;
*value=ImporterGetRemoteAPIAddressEx(szBaseName, (char*)apiname);
return true;
}
}
}
}
if(EnumProcessModules(fdProcessInfo->hProcess, hMods, sizeof(hMods), &cbNeeded))
{
for(unsigned int i=0; i<(cbNeeded/sizeof(HMODULE)); i++)
{
char szModName[MAX_PATH];
if(!GetModuleFileNameEx(fdProcessInfo->hProcess, hMods[i], szModName, MAX_PATH) and !silent)
dprintf("could not get filename of module "fhex"\n", hMods[i]);
else
{
char szBaseName[256]="";
int len=strlen(szModName);
while(szModName[len]!='\\')
len--;
strcpy(szBaseName, szModName+len+1);
HMODULE mod=LoadLibraryExA(szModName, 0, DONT_RESOLVE_DLL_REFERENCES|LOAD_LIBRARY_AS_DATAFILE);
if(!mod and !silent)
dprintf("unable to load library %s\n", szBaseName);
else
{
uint addr=(uint)GetProcAddress(mod, name);
FreeLibrary(mod);
if(addr)
{
if(!_stricmp(szBaseName, "kernelbase") or !_stricmp(szBaseName, "kernelbase.dll"))
kernelbase=found;
addrfound[found]=ImporterGetRemoteAPIAddressEx(szBaseName, (char*)name);
found++;
}
}
}
}
}

View File

@ -44,6 +44,7 @@ static void registercommands()
cmdnew(cmd, "InitDebug\1init\1initdbg", cbDebugInit, false); //init debugger arg1:exefile,[arg2:commandline]
cmdnew(cmd, "StopDebug\1stop\1dbgstop", cbStopDebug, true); //stop debugger
cmdnew(cmd, "run\1go\1r\1g", cbDebugRun, true); //unlock WAITID_RUN
cmdnew(cmd, "erun\1egun\1er\1eg", cbDebugErun, true); //run + skip first chance exceptions
cmdnew(cmd, "SetBPXOptions\1bptype", cbDebugSetBPXOptions, false); //breakpoint type
cmdnew(cmd, "SetBPX\1bp\1bpx", cbDebugSetBPX, true); //breakpoint
cmdnew(cmd, "DeleteBPX\1bpc\1bc", cbDebugDeleteBPX, true); //breakpoint delete
@ -51,13 +52,17 @@ static void registercommands()
cmdnew(cmd, "DisableBPX\1bpd\1bd", cbDebugDisableBPX, true); //breakpoint disable
cmdnew(cmd, "bplist", cbDebugBplist, true); //breakpoint list
cmdnew(cmd, "StepInto\1sti", cbDebugStepInto, true); //StepInto
cmdnew(cmd, "eStepInto\1esti", cbDebugeStepInto, true); //StepInto + skip first chance exceptions
cmdnew(cmd, "StepOver\1step\1sto\1st", cbDebugStepOver, true); //StepOver
cmdnew(cmd, "eStepOver\1estep\1esto\1est", cbDebugeStepOver, true); //StepOver + skip first chance exceptions
cmdnew(cmd, "SingleStep\1sstep\1sst", cbDebugSingleStep, true); //SingleStep arg1:count
cmdnew(cmd, "eSingleStep\1esstep\1esst", cbDebugeSingleStep, true); //SingleStep arg1:count + skip first chance exceptions
cmdnew(cmd, "HideDebugger\1dbh\1hide", cbDebugHide, true); //HideDebugger
cmdnew(cmd, "disasm\1dis\1d", cbDebugDisasm, true); //doDisasm
cmdnew(cmd, "SetMemoryBPX\1membp\1bpm", cbDebugSetMemoryBpx, true); //SetMemoryBPX
cmdnew(cmd, "chd", cbInstrChd, false); //Change directory
cmdnew(cmd, "rtr", cbDebugRtr, true); //rtr
cmdnew(cmd, "StepOut\1rtr", cbDebugRtr, true); //rtr
cmdnew(cmd, "eStepOut\1ertr", cbDebugeRtr, true); //rtr + skip first chance exceptions
cmdnew(cmd, "SetHardwareBreakpoint\1bph\1bphws", cbDebugSetHardwareBreakpoint, true); //hardware breakpoint
cmdnew(cmd, "alloc", cbDebugAlloc, true); //allocate memory
cmdnew(cmd, "free", cbDebugFree, true); //free memory

View File

@ -416,6 +416,14 @@ void AbstractTableView::keyPressEvent(QKeyEvent* event)
{
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepAdd);
}
else if(wKey == Qt::Key_PageUp)
{
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepSub);
}
else if(wKey == Qt::Key_PageDown)
{
verticalScrollBar()->triggerAction(QAbstractSlider::SliderPageStepAdd);
}
}
@ -451,10 +459,10 @@ void AbstractTableView::vertSliderActionSlot(int action)
wDelta = -1;
break;
case QAbstractSlider::SliderPageStepAdd:
wDelta = 3;
wDelta = 30;
break;
case QAbstractSlider::SliderPageStepSub:
wDelta = -3;
wDelta = -30;
break;
case QAbstractSlider::SliderToMinimum:
case QAbstractSlider::SliderToMaximum:

View File

@ -98,6 +98,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
connect(ui->actionScylla,SIGNAL(triggered()),this,SLOT(startScylla()));
connect(ui->actionRestart,SIGNAL(triggered()),this,SLOT(restartDebugging()));
connect(ui->actionBreakpoints,SIGNAL(triggered()),this,SLOT(displayBreakpointWidget()));
connect(ui->actioneStepOver,SIGNAL(triggered()),this,SLOT(execeStepOver()));
connect(ui->actioneStepInto,SIGNAL(triggered()),this,SLOT(execeStepInto()));
connect(ui->actioneRun,SIGNAL(triggered()),this,SLOT(execeRun()));
connect(ui->actioneRtr,SIGNAL(triggered()),this,SLOT(execeRtr()));
connect(Bridge::getBridge(), SIGNAL(updateWindowTitle(QString)), this, SLOT(updateWindowTitleSlot(QString)));
connect(Bridge::getBridge(), SIGNAL(updateCPUTitle(QString)), this, SLOT(updateCPUTitleSlot(QString)));
@ -272,3 +278,22 @@ void MainWindow::updateCPUTitleSlot(QString modname)
else
mSubWindow->setWindowTitle(QString("CPU"));
}
void MainWindow::execeStepOver()
{
DbgCmdExec("eStepOver");
}
void MainWindow::execeStepInto()
{
DbgCmdExec("eStepInto");
}
void MainWindow::execeRun()
{
DbgCmdExec("erun");
}
void MainWindow::execeRtr()
{
DbgCmdExec("ertr");
}

View File

@ -44,6 +44,10 @@ public slots:
void displayBreakpointWidget();
void updateWindowTitleSlot(QString filename);
void updateCPUTitleSlot(QString modname);
void execeStepOver();
void execeStepInto();
void execeRun();
void execeRtr();
private slots:
void on_actionGoto_triggered();

View File

@ -43,13 +43,17 @@
<string>Debug</string>
</property>
<addaction name="actionRun"/>
<addaction name="actioneRun"/>
<addaction name="actionPause"/>
<addaction name="actionRestart"/>
<addaction name="actionClose"/>
<addaction name="separator"/>
<addaction name="actionStepInto"/>
<addaction name="actioneStepInto"/>
<addaction name="actionStepOver"/>
<addaction name="actioneStepOver"/>
<addaction name="actionRtr"/>
<addaction name="actioneRtr"/>
<addaction name="separator"/>
<addaction name="actionCommand"/>
</widget>
@ -314,6 +318,54 @@
<string>Alt+B</string>
</property>
</action>
<action name="actioneStepInto">
<property name="icon">
<iconset resource="../../resource.qrc">
<normaloff>:/icons/images/arrow-step-into.png</normaloff>:/icons/images/arrow-step-into.png</iconset>
</property>
<property name="text">
<string>Step into (skip exceptions)</string>
</property>
<property name="shortcut">
<string>Shift+F7</string>
</property>
</action>
<action name="actioneStepOver">
<property name="icon">
<iconset resource="../../resource.qrc">
<normaloff>:/icons/images/arrow-step-over.png</normaloff>:/icons/images/arrow-step-over.png</iconset>
</property>
<property name="text">
<string>Step over (skip exceptions)</string>
</property>
<property name="shortcut">
<string>Shift+F8</string>
</property>
</action>
<action name="actioneRun">
<property name="icon">
<iconset resource="../../resource.qrc">
<normaloff>:/icons/images/arrow-run.png</normaloff>:/icons/images/arrow-run.png</iconset>
</property>
<property name="text">
<string>Run (skip exceptions)</string>
</property>
<property name="shortcut">
<string>Shift+F9</string>
</property>
</action>
<action name="actioneRtr">
<property name="icon">
<iconset resource="../../resource.qrc">
<normaloff>:/icons/images/arrow-step-rtr.png</normaloff>:/icons/images/arrow-step-rtr.png</iconset>
</property>
<property name="text">
<string>Execute till return (skip exceptions)</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+F9</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>