# General options set verbose off set disassembly-flavor intel set output-radix 0x10 set input-radix 0x10 # helpful shortcuts define lsbp info breakpoints end document lsbp List all breakpoints end define iframe info frame info args info locals end define reg info registers end # taviso's assembly macro define assemble # dont enter routine again if user hits enter dont-repeat if ($argc) if (*$arg0 = *$arg0) # check if we have a valid address by dereferencing it, # if we havnt, this will cause the routine to exit. end printf "Instructions will be written to %#x.\n", $arg0 else printf "Instructions will be written to stdout.\n" end printf "Type instructions, one per line.\n" printf "End with a line saying just \"end\".\n" if ($argc) # argument specified, assemble instructions into memory # at address specified. shell nasm -f bin -o /dev/stdout /dev/stdin \ <<< "$( echo "BITS 32"; while read -ep '>' r && test "$r" != end; \ do echo -E "$r"; done )" | hexdump -ve \ '1/1 "set *((unsigned char *) $arg0 + %#2_ax) = %#02x\n"' \ > ~/.gdbassemble # load the file containing set instructions source ~/.gdbassemble # all done. shell rm -f ~/.gdbassemble else # no argument, assemble instructions to stdout shell nasm -f bin -o /dev/stdout /dev/stdin \ <<< "$( echo "BITS 32"; while read -ep '>' r && test "$r" != end; \ do echo -E "$r"; done )" | ndisasm -i -b32 /dev/stdin end end document assemble Assemble instructions using nasm. Type a line containing "end" to indicate the end. If an address is specified, insert instructions at that address. If no address is specified, assembled instructions are printed to stdout. Use the pseudo instruction "org ADDR" to set the base address. end # __________________gdb options_________________ # set to 1 to have ARM target debugging as default, use the "arm" command to switch inside gdb set $ARM = 0 # set to 0 if you have problems with the colorized prompt - reported by Plouj with Ubuntu gdb 7.2 set $COLOUREDPROMPT = 0 # Colour the first line of the disassembly - default is green, if you want to change it search for # SETCOLOUR1STLINE and modify it :-) set $SETCOLOUR1STLINE = 0 # set to 0 to remove display of objectivec messages (default is 1) set $SHOWOBJECTIVEC = 1 # set to 0 to remove display of cpu registers (default is 1) set $SHOWCPUREGISTERS = 1 # set to 1 to enable display of stack (default is 0) set $SHOWSTACK = 1 # set to 1 to show 4 bytes of the stack at a time for 32bit and 8 bytes for 64bit set $STACK_WORDSIZE = 1 # set to 1 to enable display of data window (default is 0) set $SHOWDATAWIN = 0 # set to 0 to disable coloured display of changed registers set $SHOWREGCHANGES = 1 # set to 1 so skip command to execute the instruction at the new location # by default it EIP/RIP will be modified and update the new context but not execute the instruction set $SKIPEXECUTE = 0 # if $SKIPEXECUTE is 1 configure the type of execution # 1 = use stepo (do not get into calls), 0 = use stepi (step into calls) set $SKIPSTEP = 1 # show the ARM opcodes - change to 0 if you don't want such thing (in x/i command) set $ARMOPCODES = 1 # x86 disassembly flavor: 0 for Intel, 1 for AT&T set $X86FLAVOR = 0 # use colorized output or not set $USECOLOR = 0 set confirm off set verbose off set output-radix 0x10 set input-radix 0x10 # These make gdb never pause in its output set height 0 set width 0 set $SHOW_CONTEXT = 1 set $SHOW_NEST_INSN = 0 set $CONTEXTSIZE_STACK = 6 set $CONTEXTSIZE_DATA = 8 set $CONTEXTSIZE_CODE = 8 # __________________end gdb options_________________ # source ~/.reverser-gdbinit