add gdbinit
This commit is contained in:
parent
e0f5fc80d3
commit
5cc25ec27b
755
home/user/.config/gdb/gdbinit
Normal file
755
home/user/.config/gdb/gdbinit
Normal file
@ -0,0 +1,755 @@
|
||||
# set to 1 to enable 64bits target by default (32bit is the default)
|
||||
set $64BITS = 1
|
||||
|
||||
set confirm off
|
||||
set verbose off
|
||||
set prompt \033[31mgdb$ \033[0m
|
||||
|
||||
set output-radix 0x10
|
||||
set input-radix 0x10
|
||||
|
||||
# These make gdb never pause in its output
|
||||
set height 0
|
||||
set width 0
|
||||
|
||||
|
||||
|
||||
# _____________breakpoint aliases_____________
|
||||
define bpl
|
||||
info breakpoints
|
||||
end
|
||||
document bpl
|
||||
List all breakpoints.
|
||||
end
|
||||
|
||||
define bp
|
||||
if $argc != 1
|
||||
help bp
|
||||
else
|
||||
break $arg0
|
||||
end
|
||||
end
|
||||
document bp
|
||||
Set breakpoint.
|
||||
Usage: bp LOCATION
|
||||
LOCATION may be a line number, function name, or "*" and an address.
|
||||
|
||||
To break on a symbol you must enclose symbol name inside "".
|
||||
Example:
|
||||
bp "[NSControl stringValue]"
|
||||
Or else you can use directly the break command (break [NSControl stringValue])
|
||||
end
|
||||
|
||||
|
||||
define bpc
|
||||
if $argc != 1
|
||||
help bpc
|
||||
else
|
||||
clear $arg0
|
||||
end
|
||||
end
|
||||
document bpc
|
||||
Clear breakpoint.
|
||||
Usage: bpc LOCATION
|
||||
LOCATION may be a line number, function name, or "*" and an address.
|
||||
end
|
||||
|
||||
|
||||
define bpe
|
||||
if $argc != 1
|
||||
help bpe
|
||||
else
|
||||
enable $arg0
|
||||
end
|
||||
end
|
||||
document bpe
|
||||
Enable breakpoint with number NUM.
|
||||
Usage: bpe NUM
|
||||
end
|
||||
|
||||
|
||||
define bpd
|
||||
if $argc != 1
|
||||
help bpd
|
||||
else
|
||||
disable $arg0
|
||||
end
|
||||
end
|
||||
document bpd
|
||||
Disable breakpoint with number NUM.
|
||||
Usage: bpd NUM
|
||||
end
|
||||
|
||||
|
||||
define bpt
|
||||
if $argc != 1
|
||||
help bpt
|
||||
else
|
||||
tbreak $arg0
|
||||
end
|
||||
end
|
||||
document bpt
|
||||
Set a temporary breakpoint.
|
||||
Will be deleted when hit!
|
||||
Usage: bpt LOCATION
|
||||
LOCATION may be a line number, function name, or "*" and an address.
|
||||
end
|
||||
|
||||
|
||||
define bpm
|
||||
if $argc != 1
|
||||
help bpm
|
||||
else
|
||||
awatch $arg0
|
||||
end
|
||||
end
|
||||
document bpm
|
||||
Set a read/write breakpoint on EXPRESSION, e.g. *address.
|
||||
Usage: bpm EXPRESSION
|
||||
end
|
||||
|
||||
|
||||
define bhb
|
||||
if $argc != 1
|
||||
help bhb
|
||||
else
|
||||
hb $arg0
|
||||
end
|
||||
end
|
||||
document bhb
|
||||
Set hardware assisted breakpoint.
|
||||
Usage: bhb LOCATION
|
||||
LOCATION may be a line number, function name, or "*" and an address.
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
# ______________process information____________
|
||||
define argv
|
||||
show args
|
||||
end
|
||||
document argv
|
||||
Print program arguments.
|
||||
end
|
||||
|
||||
|
||||
define stack
|
||||
if $argc == 0
|
||||
info stack
|
||||
end
|
||||
if $argc == 1
|
||||
info stack $arg0
|
||||
end
|
||||
if $argc > 1
|
||||
help stack
|
||||
end
|
||||
end
|
||||
document stack
|
||||
Print backtrace of the call stack, or innermost COUNT frames.
|
||||
Usage: stack <COUNT>
|
||||
end
|
||||
|
||||
|
||||
define frame
|
||||
info frame
|
||||
info args
|
||||
info locals
|
||||
end
|
||||
document frame
|
||||
Print stack frame.
|
||||
end
|
||||
|
||||
|
||||
define flags
|
||||
# OF (overflow) flag
|
||||
if (($eflags >> 0xB) & 1)
|
||||
printf "O "
|
||||
set $_of_flag = 1
|
||||
else
|
||||
printf "o "
|
||||
set $_of_flag = 0
|
||||
end
|
||||
if (($eflags >> 0xA) & 1)
|
||||
printf "D "
|
||||
else
|
||||
printf "d "
|
||||
end
|
||||
if (($eflags >> 9) & 1)
|
||||
printf "I "
|
||||
else
|
||||
printf "i "
|
||||
end
|
||||
if (($eflags >> 8) & 1)
|
||||
printf "T "
|
||||
else
|
||||
printf "t "
|
||||
end
|
||||
# SF (sign) flag
|
||||
if (($eflags >> 7) & 1)
|
||||
printf "S "
|
||||
set $_sf_flag = 1
|
||||
else
|
||||
printf "s "
|
||||
set $_sf_flag = 0
|
||||
end
|
||||
# ZF (zero) flag
|
||||
if (($eflags >> 6) & 1)
|
||||
printf "Z "
|
||||
set $_zf_flag = 1
|
||||
else
|
||||
printf "z "
|
||||
set $_zf_flag = 0
|
||||
end
|
||||
if (($eflags >> 4) & 1)
|
||||
printf "A "
|
||||
else
|
||||
printf "a "
|
||||
end
|
||||
# PF (parity) flag
|
||||
if (($eflags >> 2) & 1)
|
||||
printf "P "
|
||||
set $_pf_flag = 1
|
||||
else
|
||||
printf "p "
|
||||
set $_pf_flag = 0
|
||||
end
|
||||
# CF (carry) flag
|
||||
if ($eflags & 1)
|
||||
printf "C "
|
||||
set $_cf_flag = 1
|
||||
else
|
||||
printf "c "
|
||||
set $_cf_flag = 0
|
||||
end
|
||||
printf "\n"
|
||||
end
|
||||
document flags
|
||||
Print flags register.
|
||||
end
|
||||
|
||||
|
||||
define eflags
|
||||
printf " OF <%d> DF <%d> IF <%d> TF <%d>",\
|
||||
(($eflags >> 0xB) & 1), (($eflags >> 0xA) & 1), \
|
||||
(($eflags >> 9) & 1), (($eflags >> 8) & 1)
|
||||
printf " SF <%d> ZF <%d> AF <%d> PF <%d> CF <%d>\n",\
|
||||
(($eflags >> 7) & 1), (($eflags >> 6) & 1),\
|
||||
(($eflags >> 4) & 1), (($eflags >> 2) & 1), ($eflags & 1)
|
||||
printf " ID <%d> VIP <%d> VIF <%d> AC <%d>",\
|
||||
(($eflags >> 0x15) & 1), (($eflags >> 0x14) & 1), \
|
||||
(($eflags >> 0x13) & 1), (($eflags >> 0x12) & 1)
|
||||
printf " VM <%d> RF <%d> NT <%d> IOPL <%d>\n",\
|
||||
(($eflags >> 0x11) & 1), (($eflags >> 0x10) & 1),\
|
||||
(($eflags >> 0xE) & 1), (($eflags >> 0xC) & 3)
|
||||
end
|
||||
document eflags
|
||||
Print eflags register.
|
||||
end
|
||||
|
||||
|
||||
define reg
|
||||
if ($64BITS == 1)
|
||||
# 64bits stuff
|
||||
printf " "
|
||||
echo \033[32m
|
||||
printf "RAX:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rax
|
||||
echo \033[32m
|
||||
printf "RBX:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rbx
|
||||
echo \033[32m
|
||||
printf "RCX:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rcx
|
||||
echo \033[32m
|
||||
printf "RDX:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rdx
|
||||
echo \033[1m\033[4m\033[31m
|
||||
flags
|
||||
echo \033[0m
|
||||
printf " "
|
||||
echo \033[32m
|
||||
printf "RSI:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rsi
|
||||
echo \033[32m
|
||||
printf "RDI:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rdi
|
||||
echo \033[32m
|
||||
printf "RBP:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rbp
|
||||
echo \033[32m
|
||||
printf "RSP:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $rsp
|
||||
echo \033[32m
|
||||
printf "RIP:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX\n ", $rip
|
||||
echo \033[32m
|
||||
printf "R8 :"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r8
|
||||
echo \033[32m
|
||||
printf "R9 :"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r9
|
||||
echo \033[32m
|
||||
printf "R10:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r10
|
||||
echo \033[32m
|
||||
printf "R11:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r11
|
||||
echo \033[32m
|
||||
printf "R12:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX\n ", $r12
|
||||
echo \033[32m
|
||||
printf "R13:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r13
|
||||
echo \033[32m
|
||||
printf "R14:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX ", $r14
|
||||
echo \033[32m
|
||||
printf "R15:"
|
||||
echo \033[0m
|
||||
printf " 0x%016lX\n ", $r15
|
||||
echo \033[32m
|
||||
printf "CS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $cs
|
||||
echo \033[32m
|
||||
printf "DS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $ds
|
||||
echo \033[32m
|
||||
printf "ES:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $es
|
||||
echo \033[32m
|
||||
printf "FS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $fs
|
||||
echo \033[32m
|
||||
printf "GS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $gs
|
||||
echo \033[32m
|
||||
printf "SS:"
|
||||
echo \033[0m
|
||||
printf " %04X", $ss
|
||||
echo \033[0m
|
||||
# 32bits stuff
|
||||
else
|
||||
printf " "
|
||||
echo \033[32m
|
||||
printf "EAX:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $eax
|
||||
echo \033[32m
|
||||
printf "EBX:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $ebx
|
||||
echo \033[32m
|
||||
printf "ECX:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $ecx
|
||||
echo \033[32m
|
||||
printf "EDX:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $edx
|
||||
echo \033[1m\033[4m\033[31m
|
||||
flags
|
||||
echo \033[0m
|
||||
printf " "
|
||||
echo \033[32m
|
||||
printf "ESI:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $esi
|
||||
echo \033[32m
|
||||
printf "EDI:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $edi
|
||||
echo \033[32m
|
||||
printf "EBP:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $ebp
|
||||
echo \033[32m
|
||||
printf "ESP:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X ", $esp
|
||||
echo \033[32m
|
||||
printf "EIP:"
|
||||
echo \033[0m
|
||||
printf " 0x%08X\n ", $eip
|
||||
echo \033[32m
|
||||
printf "CS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $cs
|
||||
echo \033[32m
|
||||
printf "DS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $ds
|
||||
echo \033[32m
|
||||
printf "ES:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $es
|
||||
echo \033[32m
|
||||
printf "FS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $fs
|
||||
echo \033[32m
|
||||
printf "GS:"
|
||||
echo \033[0m
|
||||
printf " %04X ", $gs
|
||||
echo \033[32m
|
||||
printf "SS:"
|
||||
echo \033[0m
|
||||
printf " %04X", $ss
|
||||
echo \033[0m
|
||||
end
|
||||
# call smallregisters
|
||||
smallregisters
|
||||
# display conditional jump routine
|
||||
if ($64BITS == 1)
|
||||
printf "\t\t\t\t"
|
||||
end
|
||||
dumpjump
|
||||
printf "\n"
|
||||
end
|
||||
document reg
|
||||
Print CPU registers.
|
||||
end
|
||||
|
||||
define smallregisters
|
||||
if ($64BITS == 1)
|
||||
#64bits stuff
|
||||
# from rax
|
||||
set $eax = $rax & 0xffffffff
|
||||
set $ax = $rax & 0xffff
|
||||
set $al = $ax & 0xff
|
||||
set $ah = $ax >> 8
|
||||
# from rbx
|
||||
set $bx = $rbx & 0xffff
|
||||
set $bl = $bx & 0xff
|
||||
set $bh = $bx >> 8
|
||||
# from rcx
|
||||
set $ecx = $rcx & 0xffffffff
|
||||
set $cx = $rcx & 0xffff
|
||||
set $cl = $cx & 0xff
|
||||
set $ch = $cx >> 8
|
||||
# from rdx
|
||||
set $edx = $rdx & 0xffffffff
|
||||
set $dx = $rdx & 0xffff
|
||||
set $dl = $dx & 0xff
|
||||
set $dh = $dx >> 8
|
||||
# from rsi
|
||||
set $esi = $rsi & 0xffffffff
|
||||
set $si = $rsi & 0xffff
|
||||
# from rdi
|
||||
set $edi = $rdi & 0xffffffff
|
||||
set $di = $rdi & 0xffff
|
||||
#32 bits stuff
|
||||
else
|
||||
# from eax
|
||||
set $ax = $eax & 0xffff
|
||||
set $al = $ax & 0xff
|
||||
set $ah = $ax >> 8
|
||||
# from ebx
|
||||
set $bx = $ebx & 0xffff
|
||||
set $bl = $bx & 0xff
|
||||
set $bh = $bx >> 8
|
||||
# from ecx
|
||||
set $cx = $ecx & 0xffff
|
||||
set $cl = $cx & 0xff
|
||||
set $ch = $cx >> 8
|
||||
# from edx
|
||||
set $dx = $edx & 0xffff
|
||||
set $dl = $dx & 0xff
|
||||
set $dh = $dx >> 8
|
||||
# from esi
|
||||
set $si = $esi & 0xffff
|
||||
# from edi
|
||||
set $di = $edi & 0xffff
|
||||
end
|
||||
|
||||
end
|
||||
document smallregisters
|
||||
Create the 16 and 8 bit cpu registers (gdb doesn't have them by default)
|
||||
And 32bits if we are dealing with 64bits binaries
|
||||
end
|
||||
|
||||
define func
|
||||
if $argc == 0
|
||||
info functions
|
||||
end
|
||||
if $argc == 1
|
||||
info functions $arg0
|
||||
end
|
||||
if $argc > 1
|
||||
help func
|
||||
end
|
||||
end
|
||||
document func
|
||||
Print all function names in target, or those matching REGEXP.
|
||||
Usage: func <REGEXP>
|
||||
end
|
||||
|
||||
|
||||
define var
|
||||
if $argc == 0
|
||||
info variables
|
||||
end
|
||||
if $argc == 1
|
||||
info variables $arg0
|
||||
end
|
||||
if $argc > 1
|
||||
help var
|
||||
end
|
||||
end
|
||||
document var
|
||||
Print all global and static variable names (symbols), or those matching REGEXP.
|
||||
Usage: var <REGEXP>
|
||||
end
|
||||
|
||||
|
||||
define lib
|
||||
info sharedlibrary
|
||||
end
|
||||
document lib
|
||||
Print shared libraries linked to target.
|
||||
end
|
||||
|
||||
|
||||
define sig
|
||||
if $argc == 0
|
||||
info signals
|
||||
end
|
||||
if $argc == 1
|
||||
info signals $arg0
|
||||
end
|
||||
if $argc > 1
|
||||
help sig
|
||||
end
|
||||
end
|
||||
document sig
|
||||
Print what debugger does when program gets various signals.
|
||||
Specify a SIGNAL as argument to print info on that signal only.
|
||||
Usage: sig <SIGNAL>
|
||||
end
|
||||
|
||||
|
||||
define threads
|
||||
info threads
|
||||
end
|
||||
document threads
|
||||
Print threads in target.
|
||||
end
|
||||
|
||||
|
||||
define dis
|
||||
if $argc == 0
|
||||
disassemble
|
||||
end
|
||||
if $argc == 1
|
||||
disassemble $arg0
|
||||
end
|
||||
if $argc == 2
|
||||
disassemble $arg0 $arg1
|
||||
end
|
||||
if $argc > 2
|
||||
help dis
|
||||
end
|
||||
end
|
||||
document dis
|
||||
Disassemble a specified section of memory.
|
||||
Default is to disassemble the function surrounding the PC (program counter)
|
||||
of selected frame. With one argument, ADDR1, the function surrounding this
|
||||
address is dumped. Two arguments are taken as a range of memory to dump.
|
||||
Usage: dis <ADDR1> <ADDR2>
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
# __________hex/ascii dump an address_________
|
||||
define ascii_char
|
||||
if $argc != 1
|
||||
help ascii_char
|
||||
else
|
||||
# thanks elaine :)
|
||||
set $_c = *(unsigned char *)($arg0)
|
||||
if ($_c < 0x20 || $_c > 0x7E)
|
||||
printf "."
|
||||
else
|
||||
printf "%c", $_c
|
||||
end
|
||||
end
|
||||
end
|
||||
document ascii_char
|
||||
Print ASCII value of byte at address ADDR.
|
||||
Print "." if the value is unprintable.
|
||||
Usage: ascii_char ADDR
|
||||
end
|
||||
|
||||
|
||||
define hex_quad
|
||||
if $argc != 1
|
||||
help hex_quad
|
||||
else
|
||||
printf "%02X %02X %02X %02X %02X %02X %02X %02X", \
|
||||
*(unsigned char*)($arg0), *(unsigned char*)($arg0 + 1), \
|
||||
*(unsigned char*)($arg0 + 2), *(unsigned char*)($arg0 + 3), \
|
||||
*(unsigned char*)($arg0 + 4), *(unsigned char*)($arg0 + 5), \
|
||||
*(unsigned char*)($arg0 + 6), *(unsigned char*)($arg0 + 7)
|
||||
end
|
||||
end
|
||||
document hex_quad
|
||||
Print eight hexadecimal bytes starting at address ADDR.
|
||||
Usage: hex_quad ADDR
|
||||
end
|
||||
|
||||
define hexdump
|
||||
if $argc != 1
|
||||
help hexdump
|
||||
else
|
||||
echo \033[1m
|
||||
if ($64BITS == 1)
|
||||
printf "0x%016lX : ", $arg0
|
||||
else
|
||||
printf "0x%08X : ", $arg0
|
||||
end
|
||||
echo \033[0m
|
||||
hex_quad $arg0
|
||||
echo \033[1m
|
||||
printf " - "
|
||||
echo \033[0m
|
||||
hex_quad $arg0+8
|
||||
printf " "
|
||||
echo \033[1m
|
||||
ascii_char $arg0+0x0
|
||||
ascii_char $arg0+0x1
|
||||
ascii_char $arg0+0x2
|
||||
ascii_char $arg0+0x3
|
||||
ascii_char $arg0+0x4
|
||||
ascii_char $arg0+0x5
|
||||
ascii_char $arg0+0x6
|
||||
ascii_char $arg0+0x7
|
||||
ascii_char $arg0+0x8
|
||||
ascii_char $arg0+0x9
|
||||
ascii_char $arg0+0xA
|
||||
ascii_char $arg0+0xB
|
||||
ascii_char $arg0+0xC
|
||||
ascii_char $arg0+0xD
|
||||
ascii_char $arg0+0xE
|
||||
ascii_char $arg0+0xF
|
||||
echo \033[0m
|
||||
printf "\n"
|
||||
end
|
||||
end
|
||||
document hexdump
|
||||
Display a 16-byte hex/ASCII dump of memory at address ADDR.
|
||||
Usage: hexdump ADDR
|
||||
end
|
||||
|
||||
|
||||
# _______________data window__________________
|
||||
define ddump
|
||||
if $argc != 1
|
||||
help ddump
|
||||
else
|
||||
echo \033[34m
|
||||
if ($64BITS == 1)
|
||||
printf "[0x%04X:0x%016lX]", $ds, $data_addr
|
||||
else
|
||||
printf "[0x%04X:0x%08X]", $ds, $data_addr
|
||||
end
|
||||
echo \033[34m
|
||||
printf "------------------------"
|
||||
printf "-------------------------------"
|
||||
if ($64BITS == 1)
|
||||
printf "-------------------------------------"
|
||||
end
|
||||
|
||||
echo \033[1;34m
|
||||
printf "[data]\n"
|
||||
echo \033[0m
|
||||
set $_count = 0
|
||||
while ($_count < $arg0)
|
||||
set $_i = ($_count * 0x10)
|
||||
hexdump $data_addr+$_i
|
||||
set $_count++
|
||||
end
|
||||
end
|
||||
end
|
||||
document ddump
|
||||
Display NUM lines of hexdump for address in $data_addr global variable.
|
||||
Usage: ddump NUM
|
||||
end
|
||||
|
||||
|
||||
define dd
|
||||
if $argc != 1
|
||||
help dd
|
||||
else
|
||||
if ((($arg0 >> 0x18) == 0x40) || (($arg0 >> 0x18) == 0x08) || (($arg0 >> 0x18) == 0xBF))
|
||||
set $data_addr = $arg0
|
||||
ddump 0x10
|
||||
else
|
||||
printf "Invalid address: %08X\n", $arg0
|
||||
end
|
||||
end
|
||||
end
|
||||
document dd
|
||||
Display 16 lines of a hex dump of address starting at ADDR.
|
||||
Usage: dd ADDR
|
||||
end
|
||||
|
||||
|
||||
define datawin
|
||||
if ($64BITS == 1)
|
||||
if ((($rsi >> 0x18) == 0x40) || (($rsi >> 0x18) == 0x08) || (($rsi >> 0x18) == 0xBF))
|
||||
set $data_addr = $rsi
|
||||
else
|
||||
if ((($rdi >> 0x18) == 0x40) || (($rdi >> 0x18) == 0x08) || (($rdi >> 0x18) == 0xBF))
|
||||
set $data_addr = $rdi
|
||||
else
|
||||
if ((($rax >> 0x18) == 0x40) || (($rax >> 0x18) == 0x08) || (($rax >> 0x18) == 0xBF))
|
||||
set $data_addr = $rax
|
||||
else
|
||||
set $data_addr = $rsp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
if ((($esi >> 0x18) == 0x40) || (($esi >> 0x18) == 0x08) || (($esi >> 0x18) == 0xBF))
|
||||
set $data_addr = $esi
|
||||
else
|
||||
if ((($edi >> 0x18) == 0x40) || (($edi >> 0x18) == 0x08) || (($edi >> 0x18) == 0xBF))
|
||||
set $data_addr = $edi
|
||||
else
|
||||
if ((($eax >> 0x18) == 0x40) || (($eax >> 0x18) == 0x08) || (($eax >> 0x18) == 0xBF))
|
||||
set $data_addr = $eax
|
||||
else
|
||||
set $data_addr = $esp
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
ddump $CONTEXTSIZE_DATA
|
||||
end
|
||||
document datawin
|
||||
Display valid address from one register in data window.
|
||||
Registers to choose are: esi, edi, eax, or esp.
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user