diff --git a/help/AttachDebugger_attach.htm b/help/AttachDebugger_attach.htm new file mode 100644 index 00000000..7d9ee7e0 --- /dev/null +++ b/help/AttachDebugger_attach.htm @@ -0,0 +1,25 @@ + + + +AttachDebugger/attach + + + + + + + +

AttachDebugger[,attach]
Attach the +debugger to a running process.

+

arguments
  arg1: Process Identifier +(PID) of the running process.

+

result
This command will give control back to the user after +the system breakpoint is reached. It will +set $pid and $hp/$hProcess variables. +

\ No newline at end of file diff --git a/help/Calculations.htm b/help/Calculations.htm index 383bd7bd..f223070e 100644 --- a/help/Calculations.htm +++ b/help/Calculations.htm @@ -27,7 +27,7 @@ use one.

2:not: '~' The not operator can be used before a number of a variable, like in C.

3:muliplication/devision: '*' = regular -multiplication (signed/unsigned), '#' = get the higher part of the +multiplication (signed/unsigned), '$' = get the higher part of the multiplication, '/' = regular devision (signed/unsigned, devide by zero=error) and '%' = get the modulo (remainder) of the devision.

4:addition/substraction @@ -47,4 +47,4 @@ syntax:

can be any register, flag, variable or memory location. 'b' can be anything that is recognized as a mathmatical input.

a++/a--: 'a' can be any register, flag, variable or memory -location.

\ No newline at end of file +location.

\ No newline at end of file diff --git a/help/General_Purpose.htm b/help/General_Purpose.htm new file mode 100644 index 00000000..09e5561d --- /dev/null +++ b/help/General_Purpose.htm @@ -0,0 +1,21 @@ + + + +General Purpose + + + + + + + +

General Purpose
This section contains various commands that are +used for calculations etc.

+

 

+ \ No newline at end of file diff --git a/help/InitDebug_initdbg_init.htm b/help/InitDebug_initdbg_init.htm index ce734c83..a3e07270 100644 --- a/help/InitDebug_initdbg_init.htm +++ b/help/InitDebug_initdbg_init.htm @@ -35,7 +35,7 @@ called to retrieve a full path. Use quotation marks to include spaces in your pa

result
This command will give control back to the user after the system breakpoint is reached. It will set -$pid and $hp/$hProcessvariables. +$pid and $hp/$hProcess variables. -

\ No newline at end of file +

\ No newline at end of file diff --git a/help/add.htm b/help/add.htm new file mode 100644 index 00000000..d01c8a0c --- /dev/null +++ b/help/add.htm @@ -0,0 +1,33 @@ + + + +add + + + + + + + +

add
Add two +values.

+

+ + + arguments + +
  arg1: +Destination.

+

  +arg2: Source. +

+result
+
This command does not set +any result variables.

+
\ No newline at end of file diff --git a/help/and.htm b/help/and.htm new file mode 100644 index 00000000..d010fc17 --- /dev/null +++ b/help/and.htm @@ -0,0 +1,34 @@ + + + +and + + + + + + + +

and
Binary AND +two values.

+

+ + +arguments + + +
  arg1: +Destination.

+

+  + arg2: Source.

+ +

+result
This command does not set +any result variables.

\ No newline at end of file diff --git a/help/bookmark_bookmarkset.htm b/help/bookmark_bookmarkset.htm new file mode 100644 index 00000000..5bfa612d --- /dev/null +++ b/help/bookmark_bookmarkset.htm @@ -0,0 +1,28 @@ + + + +bookmark/bookmarkset + + + + + + + +

bookmark[,bookmarkset]
Set a +bookmark.

+

arguments
  arg1: Address to set the bookmark at (preferably +inside a module).

+

+ +result + + +
This command does not set any result +variables.

\ No newline at end of file diff --git a/help/bookmarkc_bookmarkdel.htm b/help/bookmarkc_bookmarkdel.htm new file mode 100644 index 00000000..b49b0a24 --- /dev/null +++ b/help/bookmarkc_bookmarkdel.htm @@ -0,0 +1,23 @@ + + + +bookmarkc/bookmarkdel + + + + + + + +

bookmarkc[,bookmarkdel]
Delete a +bookmark.

+

arguments
  arg1: Address of the +bookmark to delete.

+

result
This command does not set any result +variables.

\ No newline at end of file diff --git a/help/dec.htm b/help/dec.htm new file mode 100644 index 00000000..0ac58e5a --- /dev/null +++ b/help/dec.htm @@ -0,0 +1,23 @@ + + + +dec + + + + + + + +

dec
Decrease a +value.

+

arguments
  arg1: +Destination.

+

result
This command does not set +any result variables.

diff --git a/help/div.htm b/help/div.htm new file mode 100644 index 00000000..f515e959 --- /dev/null +++ b/help/div.htm @@ -0,0 +1,25 @@ + + + +div + + + + + + + +

div
Devide two +values.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

\ No newline at end of file diff --git a/help/gpa.htm b/help/gpa.htm new file mode 100644 index 00000000..065f330e --- /dev/null +++ b/help/gpa.htm @@ -0,0 +1,35 @@ + + + +gpa + + + + + + + +

gpa
Get the address of an export +inside a DLL.

+

arguments
  arg1: Export +name.

+

[arg2]: DLL name.

+

+ + + result +
+ + +The $result variable is set to the +export address. When the export is not found, $result + will be set to +0. + +

\ No newline at end of file diff --git a/help/inc.htm b/help/inc.htm new file mode 100644 index 00000000..ad1f10d7 --- /dev/null +++ b/help/inc.htm @@ -0,0 +1,23 @@ + + + +inc + + + + + + + +

inc
Increase a +value.

+

arguments
  arg1: +Destination.

+

result
This command does not set +any result variables.

diff --git a/help/msg.htm b/help/msg.htm new file mode 100644 index 00000000..c9233e23 --- /dev/null +++ b/help/msg.htm @@ -0,0 +1,22 @@ + + + +msg + + + + + + + +

msg
Display a message +box.

+

arguments
 arg1: Message box text.

+

result
This command does not set any +variables.

diff --git a/help/msgyn.htm b/help/msgyn.htm new file mode 100644 index 00000000..4d9a4bd7 --- /dev/null +++ b/help/msgyn.htm @@ -0,0 +1,26 @@ + + + +msgyn + + + + + + + +

msgyn
Display a message box, asking the user to +answer yes or no.

+

arguments
 arg1: Message box text.

+

+ +result +
+
The $result variable will be set to 1 when the +user answered yes. Otherwise it's set to 0.

\ No newline at end of file diff --git a/help/mul.htm b/help/mul.htm new file mode 100644 index 00000000..da4bcc4c --- /dev/null +++ b/help/mul.htm @@ -0,0 +1,25 @@ + + + +mul + + + + + + + +

mul
Multiply two +values.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/neg.htm b/help/neg.htm new file mode 100644 index 00000000..14194363 --- /dev/null +++ b/help/neg.htm @@ -0,0 +1,23 @@ + + + +neg + + + + + + + +

neg
Negate a +value.

+

arguments
  arg1: +Destination.

+

result
This command does not set +any result variables.

diff --git a/help/not.htm b/help/not.htm new file mode 100644 index 00000000..9972d34d --- /dev/null +++ b/help/not.htm @@ -0,0 +1,23 @@ + + + +not + + + + + + + +

not
Binary NOT a +value.

+

arguments
  arg1: +Destination.

+

result
This command does not set +any result variables.

diff --git a/help/or.htm b/help/or.htm new file mode 100644 index 00000000..45e4dbe9 --- /dev/null +++ b/help/or.htm @@ -0,0 +1,25 @@ + + + +or + + + + + + + +

or
Binary OR two +values.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/rol.htm b/help/rol.htm new file mode 100644 index 00000000..316b8444 --- /dev/null +++ b/help/rol.htm @@ -0,0 +1,25 @@ + + + +rol + + + + + + + +

rol
Binary ROL a +value.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/ror.htm b/help/ror.htm new file mode 100644 index 00000000..a77d6817 --- /dev/null +++ b/help/ror.htm @@ -0,0 +1,25 @@ + + + +ror + + + + + + + +

ror
Binary ROR a +value.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/scriptload.htm b/help/scriptload.htm new file mode 100644 index 00000000..e275e9bc --- /dev/null +++ b/help/scriptload.htm @@ -0,0 +1,22 @@ + + + +scriptload + + + + + + + +

scriptload
Load a script +file.

+

arguments
 arg1: Script file to load.

+

result
This command does not set any +variables.

diff --git a/help/shl.htm b/help/shl.htm new file mode 100644 index 00000000..3bf4b6d5 --- /dev/null +++ b/help/shl.htm @@ -0,0 +1,25 @@ + + + +shl + + + + + + + +

shl
Binary SHL a +value.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/shr.htm b/help/shr.htm new file mode 100644 index 00000000..13593cb4 --- /dev/null +++ b/help/shr.htm @@ -0,0 +1,25 @@ + + + +shr + + + + + + + +

shr
Binary SHR a +value.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/sub.htm b/help/sub.htm new file mode 100644 index 00000000..65e8b3f4 --- /dev/null +++ b/help/sub.htm @@ -0,0 +1,25 @@ + + + +sub + + + + + + + +

sub
Subtract two +values.

+

arguments
  arg1: +Destination.

+

  +arg2: Source.

+

result
This command does not set +any result variables.

diff --git a/help/test.htm b/help/test.htm new file mode 100644 index 00000000..c2d4e708 --- /dev/null +++ b/help/test.htm @@ -0,0 +1,28 @@ + + + +test + + + + + + + +

test
Binary TEST a +value.

+

arguments
  arg1: Value to +test.

+

  +arg2: Tester.

+

result
This command sets +the internal variables $_EZ_FLAG and $_BS_FLAG. $_EZ_FLAG is set to 1 when +arg1&arg2= += 0. $_BS_FLAG is always set +to 0.

\ No newline at end of file diff --git a/help/x64_dbg.wcp b/help/x64_dbg.wcp index df370e34..1c04addf 100644 --- a/help/x64_dbg.wcp +++ b/help/x64_dbg.wcp @@ -96,7 +96,7 @@ Font= DefaultTopic=Introduction.htm [TOPICS] -TitleList=74 +TitleList=97 TitleList.Title.0=Introduction TitleList.Level.0=0 TitleList.Url.0=Introduction.htm @@ -155,7 +155,7 @@ TitleList.Status.5=0 TitleList.Keywords.5= TitleList.ContextNumber.5=1040 TitleList.ApplyTemp.5=0 -TitleList.Expanded.5=0 +TitleList.Expanded.5=1 TitleList.Kind.5=0 TitleList.Title.6=InitDebug/initdbg/init TitleList.Level.6=2 @@ -177,203 +177,203 @@ TitleList.ContextNumber.7=1044 TitleList.ApplyTemp.7=0 TitleList.Expanded.7=0 TitleList.Kind.7=0 -TitleList.Title.8=run/go/r/g +TitleList.Title.8=AttachDebugger/attach TitleList.Level.8=2 -TitleList.Url.8=run_go_r_g.htm +TitleList.Url.8=AttachDebugger_attach.htm TitleList.Icon.8=0 TitleList.Status.8=0 TitleList.Keywords.8= -TitleList.ContextNumber.8=1013 +TitleList.ContextNumber.8=1079 TitleList.ApplyTemp.8=0 TitleList.Expanded.8=0 TitleList.Kind.8=0 -TitleList.Title.9=erun/ego/er/eg +TitleList.Title.9=run/go/r/g TitleList.Level.9=2 -TitleList.Url.9=erun_ego_er_eg.htm +TitleList.Url.9=run_go_r_g.htm TitleList.Icon.9=0 TitleList.Status.9=0 TitleList.Keywords.9= -TitleList.ContextNumber.9=1065 +TitleList.ContextNumber.9=1013 TitleList.ApplyTemp.9=0 TitleList.Expanded.9=0 TitleList.Kind.9=0 -TitleList.Title.10=pause +TitleList.Title.10=erun/ego/er/eg TitleList.Level.10=2 -TitleList.Url.10=pause.htm +TitleList.Url.10=erun_ego_er_eg.htm TitleList.Icon.10=0 TitleList.Status.10=0 TitleList.Keywords.10= -TitleList.ContextNumber.10=1045 +TitleList.ContextNumber.10=1065 TitleList.ApplyTemp.10=0 TitleList.Expanded.10=0 TitleList.Kind.10=0 -TitleList.Title.11=StepInto/sti +TitleList.Title.11=pause TitleList.Level.11=2 -TitleList.Url.11=StepInto.htm +TitleList.Url.11=pause.htm TitleList.Icon.11=0 TitleList.Status.11=0 TitleList.Keywords.11= -TitleList.ContextNumber.11=1021 +TitleList.ContextNumber.11=1045 TitleList.ApplyTemp.11=0 TitleList.Expanded.11=0 TitleList.Kind.11=0 -TitleList.Title.12=eStepInto/esti +TitleList.Title.12=StepInto/sti TitleList.Level.12=2 -TitleList.Url.12=eStepInto_esti.htm +TitleList.Url.12=StepInto.htm TitleList.Icon.12=0 TitleList.Status.12=0 TitleList.Keywords.12= -TitleList.ContextNumber.12=1064 +TitleList.ContextNumber.12=1021 TitleList.ApplyTemp.12=0 TitleList.Expanded.12=0 TitleList.Kind.12=0 -TitleList.Title.13=StepOver/step/sto/st +TitleList.Title.13=eStepInto/esti TitleList.Level.13=2 -TitleList.Url.13=StepOver.htm +TitleList.Url.13=eStepInto_esti.htm TitleList.Icon.13=0 TitleList.Status.13=0 TitleList.Keywords.13= -TitleList.ContextNumber.13=1022 +TitleList.ContextNumber.13=1064 TitleList.ApplyTemp.13=0 TitleList.Expanded.13=0 TitleList.Kind.13=0 -TitleList.Title.14=eStepOver/estep/esto/est +TitleList.Title.14=StepOver/step/sto/st TitleList.Level.14=2 -TitleList.Url.14=eStepOver_estep_esto_est.htm +TitleList.Url.14=StepOver.htm TitleList.Icon.14=0 TitleList.Status.14=0 TitleList.Keywords.14= -TitleList.ContextNumber.14=1066 +TitleList.ContextNumber.14=1022 TitleList.ApplyTemp.14=0 TitleList.Expanded.14=0 TitleList.Kind.14=0 -TitleList.Title.15=SingleStep/sstep/sst +TitleList.Title.15=eStepOver/estep/esto/est TitleList.Level.15=2 -TitleList.Url.15=SingleStep.htm +TitleList.Url.15=eStepOver_estep_esto_est.htm TitleList.Icon.15=0 TitleList.Status.15=0 TitleList.Keywords.15= -TitleList.ContextNumber.15=1023 +TitleList.ContextNumber.15=1066 TitleList.ApplyTemp.15=0 TitleList.Expanded.15=0 TitleList.Kind.15=0 -TitleList.Title.16=eSingleStep/esstep/esst +TitleList.Title.16=SingleStep/sstep/sst TitleList.Level.16=2 -TitleList.Url.16=eSingleStep_esstep_esst.htm +TitleList.Url.16=SingleStep.htm TitleList.Icon.16=0 TitleList.Status.16=0 TitleList.Keywords.16= -TitleList.ContextNumber.16=1067 +TitleList.ContextNumber.16=1023 TitleList.ApplyTemp.16=0 TitleList.Expanded.16=0 TitleList.Kind.16=0 -TitleList.Title.17=StepOut/rtr +TitleList.Title.17=eSingleStep/esstep/esst TitleList.Level.17=2 -TitleList.Url.17=rtr.htm +TitleList.Url.17=eSingleStep_esstep_esst.htm TitleList.Icon.17=0 TitleList.Status.17=0 TitleList.Keywords.17= -TitleList.ContextNumber.17=1028 +TitleList.ContextNumber.17=1067 TitleList.ApplyTemp.17=0 TitleList.Expanded.17=0 TitleList.Kind.17=0 -TitleList.Title.18=eStepOut/ertr +TitleList.Title.18=StepOut/rtr TitleList.Level.18=2 -TitleList.Url.18=eStepOut_ertr.htm +TitleList.Url.18=rtr.htm TitleList.Icon.18=0 TitleList.Status.18=0 TitleList.Keywords.18= -TitleList.ContextNumber.18=1068 +TitleList.ContextNumber.18=1028 TitleList.ApplyTemp.18=0 TitleList.Expanded.18=0 TitleList.Kind.18=0 -TitleList.Title.19=Breakpoints -TitleList.Level.19=1 -TitleList.Url.19=Breakpoints.htm +TitleList.Title.19=eStepOut/ertr +TitleList.Level.19=2 +TitleList.Url.19=eStepOut_ertr.htm TitleList.Icon.19=0 TitleList.Status.19=0 TitleList.Keywords.19= -TitleList.ContextNumber.19=1019 +TitleList.ContextNumber.19=1068 TitleList.ApplyTemp.19=0 TitleList.Expanded.19=0 TitleList.Kind.19=0 -TitleList.Title.20=bplist -TitleList.Level.20=2 -TitleList.Url.20=bplist.htm +TitleList.Title.20=Breakpoints +TitleList.Level.20=1 +TitleList.Url.20=Breakpoints.htm TitleList.Icon.20=0 TitleList.Status.20=0 TitleList.Keywords.20= -TitleList.ContextNumber.20=1015 +TitleList.ContextNumber.20=1019 TitleList.ApplyTemp.20=0 -TitleList.Expanded.20=0 +TitleList.Expanded.20=1 TitleList.Kind.20=0 -TitleList.Title.21=SetBPXOptions/bptype +TitleList.Title.21=bplist TitleList.Level.21=2 -TitleList.Url.21=SetBPXOptions_bptype.htm +TitleList.Url.21=bplist.htm TitleList.Icon.21=0 TitleList.Status.21=0 TitleList.Keywords.21= -TitleList.ContextNumber.21=1018 +TitleList.ContextNumber.21=1015 TitleList.ApplyTemp.21=0 TitleList.Expanded.21=0 TitleList.Kind.21=0 -TitleList.Title.22=SetBPX/bp/bpx +TitleList.Title.22=SetBPXOptions/bptype TitleList.Level.22=2 -TitleList.Url.22=SetBPX_bp_bpx.htm +TitleList.Url.22=SetBPXOptions_bptype.htm TitleList.Icon.22=0 TitleList.Status.22=0 TitleList.Keywords.22= -TitleList.ContextNumber.22=1012 +TitleList.ContextNumber.22=1018 TitleList.ApplyTemp.22=0 TitleList.Expanded.22=0 TitleList.Kind.22=0 -TitleList.Title.23=DeleteBPX/bpc/bc +TitleList.Title.23=SetBPX/bp/bpx TitleList.Level.23=2 -TitleList.Url.23=DeleteBPX_bpc_bc.htm +TitleList.Url.23=SetBPX_bp_bpx.htm TitleList.Icon.23=0 TitleList.Status.23=0 TitleList.Keywords.23= -TitleList.ContextNumber.23=1017 +TitleList.ContextNumber.23=1012 TitleList.ApplyTemp.23=0 TitleList.Expanded.23=0 TitleList.Kind.23=0 -TitleList.Title.24=EnableBPX/bpe/be +TitleList.Title.24=DeleteBPX/bpc/bc TitleList.Level.24=2 -TitleList.Url.24=EnableBPX_bpe_be.htm +TitleList.Url.24=DeleteBPX_bpc_bc.htm TitleList.Icon.24=0 TitleList.Status.24=0 TitleList.Keywords.24= -TitleList.ContextNumber.24=1014 +TitleList.ContextNumber.24=1017 TitleList.ApplyTemp.24=0 TitleList.Expanded.24=0 TitleList.Kind.24=0 -TitleList.Title.25=DisableBPX/bpd/bd +TitleList.Title.25=EnableBPX/bpe/be TitleList.Level.25=2 -TitleList.Url.25=DisableBPX_bpd_bd.htm +TitleList.Url.25=EnableBPX_bpe_be.htm TitleList.Icon.25=0 TitleList.Status.25=0 TitleList.Keywords.25= -TitleList.ContextNumber.25=1016 +TitleList.ContextNumber.25=1014 TitleList.ApplyTemp.25=0 TitleList.Expanded.25=0 TitleList.Kind.25=0 -TitleList.Title.26=SetHardwareBreakpoint/bph/bphws +TitleList.Title.26=DisableBPX/bpd/bd TitleList.Level.26=2 -TitleList.Url.26=SetHardwareBreakpoint_bph_bphws.htm +TitleList.Url.26=DisableBPX_bpd_bd.htm TitleList.Icon.26=0 TitleList.Status.26=0 TitleList.Keywords.26= -TitleList.ContextNumber.26=1030 +TitleList.ContextNumber.26=1016 TitleList.ApplyTemp.26=0 TitleList.Expanded.26=0 TitleList.Kind.26=0 -TitleList.Title.27=SetMemoryBPX/membp/bpm +TitleList.Title.27=SetHardwareBreakpoint/bph/bphws TitleList.Level.27=2 -TitleList.Url.27=SetMemoryBPX_membp_bpm.htm +TitleList.Url.27=SetHardwareBreakpoint_bph_bphws.htm TitleList.Icon.27=0 TitleList.Status.27=0 TitleList.Keywords.27= -TitleList.ContextNumber.27=1027 +TitleList.ContextNumber.27=1030 TitleList.ApplyTemp.27=0 TitleList.Expanded.27=0 TitleList.Kind.27=0 @@ -387,454 +387,684 @@ TitleList.ContextNumber.28=1048 TitleList.ApplyTemp.28=0 TitleList.Expanded.28=0 TitleList.Kind.28=0 -TitleList.Title.29=DeleteMemoryBPX/membpc/bpmc +TitleList.Title.29=SetMemoryBPX/membp/bpm TitleList.Level.29=2 -TitleList.Url.29=DeleteMemoryBPX_membpc_bpmc.htm +TitleList.Url.29=SetMemoryBPX_membp_bpm.htm TitleList.Icon.29=0 TitleList.Status.29=0 TitleList.Keywords.29= -TitleList.ContextNumber.29=1049 +TitleList.ContextNumber.29=1027 TitleList.ApplyTemp.29=0 TitleList.Expanded.29=0 TitleList.Kind.29=0 -TitleList.Title.30=Variables -TitleList.Level.30=1 -TitleList.Url.30=Variables_section.htm +TitleList.Title.30=DeleteMemoryBPX/membpc/bpmc +TitleList.Level.30=2 +TitleList.Url.30=DeleteMemoryBPX_membpc_bpmc.htm TitleList.Icon.30=0 TitleList.Status.30=0 TitleList.Keywords.30= -TitleList.ContextNumber.30=1041 +TitleList.ContextNumber.30=1049 TitleList.ApplyTemp.30=0 TitleList.Expanded.30=0 TitleList.Kind.30=0 -TitleList.Title.31=var/varnew -TitleList.Level.31=2 -TitleList.Url.31=var_varnew.htm +TitleList.Title.31=Variables +TitleList.Level.31=1 +TitleList.Url.31=Variables_section.htm TitleList.Icon.31=0 TitleList.Status.31=0 TitleList.Keywords.31= -TitleList.ContextNumber.31=1006 +TitleList.ContextNumber.31=1041 TitleList.ApplyTemp.31=0 TitleList.Expanded.31=0 TitleList.Kind.31=0 -TitleList.Title.32=vardel +TitleList.Title.32=var/varnew TitleList.Level.32=2 -TitleList.Url.32=vardel.htm +TitleList.Url.32=var_varnew.htm TitleList.Icon.32=0 TitleList.Status.32=0 TitleList.Keywords.32= -TitleList.ContextNumber.32=1007 +TitleList.ContextNumber.32=1006 TitleList.ApplyTemp.32=0 TitleList.Expanded.32=0 TitleList.Kind.32=0 -TitleList.Title.33=varlist +TitleList.Title.33=vardel TitleList.Level.33=2 -TitleList.Url.33=varlist.htm +TitleList.Url.33=vardel.htm TitleList.Icon.33=0 TitleList.Status.33=0 TitleList.Keywords.33= -TitleList.ContextNumber.33=1010 +TitleList.ContextNumber.33=1007 TitleList.ApplyTemp.33=0 TitleList.Expanded.33=0 TitleList.Kind.33=0 -TitleList.Title.34=mov/set +TitleList.Title.34=varlist TitleList.Level.34=2 -TitleList.Url.34=mov_set.htm +TitleList.Url.34=varlist.htm TitleList.Icon.34=0 TitleList.Status.34=0 TitleList.Keywords.34= -TitleList.ContextNumber.34=1008 +TitleList.ContextNumber.34=1010 TitleList.ApplyTemp.34=0 TitleList.Expanded.34=0 TitleList.Kind.34=0 -TitleList.Title.35=Misc -TitleList.Level.35=1 -TitleList.Url.35=Misc.htm +TitleList.Title.35=mov/set +TitleList.Level.35=2 +TitleList.Url.35=mov_set.htm TitleList.Icon.35=0 TitleList.Status.35=0 TitleList.Keywords.35= -TitleList.ContextNumber.35=1004 +TitleList.ContextNumber.35=1008 TitleList.ApplyTemp.35=0 -TitleList.Expanded.35=1 +TitleList.Expanded.35=0 TitleList.Kind.35=0 -TitleList.Title.36=strlen/charcount/ccount -TitleList.Level.36=2 -TitleList.Url.36=strlen_charcount_ccount.htm +TitleList.Title.36=Misc +TitleList.Level.36=1 +TitleList.Url.36=Misc.htm TitleList.Icon.36=0 TitleList.Status.36=0 TitleList.Keywords.36= -TitleList.ContextNumber.36=1005 +TitleList.ContextNumber.36=1004 TitleList.ApplyTemp.36=0 TitleList.Expanded.36=0 TitleList.Kind.36=0 -TitleList.Title.37=cls/lc/lclr +TitleList.Title.37=strlen/charcount/ccount TitleList.Level.37=2 -TitleList.Url.37=cls.htm +TitleList.Url.37=strlen_charcount_ccount.htm TitleList.Icon.37=0 TitleList.Status.37=0 TitleList.Keywords.37= -TitleList.ContextNumber.37=1009 +TitleList.ContextNumber.37=1005 TitleList.ApplyTemp.37=0 TitleList.Expanded.37=0 TitleList.Kind.37=0 -TitleList.Title.38=chd +TitleList.Title.38=cls/lc/lclr TitleList.Level.38=2 -TitleList.Url.38=chd.htm +TitleList.Url.38=cls.htm TitleList.Icon.38=0 TitleList.Status.38=0 TitleList.Keywords.38= -TitleList.ContextNumber.38=1029 +TitleList.ContextNumber.38=1009 TitleList.ApplyTemp.38=0 TitleList.Expanded.38=0 TitleList.Kind.38=0 -TitleList.Title.39=disasm/dis/d +TitleList.Title.39=chd TitleList.Level.39=2 -TitleList.Url.39=disasm_dis_d.htm +TitleList.Url.39=chd.htm TitleList.Icon.39=0 TitleList.Status.39=0 TitleList.Keywords.39= -TitleList.ContextNumber.39=1026 +TitleList.ContextNumber.39=1029 TitleList.ApplyTemp.39=0 TitleList.Expanded.39=0 TitleList.Kind.39=0 -TitleList.Title.40=HideDebugger/dbh/hide +TitleList.Title.40=disasm/dis/d TitleList.Level.40=2 -TitleList.Url.40=HideDebugger_dbh_hide.htm +TitleList.Url.40=disasm_dis_d.htm TitleList.Icon.40=0 TitleList.Status.40=0 TitleList.Keywords.40= -TitleList.ContextNumber.40=1025 +TitleList.ContextNumber.40=1026 TitleList.ApplyTemp.40=0 TitleList.Expanded.40=0 TitleList.Kind.40=0 -TitleList.Title.41=User Database -TitleList.Level.41=1 -TitleList.Url.41=User_Database.htm +TitleList.Title.41=HideDebugger/dbh/hide +TitleList.Level.41=2 +TitleList.Url.41=HideDebugger_dbh_hide.htm TitleList.Icon.41=0 TitleList.Status.41=0 TitleList.Keywords.41= -TitleList.ContextNumber.41=1042 +TitleList.ContextNumber.41=1025 TitleList.ApplyTemp.41=0 TitleList.Expanded.41=0 TitleList.Kind.41=0 -TitleList.Title.42=cmt/cmtset/commentset -TitleList.Level.42=2 -TitleList.Url.42=cmt_cmtset_commentset.htm +TitleList.Title.42=User Database +TitleList.Level.42=1 +TitleList.Url.42=User_Database.htm TitleList.Icon.42=0 TitleList.Status.42=0 TitleList.Keywords.42= -TitleList.ContextNumber.42=1035 +TitleList.ContextNumber.42=1042 TitleList.ApplyTemp.42=0 TitleList.Expanded.42=0 TitleList.Kind.42=0 -TitleList.Title.43=cmtc/cmtdel/commentdel +TitleList.Title.43=cmt/cmtset/commentset TitleList.Level.43=2 -TitleList.Url.43=cmtc_cmtdel_commentdel.htm +TitleList.Url.43=cmt_cmtset_commentset.htm TitleList.Icon.43=0 TitleList.Status.43=0 TitleList.Keywords.43= -TitleList.ContextNumber.43=1036 +TitleList.ContextNumber.43=1035 TitleList.ApplyTemp.43=0 TitleList.Expanded.43=0 TitleList.Kind.43=0 -TitleList.Title.44=lbl/lblset/labelset +TitleList.Title.44=cmtc/cmtdel/commentdel TitleList.Level.44=2 -TitleList.Url.44=lbl_lblset_labelset.htm +TitleList.Url.44=cmtc_cmtdel_commentdel.htm TitleList.Icon.44=0 TitleList.Status.44=0 TitleList.Keywords.44= -TitleList.ContextNumber.44=1037 +TitleList.ContextNumber.44=1036 TitleList.ApplyTemp.44=0 TitleList.Expanded.44=0 TitleList.Kind.44=0 -TitleList.Title.45=lblc/lbldel/labeldel +TitleList.Title.45=lbl/lblset/labelset TitleList.Level.45=2 -TitleList.Url.45=lblc_lbldel_labeldel.htm +TitleList.Url.45=lbl_lblset_labelset.htm TitleList.Icon.45=0 TitleList.Status.45=0 TitleList.Keywords.45= -TitleList.ContextNumber.45=1038 +TitleList.ContextNumber.45=1037 TitleList.ApplyTemp.45=0 TitleList.Expanded.45=0 TitleList.Kind.45=0 -TitleList.Title.46=savedb/dbsave +TitleList.Title.46=lblc/lbldel/labeldel TitleList.Level.46=2 -TitleList.Url.46=savedb_dbsave.htm +TitleList.Url.46=lblc_lbldel_labeldel.htm TitleList.Icon.46=0 TitleList.Status.46=0 TitleList.Keywords.46= -TitleList.ContextNumber.46=1034 +TitleList.ContextNumber.46=1038 TitleList.ApplyTemp.46=0 TitleList.Expanded.46=0 TitleList.Kind.46=0 -TitleList.Title.47=loaddb/dbload +TitleList.Title.47=bookmark/bookmarkset TitleList.Level.47=2 -TitleList.Url.47=loaddb_dbload.htm +TitleList.Url.47=bookmark_bookmarkset.htm TitleList.Icon.47=0 TitleList.Status.47=0 TitleList.Keywords.47= -TitleList.ContextNumber.47=1039 +TitleList.ContextNumber.47=1077 TitleList.ApplyTemp.47=0 TitleList.Expanded.47=0 TitleList.Kind.47=0 -TitleList.Title.48=functionadd/func +TitleList.Title.48=bookmarkc/bookmarkdel TitleList.Level.48=2 -TitleList.Url.48=functionadd_func.htm +TitleList.Url.48=bookmarkc_bookmarkdel.htm TitleList.Icon.48=0 TitleList.Status.48=0 TitleList.Keywords.48= -TitleList.ContextNumber.48=1062 +TitleList.ContextNumber.48=1078 TitleList.ApplyTemp.48=0 TitleList.Expanded.48=0 TitleList.Kind.48=0 -TitleList.Title.49=functiondel/funcc +TitleList.Title.49=savedb/dbsave TitleList.Level.49=2 -TitleList.Url.49=functiondel_funcc.htm +TitleList.Url.49=savedb_dbsave.htm TitleList.Icon.49=0 TitleList.Status.49=0 TitleList.Keywords.49= -TitleList.ContextNumber.49=1063 +TitleList.ContextNumber.49=1034 TitleList.ApplyTemp.49=0 TitleList.Expanded.49=0 TitleList.Kind.49=0 -TitleList.Title.50=Memory Operations -TitleList.Level.50=1 -TitleList.Url.50=Memory_Operations.htm +TitleList.Title.50=loaddb/dbload +TitleList.Level.50=2 +TitleList.Url.50=loaddb_dbload.htm TitleList.Icon.50=0 TitleList.Status.50=0 TitleList.Keywords.50= -TitleList.ContextNumber.50=1043 +TitleList.ContextNumber.50=1039 TitleList.ApplyTemp.50=0 TitleList.Expanded.50=0 TitleList.Kind.50=0 -TitleList.Title.51=alloc +TitleList.Title.51=functionadd/func TitleList.Level.51=2 -TitleList.Url.51=alloc.htm +TitleList.Url.51=functionadd_func.htm TitleList.Icon.51=0 TitleList.Status.51=0 TitleList.Keywords.51= -TitleList.ContextNumber.51=1032 +TitleList.ContextNumber.51=1062 TitleList.ApplyTemp.51=0 TitleList.Expanded.51=0 TitleList.Kind.51=0 -TitleList.Title.52=free +TitleList.Title.52=functiondel/funcc TitleList.Level.52=2 -TitleList.Url.52=free.htm +TitleList.Url.52=functiondel_funcc.htm TitleList.Icon.52=0 TitleList.Status.52=0 TitleList.Keywords.52= -TitleList.ContextNumber.52=1031 +TitleList.ContextNumber.52=1063 TitleList.ApplyTemp.52=0 TitleList.Expanded.52=0 TitleList.Kind.52=0 -TitleList.Title.53=Fill/memset -TitleList.Level.53=2 -TitleList.Url.53=Fill_memset.htm +TitleList.Title.53=Memory Operations +TitleList.Level.53=1 +TitleList.Url.53=Memory_Operations.htm TitleList.Icon.53=0 TitleList.Status.53=0 TitleList.Keywords.53= -TitleList.ContextNumber.53=1033 +TitleList.ContextNumber.53=1043 TitleList.ApplyTemp.53=0 TitleList.Expanded.53=0 TitleList.Kind.53=0 -TitleList.Title.54=Plugins -TitleList.Level.54=1 -TitleList.Url.54=Plugins_section.htm +TitleList.Title.54=alloc +TitleList.Level.54=2 +TitleList.Url.54=alloc.htm TitleList.Icon.54=0 TitleList.Status.54=0 TitleList.Keywords.54= -TitleList.ContextNumber.54=1046 +TitleList.ContextNumber.54=1032 TitleList.ApplyTemp.54=0 -TitleList.Expanded.54=1 +TitleList.Expanded.54=0 TitleList.Kind.54=0 -TitleList.Title.55=StartScylla/scylla/imprec +TitleList.Title.55=free TitleList.Level.55=2 -TitleList.Url.55=StartScylla_scylla_imprec.htm +TitleList.Url.55=free.htm TitleList.Icon.55=0 TitleList.Status.55=0 TitleList.Keywords.55= -TitleList.ContextNumber.55=1047 +TitleList.ContextNumber.55=1031 TitleList.ApplyTemp.55=0 TitleList.Expanded.55=0 TitleList.Kind.55=0 -TitleList.Title.56=Script Commands -TitleList.Level.56=1 -TitleList.Url.56=Script_Commands.htm +TitleList.Title.56=Fill/memset +TitleList.Level.56=2 +TitleList.Url.56=Fill_memset.htm TitleList.Icon.56=0 TitleList.Status.56=0 TitleList.Keywords.56= -TitleList.ContextNumber.56=1070 +TitleList.ContextNumber.56=1033 TitleList.ApplyTemp.56=0 -TitleList.Expanded.56=1 +TitleList.Expanded.56=0 TitleList.Kind.56=0 -TitleList.Title.57=cmp -TitleList.Level.57=2 -TitleList.Url.57=cmp.htm +TitleList.Title.57=Plugins +TitleList.Level.57=1 +TitleList.Url.57=Plugins_section.htm TitleList.Icon.57=0 TitleList.Status.57=0 TitleList.Keywords.57= -TitleList.ContextNumber.57=1071 +TitleList.ContextNumber.57=1046 TitleList.ApplyTemp.57=0 -TitleList.Expanded.57=0 +TitleList.Expanded.57=1 TitleList.Kind.57=0 -TitleList.Title.58=Jxx/IFxx +TitleList.Title.58=StartScylla/scylla/imprec TitleList.Level.58=2 -TitleList.Url.58=Jxx_IFxx.htm +TitleList.Url.58=StartScylla_scylla_imprec.htm TitleList.Icon.58=0 TitleList.Status.58=0 TitleList.Keywords.58= -TitleList.ContextNumber.58=1072 +TitleList.ContextNumber.58=1047 TitleList.ApplyTemp.58=0 TitleList.Expanded.58=0 TitleList.Kind.58=0 -TitleList.Title.59=Plugins -TitleList.Level.59=0 -TitleList.Url.59=Plugins.htm +TitleList.Title.59=General Purpose +TitleList.Level.59=1 +TitleList.Url.59=General_Purpose.htm TitleList.Icon.59=0 TitleList.Status.59=0 TitleList.Keywords.59= -TitleList.ContextNumber.59=1050 +TitleList.ContextNumber.59=1073 TitleList.ApplyTemp.59=0 -TitleList.Expanded.59=0 +TitleList.Expanded.59=1 TitleList.Kind.59=0 -TitleList.Title.60=Exports -TitleList.Level.60=1 -TitleList.Url.60=Exports.htm +TitleList.Title.60=cmp +TitleList.Level.60=2 +TitleList.Url.60=cmp.htm TitleList.Icon.60=0 TitleList.Status.60=0 TitleList.Keywords.60= -TitleList.ContextNumber.60=1051 +TitleList.ContextNumber.60=1071 TitleList.ApplyTemp.60=0 TitleList.Expanded.60=0 TitleList.Kind.60=0 -TitleList.Title.61=_plugin_registercallback +TitleList.Title.61=gpa TitleList.Level.61=2 -TitleList.Url.61=_plugin_registercallback.htm +TitleList.Url.61=gpa.htm TitleList.Icon.61=0 TitleList.Status.61=0 TitleList.Keywords.61= -TitleList.ContextNumber.61=1052 +TitleList.ContextNumber.61=1095 TitleList.ApplyTemp.61=0 TitleList.Expanded.61=0 TitleList.Kind.61=0 -TitleList.Title.62=_plugin_unregistercallback +TitleList.Title.62=add TitleList.Level.62=2 -TitleList.Url.62=_plugin_unregistercallback.htm +TitleList.Url.62=add.htm TitleList.Icon.62=0 TitleList.Status.62=0 TitleList.Keywords.62= -TitleList.ContextNumber.62=1053 +TitleList.ContextNumber.62=1094 TitleList.ApplyTemp.62=0 TitleList.Expanded.62=0 TitleList.Kind.62=0 -TitleList.Title.63=_plugin_registercommand +TitleList.Title.63=and TitleList.Level.63=2 -TitleList.Url.63=_plugin_registercommand.htm +TitleList.Url.63=and.htm TitleList.Icon.63=0 TitleList.Status.63=0 TitleList.Keywords.63= -TitleList.ContextNumber.63=1054 +TitleList.ContextNumber.63=1093 TitleList.ApplyTemp.63=0 TitleList.Expanded.63=0 TitleList.Kind.63=0 -TitleList.Title.64=_plugin_unregistercommand +TitleList.Title.64=dec TitleList.Level.64=2 -TitleList.Url.64=_plugin_unregistercommand.htm +TitleList.Url.64=dec.htm TitleList.Icon.64=0 TitleList.Status.64=0 TitleList.Keywords.64= -TitleList.ContextNumber.64=1055 +TitleList.ContextNumber.64=1092 TitleList.ApplyTemp.64=0 TitleList.Expanded.64=0 TitleList.Kind.64=0 -TitleList.Title.65=_plugin_logprintf +TitleList.Title.65=div TitleList.Level.65=2 -TitleList.Url.65= +TitleList.Url.65=div.htm TitleList.Icon.65=0 -TitleList.Status.65=1 +TitleList.Status.65=0 TitleList.Keywords.65= -TitleList.ContextNumber.65=1056 +TitleList.ContextNumber.65=1091 TitleList.ApplyTemp.65=0 TitleList.Expanded.65=0 TitleList.Kind.65=0 -TitleList.Title.66=_plugin_logputs +TitleList.Title.66=inc TitleList.Level.66=2 -TitleList.Url.66= +TitleList.Url.66=inc.htm TitleList.Icon.66=0 -TitleList.Status.66=1 +TitleList.Status.66=0 TitleList.Keywords.66= -TitleList.ContextNumber.66=1057 +TitleList.ContextNumber.66=1090 TitleList.ApplyTemp.66=0 TitleList.Expanded.66=0 TitleList.Kind.66=0 -TitleList.Title.67=_plugin_debugpause +TitleList.Title.67=mul TitleList.Level.67=2 -TitleList.Url.67= +TitleList.Url.67=mul.htm TitleList.Icon.67=0 -TitleList.Status.67=1 +TitleList.Status.67=0 TitleList.Keywords.67= -TitleList.ContextNumber.67=1058 +TitleList.ContextNumber.67=1089 TitleList.ApplyTemp.67=0 TitleList.Expanded.67=0 TitleList.Kind.67=0 -TitleList.Title.68=Structures -TitleList.Level.68=1 -TitleList.Url.68=Structures.htm +TitleList.Title.68=neg +TitleList.Level.68=2 +TitleList.Url.68=neg.htm TitleList.Icon.68=0 TitleList.Status.68=0 TitleList.Keywords.68= -TitleList.ContextNumber.68=1059 +TitleList.ContextNumber.68=1088 TitleList.ApplyTemp.68=0 TitleList.Expanded.68=0 TitleList.Kind.68=0 -TitleList.Title.69=Callbacks +TitleList.Title.69=not TitleList.Level.69=2 -TitleList.Url.69=Callbacks.htm +TitleList.Url.69=not.htm TitleList.Icon.69=0 TitleList.Status.69=0 TitleList.Keywords.69= -TitleList.ContextNumber.69=1060 +TitleList.ContextNumber.69=1087 TitleList.ApplyTemp.69=0 TitleList.Expanded.69=0 TitleList.Kind.69=0 -TitleList.Title.70=PLUG_INITSTRUCT +TitleList.Title.70=or TitleList.Level.70=2 -TitleList.Url.70=PLUGINIT_STRUCT.htm +TitleList.Url.70=or.htm TitleList.Icon.70=0 TitleList.Status.70=0 TitleList.Keywords.70= -TitleList.ContextNumber.70=1061 +TitleList.ContextNumber.70=1086 TitleList.ApplyTemp.70=0 TitleList.Expanded.70=0 TitleList.Kind.70=0 -TitleList.Title.71=Scripting -TitleList.Level.71=0 -TitleList.Url.71=Scripting.htm +TitleList.Title.71=rol +TitleList.Level.71=2 +TitleList.Url.71=rol.htm TitleList.Icon.71=0 TitleList.Status.71=0 TitleList.Keywords.71= -TitleList.ContextNumber.71=1069 +TitleList.ContextNumber.71=1085 TitleList.ApplyTemp.71=0 TitleList.Expanded.71=0 TitleList.Kind.71=0 -TitleList.Title.72=Special Thanks -TitleList.Level.72=0 -TitleList.Url.72=Special_Thanks.htm +TitleList.Title.72=ror +TitleList.Level.72=2 +TitleList.Url.72=ror.htm TitleList.Icon.72=0 TitleList.Status.72=0 TitleList.Keywords.72= -TitleList.ContextNumber.72=1024 +TitleList.ContextNumber.72=1084 TitleList.ApplyTemp.72=0 TitleList.Expanded.72=0 TitleList.Kind.72=0 -TitleList.Title.73=Fixed Top Style -TitleList.Level.73=0 -TitleList.Url.73=template\fixedtop.htm +TitleList.Title.73=shl +TitleList.Level.73=2 +TitleList.Url.73=shl.htm TitleList.Icon.73=0 TitleList.Status.73=0 TitleList.Keywords.73= -TitleList.ContextNumber.73= +TitleList.ContextNumber.73=1083 TitleList.ApplyTemp.73=0 TitleList.Expanded.73=0 -TitleList.Kind.73=2 +TitleList.Kind.73=0 +TitleList.Title.74=shr +TitleList.Level.74=2 +TitleList.Url.74=shr.htm +TitleList.Icon.74=0 +TitleList.Status.74=0 +TitleList.Keywords.74= +TitleList.ContextNumber.74=1082 +TitleList.ApplyTemp.74=0 +TitleList.Expanded.74=0 +TitleList.Kind.74=0 +TitleList.Title.75=sub +TitleList.Level.75=2 +TitleList.Url.75=sub.htm +TitleList.Icon.75=0 +TitleList.Status.75=0 +TitleList.Keywords.75= +TitleList.ContextNumber.75=1081 +TitleList.ApplyTemp.75=0 +TitleList.Expanded.75=0 +TitleList.Kind.75=0 +TitleList.Title.76=test +TitleList.Level.76=2 +TitleList.Url.76=test.htm +TitleList.Icon.76=0 +TitleList.Status.76=0 +TitleList.Keywords.76= +TitleList.ContextNumber.76=1080 +TitleList.ApplyTemp.76=0 +TitleList.Expanded.76=0 +TitleList.Kind.76=0 +TitleList.Title.77=Script Commands +TitleList.Level.77=1 +TitleList.Url.77=Script_Commands.htm +TitleList.Icon.77=0 +TitleList.Status.77=0 +TitleList.Keywords.77= +TitleList.ContextNumber.77=1070 +TitleList.ApplyTemp.77=0 +TitleList.Expanded.77=1 +TitleList.Kind.77=0 +TitleList.Title.78=Jxx/IFxx +TitleList.Level.78=2 +TitleList.Url.78=Jxx_IFxx.htm +TitleList.Icon.78=0 +TitleList.Status.78=0 +TitleList.Keywords.78= +TitleList.ContextNumber.78=1072 +TitleList.ApplyTemp.78=0 +TitleList.Expanded.78=0 +TitleList.Kind.78=0 +TitleList.Title.79=scriptload +TitleList.Level.79=2 +TitleList.Url.79=scriptload.htm +TitleList.Icon.79=0 +TitleList.Status.79=0 +TitleList.Keywords.79= +TitleList.ContextNumber.79=1074 +TitleList.ApplyTemp.79=0 +TitleList.Expanded.79=0 +TitleList.Kind.79=0 +TitleList.Title.80=msg +TitleList.Level.80=2 +TitleList.Url.80=msg.htm +TitleList.Icon.80=0 +TitleList.Status.80=0 +TitleList.Keywords.80= +TitleList.ContextNumber.80=1076 +TitleList.ApplyTemp.80=0 +TitleList.Expanded.80=0 +TitleList.Kind.80=0 +TitleList.Title.81=msgyn +TitleList.Level.81=2 +TitleList.Url.81=msgyn.htm +TitleList.Icon.81=0 +TitleList.Status.81=0 +TitleList.Keywords.81= +TitleList.ContextNumber.81=1075 +TitleList.ApplyTemp.81=0 +TitleList.Expanded.81=0 +TitleList.Kind.81=0 +TitleList.Title.82=Plugins +TitleList.Level.82=0 +TitleList.Url.82=Plugins.htm +TitleList.Icon.82=0 +TitleList.Status.82=0 +TitleList.Keywords.82= +TitleList.ContextNumber.82=1050 +TitleList.ApplyTemp.82=0 +TitleList.Expanded.82=0 +TitleList.Kind.82=0 +TitleList.Title.83=Exports +TitleList.Level.83=1 +TitleList.Url.83=Exports.htm +TitleList.Icon.83=0 +TitleList.Status.83=0 +TitleList.Keywords.83= +TitleList.ContextNumber.83=1051 +TitleList.ApplyTemp.83=0 +TitleList.Expanded.83=0 +TitleList.Kind.83=0 +TitleList.Title.84=_plugin_registercallback +TitleList.Level.84=2 +TitleList.Url.84=_plugin_registercallback.htm +TitleList.Icon.84=0 +TitleList.Status.84=0 +TitleList.Keywords.84= +TitleList.ContextNumber.84=1052 +TitleList.ApplyTemp.84=0 +TitleList.Expanded.84=0 +TitleList.Kind.84=0 +TitleList.Title.85=_plugin_unregistercallback +TitleList.Level.85=2 +TitleList.Url.85=_plugin_unregistercallback.htm +TitleList.Icon.85=0 +TitleList.Status.85=0 +TitleList.Keywords.85= +TitleList.ContextNumber.85=1053 +TitleList.ApplyTemp.85=0 +TitleList.Expanded.85=0 +TitleList.Kind.85=0 +TitleList.Title.86=_plugin_registercommand +TitleList.Level.86=2 +TitleList.Url.86=_plugin_registercommand.htm +TitleList.Icon.86=0 +TitleList.Status.86=0 +TitleList.Keywords.86= +TitleList.ContextNumber.86=1054 +TitleList.ApplyTemp.86=0 +TitleList.Expanded.86=0 +TitleList.Kind.86=0 +TitleList.Title.87=_plugin_unregistercommand +TitleList.Level.87=2 +TitleList.Url.87=_plugin_unregistercommand.htm +TitleList.Icon.87=0 +TitleList.Status.87=0 +TitleList.Keywords.87= +TitleList.ContextNumber.87=1055 +TitleList.ApplyTemp.87=0 +TitleList.Expanded.87=0 +TitleList.Kind.87=0 +TitleList.Title.88=_plugin_logprintf +TitleList.Level.88=2 +TitleList.Url.88= +TitleList.Icon.88=0 +TitleList.Status.88=1 +TitleList.Keywords.88= +TitleList.ContextNumber.88=1056 +TitleList.ApplyTemp.88=0 +TitleList.Expanded.88=0 +TitleList.Kind.88=0 +TitleList.Title.89=_plugin_logputs +TitleList.Level.89=2 +TitleList.Url.89= +TitleList.Icon.89=0 +TitleList.Status.89=1 +TitleList.Keywords.89= +TitleList.ContextNumber.89=1057 +TitleList.ApplyTemp.89=0 +TitleList.Expanded.89=0 +TitleList.Kind.89=0 +TitleList.Title.90=_plugin_debugpause +TitleList.Level.90=2 +TitleList.Url.90= +TitleList.Icon.90=0 +TitleList.Status.90=1 +TitleList.Keywords.90= +TitleList.ContextNumber.90=1058 +TitleList.ApplyTemp.90=0 +TitleList.Expanded.90=0 +TitleList.Kind.90=0 +TitleList.Title.91=Structures +TitleList.Level.91=1 +TitleList.Url.91=Structures.htm +TitleList.Icon.91=0 +TitleList.Status.91=0 +TitleList.Keywords.91= +TitleList.ContextNumber.91=1059 +TitleList.ApplyTemp.91=0 +TitleList.Expanded.91=0 +TitleList.Kind.91=0 +TitleList.Title.92=Callbacks +TitleList.Level.92=2 +TitleList.Url.92=Callbacks.htm +TitleList.Icon.92=0 +TitleList.Status.92=0 +TitleList.Keywords.92= +TitleList.ContextNumber.92=1060 +TitleList.ApplyTemp.92=0 +TitleList.Expanded.92=0 +TitleList.Kind.92=0 +TitleList.Title.93=PLUG_INITSTRUCT +TitleList.Level.93=2 +TitleList.Url.93=PLUGINIT_STRUCT.htm +TitleList.Icon.93=0 +TitleList.Status.93=0 +TitleList.Keywords.93= +TitleList.ContextNumber.93=1061 +TitleList.ApplyTemp.93=0 +TitleList.Expanded.93=0 +TitleList.Kind.93=0 +TitleList.Title.94=Scripting +TitleList.Level.94=0 +TitleList.Url.94=Scripting.htm +TitleList.Icon.94=0 +TitleList.Status.94=0 +TitleList.Keywords.94= +TitleList.ContextNumber.94=1069 +TitleList.ApplyTemp.94=0 +TitleList.Expanded.94=0 +TitleList.Kind.94=0 +TitleList.Title.95=Special Thanks +TitleList.Level.95=0 +TitleList.Url.95=Special_Thanks.htm +TitleList.Icon.95=0 +TitleList.Status.95=0 +TitleList.Keywords.95= +TitleList.ContextNumber.95=1024 +TitleList.ApplyTemp.95=0 +TitleList.Expanded.95=0 +TitleList.Kind.95=0 +TitleList.Title.96=Fixed Top Style +TitleList.Level.96=0 +TitleList.Url.96=template\fixedtop.htm +TitleList.Icon.96=0 +TitleList.Status.96=0 +TitleList.Keywords.96= +TitleList.ContextNumber.96= +TitleList.ApplyTemp.96=0 +TitleList.Expanded.96=0 +TitleList.Kind.96=2 diff --git a/x64_dbg_bridge/bridgemain.cpp b/x64_dbg_bridge/bridgemain.cpp index 8695281b..3336d4e3 100644 --- a/x64_dbg_bridge/bridgemain.cpp +++ b/x64_dbg_bridge/bridgemain.cpp @@ -584,9 +584,9 @@ BRIDGE_IMPEXP void GuiDumpAt(duint va) _gui_sendmessage(GUI_DUMP_AT, (void*)va, 0); } -BRIDGE_IMPEXP void GuiScriptAddLine(const char* text) +BRIDGE_IMPEXP void GuiScriptAdd(int count, const char** lines) { - _gui_sendmessage(GUI_SCRIPT_ADDLINE, (void*)text, 0); + _gui_sendmessage(GUI_SCRIPT_ADD, (void*)(duint)count, (void*)lines); } BRIDGE_IMPEXP void GuiScriptClear() @@ -619,6 +619,11 @@ BRIDGE_IMPEXP void GuiScriptMessage(const char* message) _gui_sendmessage(GUI_SCRIPT_MESSAGE, (void*)message, 0); } +BRIDGE_IMPEXP int GuiScriptMsgyn(const char* message) +{ + return (int)(duint)_gui_sendmessage(GUI_SCRIPT_MSGYN, (void*)message, 0); +} + //Main BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { diff --git a/x64_dbg_bridge/bridgemain.h b/x64_dbg_bridge/bridgemain.h index 09a8eb4f..dad3a900 100644 --- a/x64_dbg_bridge/bridgemain.h +++ b/x64_dbg_bridge/bridgemain.h @@ -276,13 +276,14 @@ enum GUIMSG GUI_GET_WINDOW_HANDLE, // param1=unused, param2=unused GUI_DUMP_AT, // param1=(duint)va param2=unused - GUI_SCRIPT_ADDLINE, // param1=const char* text, param2=unused + GUI_SCRIPT_ADD, // param1=int count, param2=const char** lines GUI_SCRIPT_CLEAR, // param1=unused, param2=unused GUI_SCRIPT_SETIP, // param1=int line, param2=unused GUI_SCRIPT_ERROR, // param1=int line, param2=const char* message GUI_SCRIPT_SETTITLE, // param1=const char* title, param2=unused GUI_SCRIPT_SETINFOLINE, // param1=int line, param2=const char* info - GUI_SCRIPT_MESSAGE // param1=const char* message, param2=unused + GUI_SCRIPT_MESSAGE, // param1=const char* message, param2=unused + GUI_SCRIPT_MSGYN // param1=const char* message, param2=unused }; //GUI functions @@ -299,13 +300,14 @@ BRIDGE_IMPEXP void GuiUpdateCPUTitle(const char* modname); BRIDGE_IMPEXP HWND GuiGetWindowHandle(); BRIDGE_IMPEXP void GuiDumpAt(duint va); -BRIDGE_IMPEXP void GuiScriptAddLine(const char* text); +BRIDGE_IMPEXP void GuiScriptAdd(int count, const char** lines); BRIDGE_IMPEXP void GuiScriptClear(); BRIDGE_IMPEXP void GuiScriptSetIp(int line); BRIDGE_IMPEXP void GuiScriptError(int line, const char* message); 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); #ifdef __cplusplus } diff --git a/x64_dbg_dbg/instruction.cpp b/x64_dbg_dbg/instruction.cpp index 989abd53..450a22f4 100644 --- a/x64_dbg_dbg/instruction.cpp +++ b/x64_dbg_dbg/instruction.cpp @@ -8,6 +8,7 @@ #include "assemble.h" #include "debugger.h" #include "memory.h" +#include "x64_dbg.h" CMDRESULT cbBadCmd(int argc, char* argv[]) { @@ -476,11 +477,264 @@ CMDRESULT cbInstrCmp(int argc, char* argv[]) ezflag=1; else ezflag=0; - if(arg1>arg2) - bsflag=1; - else - bsflag=0; + if(valuesignedcalc()) //signed comparision + { + if((sint)arg1<(sint)arg2) + bsflag=0; + else + bsflag=1; + } + else //unsigned comparision + { + if(arg1>arg2) + bsflag=1; + else + bsflag=0; + } varset("$_EZ_FLAG", ezflag, true); varset("$_BS_FLAG", bsflag, true); + //dprintf("$_EZ_FLAG=%d, $_BS_FLAG=%d\n", ezflag, bsflag); return STATUS_CONTINUE; } + +CMDRESULT cbInstrGpa(int argc, char* argv[]) +{ + if(argc<2) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + if(argc>=3) + sprintf(newcmd, "%s:%s", argv[2], argv[1]); + else + sprintf(newcmd, "%s", argv[1]); + uint result=0; + if(!valfromstring(newcmd, &result, 0, 0, false, 0)) + return STATUS_ERROR; + varset("$RESULT", result, false); + return STATUS_CONTINUE; +} + +CMDRESULT cbInstrAdd(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s+%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrAnd(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s&%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrDec(int argc, char* argv[]) +{ + if(argc<2) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s-1", argv[1], argv[1]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrDiv(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s/%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrInc(int argc, char* argv[]) +{ + if(argc<2) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s+1", argv[1], argv[1]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrMul(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s*%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrNeg(int argc, char* argv[]) +{ + if(argc<2) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s*-1", argv[1], argv[1]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrNot(int argc, char* argv[]) +{ + if(argc<2) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,~%s", argv[1], argv[1]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrOr(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s|%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrRol(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s<%s", argv[1], argv[1], argv[2]); + bool signedcalc=valuesignedcalc(); + valuesetsignedcalc(true); //rol = signed + CMDRESULT res=cmddirectexec(dbggetcommandlist(), newcmd); + valuesetsignedcalc(signedcalc); + return res; +} + +CMDRESULT cbInstrRor(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s>%s", argv[1], argv[1], argv[2]); + bool signedcalc=valuesignedcalc(); + valuesetsignedcalc(true); //ror = signed + CMDRESULT res=cmddirectexec(dbggetcommandlist(), newcmd); + valuesetsignedcalc(signedcalc); + return res; +} + +CMDRESULT cbInstrShl(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s<%s", argv[1], argv[1], argv[2]); + bool signedcalc=valuesignedcalc(); + valuesetsignedcalc(false); //shl = unsigned + CMDRESULT res=cmddirectexec(dbggetcommandlist(), newcmd); + valuesetsignedcalc(signedcalc); + return res; +} + +CMDRESULT cbInstrShr(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s>%s", argv[1], argv[1], argv[2]); + bool signedcalc=valuesignedcalc(); + valuesetsignedcalc(false); //shr = unsigned + CMDRESULT res=cmddirectexec(dbggetcommandlist(), newcmd); + valuesetsignedcalc(signedcalc); + return res; +} + +CMDRESULT cbInstrSub(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s-%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + +CMDRESULT cbInstrTest(int argc, char* argv[]) +{ + //TODO: test + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + uint arg1=0; + if(!valfromstring(argv[1], &arg1, 0, 0, false, 0)) + return STATUS_ERROR; + uint arg2=0; + if(!valfromstring(argv[2], &arg2, 0, 0, false, 0)) + return STATUS_ERROR; + uint ezflag; + uint bsflag=0; + if(!(arg1&arg2)) + ezflag=1; + else + ezflag=0; + varset("$_EZ_FLAG", ezflag, true); + varset("$_BS_FLAG", bsflag, true); + //dprintf("$_EZ_FLAG=%d, $_BS_FLAG=%d\n", ezflag, bsflag); + return STATUS_CONTINUE; +} + +CMDRESULT cbInstrXor(int argc, char* argv[]) +{ + if(argc<3) + { + dputs("not enough arguments!"); + return STATUS_ERROR; + } + char newcmd[deflen]=""; + sprintf(newcmd, "mov %s,%s^%s", argv[1], argv[1], argv[2]); + return cmddirectexec(dbggetcommandlist(), newcmd); +} + diff --git a/x64_dbg_dbg/instruction.h b/x64_dbg_dbg/instruction.h index 824144b3..70bde481 100644 --- a/x64_dbg_dbg/instruction.h +++ b/x64_dbg_dbg/instruction.h @@ -22,6 +22,23 @@ CMDRESULT cbSavedb(int argc, char* argv[]); CMDRESULT cbAssemble(int argc, char* argv[]); CMDRESULT cbFunctionAdd(int argc, char* argv[]); CMDRESULT cbFunctionDel(int argc, char* argv[]); + CMDRESULT cbInstrCmp(int argc, char* argv[]); +CMDRESULT cbInstrGpa(int argc, char* argv[]); +CMDRESULT cbInstrAdd(int argc, char* argv[]); +CMDRESULT cbInstrAnd(int argc, char* argv[]); +CMDRESULT cbInstrDec(int argc, char* argv[]); +CMDRESULT cbInstrDiv(int argc, char* argv[]); +CMDRESULT cbInstrInc(int argc, char* argv[]); +CMDRESULT cbInstrMul(int argc, char* argv[]); +CMDRESULT cbInstrNeg(int argc, char* argv[]); +CMDRESULT cbInstrNot(int argc, char* argv[]); +CMDRESULT cbInstrOr(int argc, char* argv[]); +CMDRESULT cbInstrRol(int argc, char* argv[]); +CMDRESULT cbInstrRor(int argc, char* argv[]); +CMDRESULT cbInstrShl(int argc, char* argv[]); +CMDRESULT cbInstrShr(int argc, char* argv[]); +CMDRESULT cbInstrSub(int argc, char* argv[]); +CMDRESULT cbInstrTest(int argc, char* argv[]); #endif // _INSTRUCTIONS_H diff --git a/x64_dbg_dbg/math.cpp b/x64_dbg_dbg/math.cpp index 176049a5..a401141b 100644 --- a/x64_dbg_dbg/math.cpp +++ b/x64_dbg_dbg/math.cpp @@ -34,7 +34,7 @@ int mathisoperator(char ch) return 1; else if(ch=='~') return 2; - else if(ch=='*' or ch=='#' or ch=='/' or ch=='%') + else if(ch=='*' or ch=='$' or ch=='/' or ch=='%') return 3; else if(ch=='+' or ch=='-') return 4; @@ -121,7 +121,7 @@ bool mathdounsignedoperation(char op, uint left, uint right, uint* result) case '*': *result=left*right; return true; - case '#': + case '$': *result=umulhi(left, right); return true; case '/': @@ -170,7 +170,7 @@ bool mathdosignedoperation(char op, sint left, sint right, sint* result) case '*': *result=left*right; return true; - case '#': + case '$': *result=mulhi(left, right); return true; case '/': diff --git a/x64_dbg_dbg/simplescript.cpp b/x64_dbg_dbg/simplescript.cpp index e89af7c9..3b5b2a07 100644 --- a/x64_dbg_dbg/simplescript.cpp +++ b/x64_dbg_dbg/simplescript.cpp @@ -47,6 +47,7 @@ static int scriptlabelfind(const char* labelname) static bool scriptcreatelinemap(const char* filename) { + DWORD ticks=GetTickCount(); HANDLE hFile=CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); if(hFile==INVALID_HANDLE_VALUE) { @@ -193,6 +194,7 @@ static bool scriptcreatelinemap(const char* filename) strcpy(entry.u.command, "ret"); linemap.push_back(entry); } + dprintf("%ums to parse the script\n", GetTickCount()-ticks); return true; } @@ -390,18 +392,29 @@ static DWORD WINAPI scriptRunThread(void* arg) return 0; } -void scriptload(const char* filename) +static DWORD WINAPI scriptLoadThread(void* filename) { GuiScriptClear(); scriptIp=0; scriptbplist.clear(); //clear breakpoints bAbort=false; - if(!scriptcreatelinemap(filename)) - return; - for(unsigned int i=0; iscriptResult=1; } void ScriptView::clear() @@ -195,10 +198,20 @@ void ScriptView::clear() void ScriptView::setIp(int line) { - if(!isValidIndex(line-1, 0)) + int offset=line-1; + if(!isValidIndex(offset, 0)) + { mIpLine=0; - else - mIpLine=line; + return; + } + mIpLine=line; + int rangefrom=getTableOffset(); + int rangeto=rangefrom+getViewableRowsCount()-1; + if(offset(rangeto-1)) //ip lays after the current view + setTableOffset(offset-getViewableRowsCount()+2); + setSingleSelection(offset); reloadData(); //repaint } @@ -304,3 +317,13 @@ void ScriptView::newIp() if(isValidIndex(selected-1, 0)) DbgScriptSetIp(selected); } + +void ScriptView::question(QString message) +{ + QMessageBox msg(QMessageBox::Question, "Question", message, QMessageBox::Yes|QMessageBox::No); + msg.setWindowIcon(QIcon(":/icons/images/question.png")); + if(msg.exec()==QMessageBox::Yes) + Bridge::getBridge()->scriptResult=1; + else + Bridge::getBridge()->scriptResult=0; +} diff --git a/x64_dbg_gui/Project/Src/BasicView/ScriptView.h b/x64_dbg_gui/Project/Src/BasicView/ScriptView.h index 3508c46c..af42336c 100644 --- a/x64_dbg_gui/Project/Src/BasicView/ScriptView.h +++ b/x64_dbg_gui/Project/Src/BasicView/ScriptView.h @@ -18,7 +18,7 @@ public: void mouseDoubleClickEvent(QMouseEvent* event); public slots: - void addLine(QString text); + void add(int count, const char** lines); void clear(); void setIp(int line); void error(int line, QString message); @@ -34,6 +34,7 @@ public slots: void cmdExec(); void message(QString message); void newIp(); + void question(QString message); private: //private functions diff --git a/x64_dbg_gui/Project/Src/Bridge/Bridge.cpp b/x64_dbg_gui/Project/Src/Bridge/Bridge.cpp index 3a2741fd..771c3962 100644 --- a/x64_dbg_gui/Project/Src/Bridge/Bridge.cpp +++ b/x64_dbg_gui/Project/Src/Bridge/Bridge.cpp @@ -79,9 +79,14 @@ void Bridge::emitDumpAt(int_t va) emit dumpAt(va); } -void Bridge::emitScriptAddLine(QString text) +void Bridge::emitScriptAdd(int count, const char** lines) { - emit scriptAddLine(text); + mBridgeMutex.lock(); + scriptResult=-1; + emit scriptAdd(count, lines); + while(scriptResult==-1) //wait for thread completion + Sleep(100); + mBridgeMutex.unlock(); } void Bridge::emitScriptClear() @@ -114,6 +119,17 @@ void Bridge::emitScriptMessage(QString message) emit scriptMessage(message); } +int Bridge::emitScriptQuestion(QString message) +{ + mBridgeMutex.lock(); + scriptResult=-1; + emit scriptQuestion(message); + while(scriptResult==-1) //wait for thread completion + Sleep(100); + mBridgeMutex.unlock(); + return scriptResult; +} + /************************************************************************************ Static Functions @@ -213,9 +229,9 @@ __declspec(dllexport) void* _gui_sendmessage(GUIMSG type, void* param1, void* pa } break; - case GUI_SCRIPT_ADDLINE: + case GUI_SCRIPT_ADD: { - Bridge::getBridge()->emitScriptAddLine(QString(reinterpret_cast(param1))); + Bridge::getBridge()->emitScriptAdd((int)(int_t)param1, reinterpret_cast(param2)); } break; @@ -234,8 +250,7 @@ __declspec(dllexport) void* _gui_sendmessage(GUIMSG type, void* param1, void* pa case GUI_SCRIPT_ERROR: { - int_t arg=(int_t)param1; - Bridge::getBridge()->emitScriptError((int)arg, QString(reinterpret_cast(param2))); + Bridge::getBridge()->emitScriptError((int)(int_t)param1, QString(reinterpret_cast(param2))); } break; @@ -258,6 +273,12 @@ __declspec(dllexport) void* _gui_sendmessage(GUIMSG type, void* param1, void* pa } break; + case GUI_SCRIPT_MSGYN: + { + return (void*)Bridge::getBridge()->emitScriptQuestion(QString(reinterpret_cast(param1))); + } + break; + default: { } diff --git a/x64_dbg_gui/Project/Src/Bridge/Bridge.h b/x64_dbg_gui/Project/Src/Bridge/Bridge.h index e990ebbc..e43cca4f 100644 --- a/x64_dbg_gui/Project/Src/Bridge/Bridge.h +++ b/x64_dbg_gui/Project/Src/Bridge/Bridge.h @@ -34,15 +34,18 @@ public: void emitSetInfoLine(int line, QString text); void emitClearInfoBox(); void emitDumpAt(int_t va); - void emitScriptAddLine(QString text); + void emitScriptAdd(int count, const char** lines); void emitScriptClear(); void emitScriptSetIp(int line); void emitScriptError(int line, QString message); void emitScriptSetTitle(QString title); void emitScriptSetInfoLine(int line, QString info); void emitScriptMessage(QString message); + int emitScriptQuestion(QString message); void* winId; + QWidget* scriptView; + int scriptResult; signals: void disassembleAt(int_t va, int_t eip); @@ -57,17 +60,19 @@ signals: void setInfoLine(int line, QString text); void dumpAt(int_t va); - void scriptAddLine(QString text); + void scriptAdd(int count, const char** lines); void scriptClear(); void scriptSetIp(int line); void scriptError(int line, QString message); void scriptSetTitle(QString title); void scriptSetInfoLine(int line, QString info); void scriptMessage(QString message); + void scriptQuestion(QString message); public slots: private: + QMutex mBridgeMutex; public: diff --git a/x64_dbg_gui/Project/images/question.png b/x64_dbg_gui/Project/images/question.png new file mode 100644 index 00000000..d8f40613 Binary files /dev/null and b/x64_dbg_gui/Project/images/question.png differ diff --git a/x64_dbg_gui/Project/resource.qrc b/x64_dbg_gui/Project/resource.qrc index 0efbbfb1..99524357 100644 --- a/x64_dbg_gui/Project/resource.qrc +++ b/x64_dbg_gui/Project/resource.qrc @@ -24,5 +24,6 @@ images/script-code.png images/script-error.png images/information.png + images/question.png