3.1 KiB
Input
This program accepts various options of input:
-
Commands: Commands have the following format:
command[space]arg1,[optional space]arg2,argN. -
Variables: Variables optionally start with a
$and can only store one DWORD (QWORD on x64). -
Registers: All registers (of all sizes) can be used as variables.
-
Memory locations: You can read/write from/to a memory location by using one of the following expressions:
[addr]read a DWORD/QWORD fromaddr.n:[addr]read n bytes fromaddr.seg:[addr]read a DWORD/QWORD from a segment ataddr.
REMARKS:
nis the amount of bytes to read, this can be anything smaller than 4 on x32 and smaller than 8 on x64 when specified, otherwise there will be an error.- seg can be
gs,es,cs,fs,ds,ss. Onlyfsandgshave an effect.
-
Flags: Debug flags (interpreted as integer) can be used as input. Flags are prefixed with an
_followed by the flag name. Valid flags are:_cf,_pf,_af,_zf,_sf,_tf,_if,_df,_of,_rf,_vm,_ac,_vif,_vipand_id. -
Numbers: All numbers are interpreted as hex by default. If you want to be sure, you can
xor0xas a prefix. Decimal numbers can be used by prefixing the number with a dot:.123=7B. -
Expressions: See the expressions section for more information.
-
Labels/Symbols: User-defined labels and symbols are a valid expressions (they resolve to the address of said label/symbol).
Module Data
-
DLL exports: Type
GetProcAddressand it will automatically be resolved to the actual address of the function. To explicitly define from which module to load the API, use:[module].dll:[api]or[module]:[api]. In a similar way you can resolve ordinals, try[module]:[ordinal]. Another macro allows you to get the loaded base of a module. When[module]is an empty string:GetProcAddressfor example, the module that is currently selected in the CPU will be used. -
Loaded module bases: If you want to access the loaded module base, you can write:
[module]:0,[module]:base,[module]:imagebaseor[module]:header. -
RVA/File offset: If you want to access a module RVA you can either write
[module]:0+[rva]or you can write[module]:$[rva]. If you want to convert a file offset to a VA you can use[module]:#[offset]. When[module]is an empty string:0for example, the module that is currently selected in the CPU will be used. -
Module entry points: To access a module entry point you can write
[module]:entry,[module]:oepor[module]:ep. Notice that when there are exports with the namesentry,oeporepthe address of these will be returned instead.Notice:
- Instead of the
:delimiter you can also use a.If you need to query module information such as[module]:imagebaseor[module]:entryyou are advised to use a?as delimiter instead:[module]?entry. The?delimiter does checking for named exports later, so it will still work when there is an export calledentryin the module.
- Instead of the
Input for arguments can always be done in any of the above forms, except if stated otherwise.