The Official Radare2 Book — страница 20 из 64

To see help on all key bindings defined for visual mode, press ?:

Visual mode help:

? show this help

?? show the user-friendly hud

% in cursor mode finds matching pair, or toggle autoblocksz

@ redraw screen every 1s (multi-user view)

^ seek to the begining of the function

! enter into the visual panels mode

_ enter the flag/comment/functions/.. hud (same as VF_)

= set cmd.vprompt (top row)

| set cmd.cprompt (right column)

. seek to program counter

\ toggle visual split mode

" toggle the column mode (uses pC..)

/ in cursor mode search in current block

:cmd run radare command

;[-]cmt add/remove comment

0 seek to beginning of current function

[1-9] follow jmp/call identified by shortcut (like ;[1])

,file add a link to the text file

/*+-[] change block size, [] = resize hex.cols

seek aligned to block size (seek cursor in cursor mode)

a/A (a)ssemble code, visual (A)ssembler

b browse symbols, flags, configurations, classes, ...

B toggle breakpoint

c/C toggle (c)ursor and (C)olors

d[f?] define function, data, code, ..

D enter visual diff mode (set diff.from/to

e edit eval configuration variables

f/F set/unset or browse flags. f- to unset, F to browse, ..

gG go seek to begin and end of file (0-$s)

hjkl move around (or HJKL) (left-down-up-right)

i insert hex or string (in hexdump) use tab to toggle

mK/'K mark/go to Key (any key)

M walk the mounted filesystems

n/N seek next/prev function/flag/hit (scr.nkey)

g go/seek to given offset

O toggle asm.pseudo and asm.esil

p/P rotate print modes (hex, disasm, debug, words, buf)

q back to radare shell

r refresh screen / in cursor mode browse comments

R randomize color palette (ecr)

sS step / step over

t browse types

T enter textlog chat console (TT)

uU undo/redo seek

v visual function/vars code analysis menu

V (V)iew graph using cmd.graph (agv?)

wW seek cursor to next/prev word

xX show xrefs/refs of current function from/to data/code

yY copy and paste selection

z fold/unfold comments in disassembly

Z toggle zoom mode

Enter follow address of jump/call

Function Keys: (See 'e key.'), defaults to:

F2 toggle breakpoint

F4 run to cursor

F7 single step

F8 step over

F9 continue

Visual Disassembly

Navigation

Move within the Disassembly using arrow keys or hjkl. Use g to seek directly to a flag or an offset, type it when requested by the prompt: [offset]>. Follow a jump or a call using the number of your keyboard [0-9] and the number on the right in disassembly to follow a call or a jump. In this example typing 1 on the keyboard would follow the call to sym.imp.__libc_start_main and therefore, seek at the offset of this symbol.

0x00404894 e857dcffff call sym.imp.__libc_start_main ;[1]

Seek back to the previous location using u, U will allow you to redo the seek.

d
as define

d can be used to change the type of data of the current block, several basic types/structures are available as well as more advanced one using pf template:

d → ...

0x004048f7 48c1e83f shr rax, 0x3f

d → b

0x004048f7 .byte 0x48

d → B

0x004048f7 .word 0xc148

d → d

0x004048f7 hex length=165 delta=0

0x004048f7 48c1 e83f 4801 c648 d1fe 7415 b800 0000

...

To improve code readability you can change how radare2 presents numerical values in disassembly, by default most of disassembly display numerical value as hexadecimal. Sometimes you would like to view it as a decimal, binary or even custom defined constant. To change value format you can use d following by i then choose what base to work in, this is the equivalent to ahi:

d → i → ...

0x004048f7 48c1e83f shr rax, 0x3f

d → i → 10

0x004048f7 48c1e83f shr rax, 63

d → i → 2

0x004048f7 48c1e83f shr rax, '?'

Usage of the Cursor for Inserting/Patching...

Remember that, to be able to actually edit files loaded in radare2, you have to start it with the -w option. Otherwise a file is opened in read-only mode.

Pressing lowercase c toggles the cursor mode. When this mode is active, the currently selected byte (or byte range) is highlighted.

The cursor is used to select a range of bytes or simply to point to a byte. You can use the cursor to create a named flag at specifc location. To do so, seek to the required position, then press f and enter a name for a flag. If the file was opened in write mode using the -w flag or the o+ command, you can also use the cursor to overwrite a selected range with new values. To do so, select a range of bytes (with HJKL and SHIFT key pressed), then press i and enter the hexpair values for the new data. The data will be repeated as needed to fill the range selected. For example: