From 1ae7cac0f7ef0a58a01fe7a828d71210494afb11 Mon Sep 17 00:00:00 2001 From: Giovanni <561184+wargio@users.noreply.github.com> Date: Tue, 16 Jul 2024 15:33:05 +0800 Subject: [PATCH 01/16] Remove test flag from signatures.md (#124) --- src/analysis/signatures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/analysis/signatures.md b/src/analysis/signatures.md index 13aeff6a..28e554de 100644 --- a/src/analysis/signatures.md +++ b/src/analysis/signatures.md @@ -252,7 +252,7 @@ mysigdb-source/coff/x86/64/openssl_3_0_0/openssl_3_0_0.pat mysigdb-source/coff/x86/64/openssl_3_0_0/openssl_3_0_0.src.sha1 # create release compressed files in mysigdb/ using mysigdb-source/. -$ python generate-sig.py -s mysigdb-source/ -o mysigdb --test +$ python generate-sig.py -s mysigdb-source/ -o mysigdb source: mysigdb-source output: mysigdb Generating OpenSSL 3.0.0 for Windows signature (as openssl_3_0_0.sig) from openssl_3_0_0.pat From fb37a280c405c7b35b5acef1cc193f9d3b6a11cb Mon Sep 17 00:00:00 2001 From: Christopher Talib <3540752+evilcel3ri@users.noreply.github.com> Date: Fri, 2 Aug 2024 05:31:20 +0200 Subject: [PATCH 02/16] doc: Updating basic commands to up to date state (#126) --- _quarto.yml | 1 - src/basic_commands/dietline.md | 6 +-- src/basic_commands/flags.md | 85 +++++++++++++++++-------------- src/basic_commands/print_modes.md | 1 - src/basic_commands/sdb.md | 3 +- src/basic_commands/seeking.md | 10 ++-- src/basic_commands/types.md | 46 +++++++---------- src/basic_commands/write.md | 71 +++++++++++++------------- src/basic_commands/yank_paste.md | 33 +++++------- src/basic_commands/zoom.md | 82 ----------------------------- src/plugins/python.md | 2 - 11 files changed, 123 insertions(+), 217 deletions(-) delete mode 100644 src/basic_commands/zoom.md diff --git a/_quarto.yml b/_quarto.yml index cc43fbfb..187bd2fe 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -50,7 +50,6 @@ book: - src/basic_commands/print_modes.md - src/basic_commands/flags.md - src/basic_commands/write.md - - src/basic_commands/zoom.md - src/basic_commands/yank_paste.md - src/basic_commands/comparing_bytes.md - src/basic_commands/sdb.md diff --git a/src/basic_commands/dietline.md b/src/basic_commands/dietline.md index 25655232..8c783c69 100644 --- a/src/basic_commands/dietline.md +++ b/src/basic_commands/dietline.md @@ -16,7 +16,7 @@ autocompletion options. In the every shell and rizin command autocompletion is supported. There are multiple modes of it - files, flags, and SDB keys/namespaces. To provide the easy way to select possible completion options the scrollable popup widget is available. It can be enabled with `scr.prompt.popup`, just set it to -the `true`. +the `true` (as such: `e scr.prompt.popup=true`). # Emacs (default) mode @@ -48,7 +48,7 @@ By default dietline mode is compatible with readline Emacs-like mode key binding # Vi mode -Rizin also comes with in vi mode that can be enabled by toggling `scr.prompt.vi`. The various keybindings available in this mode are: +Rizin also comes with in vi mode that can be enabled by toggling `e scr.prompt.vi=true`). The various keybindings available in this mode are: ## Entering command modes - `ESC` - enter into the control mode @@ -80,4 +80,4 @@ Rizin also comes with in vi mode that can be enabled by toggling `scr.prompt.vi` - `p` - yank the top of the kill ring into the buffer at point. - `c` - acts similar to d based commands, but goes into insert mode in the end by prefixing the commands with numbers, the command is performed multiple times. -If you are finding it hard to keep track of which mode you are in, just set `scr.prompt.mode=true` to update the color of the prompt based on the vi-mode. +If you are finding it hard to keep track of which mode you are in, just enter `e scr.prompt.mode=true` to update the color of the prompt based on the vi-mode. \ No newline at end of file diff --git a/src/basic_commands/flags.md b/src/basic_commands/flags.md index df224e24..68afd96d 100644 --- a/src/basic_commands/flags.md +++ b/src/basic_commands/flags.md @@ -1,58 +1,69 @@ ## Flags -Flags are conceptually similar to bookmarks. They associate a name with a given offset in a file. Flags can be grouped into 'flag spaces'. A flag space is a namespace for flags, grouping together flags of similar characteristics or type. Examples for flag spaces: sections, registers, symbols. +Flags are conceptually similar to bookmarks. They associate a name with a given offset in a file. Flags can be grouped into 'flagspaces'. A flagspace is a namespace for flags, grouping together flags of similar characteristics or type. Examples for flagspaces: sections, registers or symbols. To create a flag: ``` -[0x4A13B8C0]> f flag_name @ offset +[0x100003ba0]> f flag_name @ offset ``` You can remove a flag by appending the `-` character to command. Most commands accept `-` as argument-prefix as an indication to delete something. ``` -[0x4A13B8C0]> f-flag_name +[0x100003ba0]> f-flag_name ``` To switch between or create new flagspaces use the `fs` command: ``` -[0x00005310]> fs? -|Usage: fs [*] [+-][flagspace|addr] # Manage flagspaces -| fs display flagspaces -| fs* display flagspaces as rizin commands -| fsj display flagspaces in JSON -| fs * select all flagspaces -| fs flagspace select flagspace or create if it doesn't exist -| fs-flagspace remove flagspace -| fs-* remove all flagspaces -| fs+foo push previous flagspace and set -| fs- pop to the previous flagspace -| fs-. remove the current flagspace -| fsq list flagspaces in quiet mode -| fsm [addr] move flags at given address to the current flagspace -| fss display flagspaces stack -| fss* display flagspaces stack in rizin commands -| fssj display flagspaces stack in JSON -| fsr newname rename selected flagspace -[0x00005310]> fs -0 439 * strings -1 17 * symbols -2 54 * sections -3 20 * segments -4 115 * relocs -5 109 * imports -[0x00005310]> +[0x100003ba0]> fs? +Usage: fs[l-mrs?] # Manage flagspaces +| fs # Add the flagspace +| fsl[jq] # Display flagspaces +| fs- # Remove the flagspace +| fs-* # Remove all flagspaces +| fsm # Move the flags at the current address to the current flagspace +| fsr # Rename the flag space +| fss<+-l> # Manage the flagspace stack +[0x100003ba0]> fsl +| 0 * classes +| 108 * functions +| 84 * imports +| 0 * platform.ports +| 87 * pointers +| 0 * registers +| 0 * registers.extended +| 0 * registers.mmio +| 91 * relocs +| 13 * sections +| 3 * segments +| 95 * strings +| 55 * symbols ``` -Here there are some command examples: +Here you can find some command examples using flagspaces: ``` -[0x4A13B8C0]> fs symbols ; select only flags in symbols flagspace -[0x4A13B8C0]> f ; list only flags in symbols flagspace -[0x4A13B8C0]> fs * ; select all flagspaces -[0x4A13B8C0]> f myflag ; create a new flag called 'myflag' -[0x4A13B8C0]> f-myflag ; delete the flag called 'myflag' +[0x100003ba0]> fs symbols ; select only flags in symbols flagspace +[0x100003ba0]> fsl + 0 . classes + 108 . functions + 84 . imports + 0 . platform.ports + 87 . pointers + 0 . registers + 0 . registers.extended + 0 . registers.mmio + 91 . relocs + 13 . sections + 3 . segments + 95 . strings + 55 * symbols ; symbols are selected +[0x100003ba0]> fl ; list only flags in symbols flagspace +[0x100003ba0]> fs * ; select all flagspaces +[0x100003ba0]> f myflag ; create a new flag called 'myflag' +[0x100003ba0]> f-myflag ; delete the flag called 'myflag' ``` You can rename flags with `fr`. @@ -99,12 +110,12 @@ to have the flags, for example inside the functions, with simple and ubiquitous ### Flag Zones -rizin offers flag zones, which lets you label different offsets on the scrollbar, for making it easier to navigate through large binaries. You can set a flag zone on the current seek using: +Rizin offers flag zones, which lets you label different offsets on the scrollbar, for making it easier to navigate through large binaries. You can set a flag zone on the current seek using: ``` [0x00003a04]> fz flag-zone-name ``` -Set `scr.scrollbar=1` and go to the Visual mode, to see your flag zone appear on the scrollbar on the right end of the window. +Set `e scr.scrollbar=1` and go to the Visual mode, to see your flag zone appear on the scrollbar on the right end of the window. See `fz?` for more information. \ No newline at end of file diff --git a/src/basic_commands/print_modes.md b/src/basic_commands/print_modes.md index 12e774b7..f574adc0 100644 --- a/src/basic_commands/print_modes.md +++ b/src/basic_commands/print_modes.md @@ -41,7 +41,6 @@ Below is a list of available print modes listed by `p?`: | pv[?][jh] [mode] show variable/pointer/value in memory | pwd display current working directory | px[?][owq] [len] hexdump of N bytes (o=octal, w=32bit, q=64bit) -| pz[?] [len] print zoom view (see pz? for help) [0x00005310]> ``` diff --git a/src/basic_commands/sdb.md b/src/basic_commands/sdb.md index 8596e878..a7665d65 100644 --- a/src/basic_commands/sdb.md +++ b/src/basic_commands/sdb.md @@ -81,6 +81,7 @@ $ gcc test.c -o test ``` $ rizin -A ./test +[0x08048320]> # list namespaces under analysis [0x08048320]> k ** bin analysis @@ -143,4 +144,4 @@ k analysis/meta/*~.C. Show a comment at given offset: ``` k %analysis/meta/[1]meta.C.0x100005000 -``` +``` \ No newline at end of file diff --git a/src/basic_commands/seeking.md b/src/basic_commands/seeking.md index 49e83d5d..186d45e6 100644 --- a/src/basic_commands/seeking.md +++ b/src/basic_commands/seeking.md @@ -57,7 +57,6 @@ Usage: s[?] # Seek commands | sp [] # Seek to prev location | so [] # Seek to next opcodes | sr # Seek to register -| sleep # Sleep for the specified amount of seconds > 3s++ ; 3 times block-seeking @@ -67,11 +66,11 @@ Usage: s[?] # Seek commands If you want to inspect the result of a math expression, you can evaluate it using the `?` command. Simply pass the expression as an argument. The result can be displayed in hexadecimal, decimal, octal or binary formats. ``` -> ? 0x100+200 +> % 0x100+200 0x1C8 ; 456d ; 710o ; 1100 1000 ``` -There are also subcommands of `?` that display the output in one specific format (base 10, base 16 ,...). See `?v` and `?vi`. +There are also subcommands of `%` that display the output in one specific format (base 10, base 16 ,...). See `%v` for instance. In the visual mode, you can press `u` (undo) or `U` (redo) inside the seek history to return back to previous or forward to the next location. @@ -111,7 +110,7 @@ Print current address: [0x00000000]> ``` -There is an alternate way to print current position: `?v $$`. +There is an alternate way to print current position: `%v $$`. Seek N positions forward, space is optional: @@ -147,5 +146,4 @@ f undo_1 @ 0x400410 f undo_0 @ 0x400411 # Current seek @ 0x400410 f redo_0 @ 0x4005b4 -``` - +``` \ No newline at end of file diff --git a/src/basic_commands/types.md b/src/basic_commands/types.md index aaade2f5..1cb26271 100644 --- a/src/basic_commands/types.md +++ b/src/basic_commands/types.md @@ -4,32 +4,21 @@ Rizin can also work with data types. You can use standard C data types or define ``` [0x00000000]> t? -Usage: t # cparse types commands -| t List all loaded types -| tj List all loaded types as json -| t Show type in 'pf' syntax -| t* List types info in rizin commands -| t- Delete types by its name -| t-* Remove all types -| tail [filename] Output the last part of files -| tc [type.name] List all/given types in C output format -| te[?] List all loaded enums -| td[?] Load types from string -| tf List all loaded functions signatures -| tk Perform sdb query -| tl[?] Show/Link type to an address -| tn[?] [-][addr] manage noreturn function attributes and marks -| to - Open cfg.editor to load types -| to Load types from C header file -| toe [type.name] Open cfg.editor to edit types -| tos Load types from parsed Sdb database -| tp [addr|varname] cast data at
to and print it (XXX: type can contain spaces) -| tpv @ [value] Show offset formatted for given type -| tpx Show value for type with specified byte sequence (XXX: type can contain spaces) -| ts[?] Print loaded struct types -| tu[?] Print loaded union types -| tx[f?] Type xrefs -| tt[?] List all loaded typedefs +Usage: t[?] # Types, noreturn, signatures, C parser and more +| t[j*] [] # List all types / Show type information +| t- # Remove the type +| t-* # Remove all types +| tc[dc] # List loaded types in C format +| td # Define type from C definition +| te[jbcdf] # List loaded enums +| tf[j-c?] # List loaded functions definitions +| tn[j-?] # Manage noreturn function attributes and marks +| to[es] # Open C header file and load types from it +| tp[vx] # Print formatted type casted to the address +| ts[jlcd] # List loaded structures +| tt[jc] # List loaded typedefs +| tu[jlcd] # List loaded unions +| tx[fgl] # Type xrefs ``` ### Defining new types @@ -38,7 +27,7 @@ There are three different methods to define new types: 1. Defining a new type from rizin shell immediately, to do this you will use `td` command, and put the whole line between double quotes. For example: -`"td struct person {int age; char *name; char *address;};"` +`td "struct person {int age; char *name; char *address;};"` 2. You can also use `to -` to open a text editor and write your own types in there. This is preferable when you got too many types to define. @@ -54,5 +43,4 @@ You can also cast pointers to data types and view data in there accordingly with name : (*0x4005b0) 0x7fff170a46b4 = My name address : (*0x4005b8) 0x7fff170a46bc = My age [0x00400511]> -``` - +``` \ No newline at end of file diff --git a/src/basic_commands/write.md b/src/basic_commands/write.md index 1915e690..a389e3f8 100644 --- a/src/basic_commands/write.md +++ b/src/basic_commands/write.md @@ -1,5 +1,7 @@ ## Writing Data +To be able to use Rizin in write mode, you need to load your binary as such: `rizin -w bin`. + Rizin can manipulate a loaded binary file in many ways. You can resize the file, move and copy/paste bytes, insert new bytes (shifting data to the end of the block or file), or simply overwrite bytes. New data may be given as a wide-string, assembler instructions, or the data may be read in from another file. Resize the file using the `r` command. It accepts a numeric argument. A positive value sets a new size for the file. A negative one will truncate the file to the current seek position minus N bytes. @@ -17,24 +19,25 @@ Usage: w[?] # Write commands | wB[-] # Set or unset bits with given value | wv[1248] # Write value of given size | w0 # Write bytes with value 0x00 -| w<1248><+-> [] # increment/decrement byte, word, .. +| w<1248><+-> [] # Increment/decrement byte, word, ... | w6 # Write base64 [d]ecoded or [e]ncoded string -| we[?] # Extend write operations (insert bytes instead of replacing) -| wu[?] # Apply unified hex patch (see output of cu) +| we # Extend write operations (insert bytes instead of replacing) +| wu # Apply unified hex patch (see output of cu) | wr # Write random bytes -| wA[?] # Alter/modify opcode at current seek (see wA?) -| wc[?] # Write cache commands -| wz[?] # Write zero-terminated string -| wt[?] # Write to file +| wc[j*-+ip?] # Write cache commands +| wz # Write zero-terminated string | wf[xfs] # Write data from file, socket, offset -| ww[?] # Write wide string +| ww # Write wide (16-bit) little-endian string | wx[f] # Write hexadecimal data | wa[ifo] # Write opcodes -| wb[?] # Write in current block with cyclic hexstring -| wm[?] # Set binary mask hexpair to be used as cyclic write mask -| wo[?] # Write in block with operation -| wd[?] # Duplicate N bytes from offset at current seek +| wb # Write in current block a hexstring cyclically +| wm[-] # Set binary mask hexpair to be used as cyclic write mask +| wo # Write a block with a special operation +| wD[/] # Write de Bruijn pattern +| wd # Duplicate bytes from offset to current seek | ws # Write 1 byte for length and then the string + +Detailed help for w is provided by w??. ``` Some examples: @@ -52,27 +55,27 @@ an operator. The command is applied to the current block. Supported operators in ``` [0x4A13B8C0]> wo? -|Usage: wo[asmdxoArl24] [hexpairs] @ addr[:bsize] -|Example: -| wox 0x90 ; xor cur block with 0x90 -| wox 90 ; xor cur block with 0x90 -| wox 0x0203 ; xor cur block with 0203 -| woa 02 03 ; add [0203][0203][...] to curblk -| woe 02 03 ; create sequence from 2 to 255 with step 3 -|Supported operations: -| wow == write looped value (alias for 'wb') -| woa += addition -| wos -= subtraction -| wom *= multiply -| wod /= divide -| wox ^= xor -| woo |= or -| woA &= and -| woR random bytes (alias for 'wr $b' -| wor >>= shift right -| wol <<= shift left -| wo2 2= 2 byte endian swap -| wo4 4= 4 byte endian swap +Usage: wo # Write a block with a special operation +| wo2 # Swap the endianess of 2-bytes values in the current block +| wo4 # Swap the endianess of 4-bytes values in the current block +| wo8 # Swap the endianess of 8-bytes values in the current block +| woa # Add each existing byte in the block with the given +| woA # Bitwise-and each existing byte in the block with the given +| wod # Divide each existing byte in the block with the given +| wol # Bitwise-shift-left each existing byte in the block with the given +| wom # Multiply each existing byte in the block with the given +| woo # Bitwise-or each existing byte in the block with the given +| wor # Bitwise-shift-right each existing byte in the block with the given +| wos # Subtract each existing byte in the block with the given +| wox # Bitwise-xor each existing byte in the block with the given +| woe =1 =1 # Write a sequence repeatedly with values from up to in the block +| woD [] # Decrypt current block with given , and optional +| woE [] # Encrypt current block with given , and optional + +Examples: +| woa 20 # Content before: 1122334455 ; Content after: 3142536475 +| wos 2021 # Content before: 1122334455 ; Content after: f101132335 +| wo4 # Content before: 1122334455667788; Content after: 4433221188776655 ``` It is possible to implement cipher-algorithms using rizin core primitives and `wo`. A sample session performing xor(90) + add(01, 02): @@ -98,4 +101,4 @@ It is possible to implement cipher-algorithms using rizin core primitives and `w 0x7fcd6a891640 91de 1a7e d91f 96db 14d9 9593 1401 9593 0x7fcd6a891650 c4da 1a6d e89a d959 9192 9159 1cb1 d959 0x7fcd6a891660 9192 79cb 81da 1652 81da 1456 a252 7c77 -``` +``` \ No newline at end of file diff --git a/src/basic_commands/yank_paste.md b/src/basic_commands/yank_paste.md index 17439fef..99908bf9 100644 --- a/src/basic_commands/yank_paste.md +++ b/src/basic_commands/yank_paste.md @@ -15,27 +15,18 @@ You can yank/paste bytes in visual mode selecting them with the cursor mode (`Vc ``` [0x00000000]> y? -Usage: y[ptxy] [len] [[@]addr] # See wd? for memcpy, same as 'yf'. -| y! open cfg.editor to edit the clipboard -| y 16 0x200 copy 16 bytes into clipboard from 0x200 -| y 16 @ 0x200 copy 16 bytes into clipboard from 0x200 -| y 16 copy 16 bytes into clipboard -| y show yank buffer information (srcoff len bytes) -| y* print in rizin commands what's been yanked -| yf 64 0x200 copy file 64 bytes from 0x200 from file -| yfa file copy copy all bytes from file (opens w/ io) -| yfx 10203040 yank from hexpairs (same as ywx) -| yj print in JSON commands what's been yanked -| yp print contents of clipboard -| yq print contents of clipboard in hexpairs -| ys print contents of clipboard as string -| yt 64 0x200 copy 64 bytes from current seek to 0x200 -| ytf file dump the clipboard to given file -| yw hello world yank from string -| ywx 10203040 yank from hexpairs (same as yfx) -| yx print contents of clipboard in hexadecimal -| yy 0x3344 paste clipboard -| yz [len] copy nul-terminated string (up to blocksize) into clipboard +Usage: y[?] # Yank/paste bytes from/to memory +| y[j*q] [] # Yank bytes / Show yank contents +| ye # Open cfg.editor to edit the clipboard +| yf # Yank bytes from file +| yfa # Yank whole file into clipboard +| yp [] # Print contents of clipboards as raw data +| ys [] # Print contents of clipboards as string +| yt # Copy bytes from current seek to +| ywx # Yank from hexpairs string +| yx [] # Print contents of clipboard in hexadecimal +| yy [] # Paste bytes from yank clipboard +| yz [] # Copy NULL-terminated string into clipboard ``` Sample session: diff --git a/src/basic_commands/zoom.md b/src/basic_commands/zoom.md deleted file mode 100644 index 6b7bfd1b..00000000 --- a/src/basic_commands/zoom.md +++ /dev/null @@ -1,82 +0,0 @@ -## Zoom - -The zoom is a print mode that allows you to get a global view of the whole file or a memory map on a single screen. In this mode, each byte represents `file_size/block_size` bytes of the file. Use the `pz` command, or just use `Z` in the visual mode to toggle the zoom mode. - -The cursor can be used to scroll faster through the zoom out view. Pressing `z` again will zoom-in at the cursor position. - -``` -[0x004048c5]> pz? -|Usage: pz [len] print zoomed blocks (filesize/N) -| e zoom.maxsz max size of block -| e zoom.from start address -| e zoom.to end address -| e zoom.byte specify how to calculate each byte -| pzp number of printable chars -| pzf count of flags in block -| pzs strings in range -| pz0 number of bytes with value '0' -| pzF number of bytes with value 0xFF -| pze calculate entropy and expand to 0-255 range -| pzh head (first byte value); This is the default mode -``` - -Let's see some examples: - -``` -[0x08049790]> e zoom.byte=h -[0x08049790]> pz // or default pzh -0x00000000 7f00 0000 e200 0000 146e 6f74 0300 0000 -0x00000010 0000 0000 0068 2102 00ff 2024 e8f0 007a -0x00000020 8c00 18c2 ffff 0080 4421 41c4 1500 5dff -0x00000030 ff10 0018 0fc8 031a 000c 8484 e970 8648 -0x00000040 d68b 3148 348b 03a0 8b0f c200 5d25 7074 -0x00000050 7500 00e1 ffe8 58fe 4dc4 00e0 dbc8 b885 -``` -``` -[0x08049790]> e zoom.byte=p -[0x08049790]> pz // or pzp -0x00000000 2f47 0609 070a 0917 1e9e a4bd 2a1b 2c27 -0x00000010 322d 5671 8788 8182 5679 7568 82a2 7d89 -0x00000020 8173 7f7b 727a 9588 a07b 5c7d 8daf 836d -0x00000030 b167 6192 a67d 8aa2 6246 856e 8c9b 999f -0x00000040 a774 96c3 b1a4 6c8e a07c 6a8f 8983 6a62 -0x00000050 7d66 625f 7ea4 7ea6 b4b6 8b57 a19f 71a2 -``` -``` -[0x08049790]> eval zoom.byte = flags -[0x08049790]> pz // or pzf -0x00406e65 48d0 80f9 360f 8745 ffff ffeb ae66 0f1f -0x00406e75 4400 0083 f801 0f85 3fff ffff 410f b600 -0x00406e85 3c78 0f87 6301 0000 0fb6 c8ff 24cd 0026 -0x00406e95 4100 660f 1f84 0000 0000 0084 c074 043c -0x00406ea5 3a75 18b8 0500 0000 83f8 060f 95c0 e9cd -0x00406eb5 feff ff0f 1f84 0000 0000 0041 8801 4983 -0x00406ec5 c001 4983 c201 4983 c101 e9ec feff ff0f -``` -``` -[0x08049790]> e zoom.byte=F -[0x08049790]> pO // or pzF -0x00000000 0000 0000 0000 0000 0000 0000 0000 0000 -0x00000010 0000 2b5c 5757 3a14 331f 1b23 0315 1d18 -0x00000020 222a 2330 2b31 2e2a 1714 200d 1512 383d -0x00000030 1e1a 181b 0a10 1a21 2a36 281e 1d1c 0e11 -0x00000040 1b2a 2f22 2229 181e 231e 181c 1913 262b -0x00000050 2b30 4741 422f 382a 1e22 0f17 0f10 3913 -``` - -You can limit zooming to a range of bytes instead of the whole bytespace. Change `zoom.from` and `zoom.to` eval variables: - -``` -[0x00003a04]> el zoom. -zoom.byte: Zoom callback to calculate each byte (See pz? for help) -zoom.from: Zoom start address -zoom.in: Specify boundaries for zoom -zoom.maxsz: Zoom max size of block -zoom.to: Zoom end address -[0x00003a04]> e zoom. -zoom.byte = h -zoom.from = 0 -zoom.in = io.map -zoom.maxsz = 512 -zoom.to = 0 -``` diff --git a/src/plugins/python.md b/src/plugins/python.md index b4ee8238..59ac1df5 100644 --- a/src/plugins/python.md +++ b/src/plugins/python.md @@ -1,7 +1,5 @@ # Python plugins -At first, to be able to write a plugins in Python for rizin you need to install -rz-lang plugin: `rz-pm -i lang-python`. Note - in the following examples there are missing functions of the actual decoding for the sake of readability! From d02afe0b62d3a20af5069ddaef0b0fd9f0d114b9 Mon Sep 17 00:00:00 2001 From: Samuel Bronson Date: Thu, 5 Sep 2024 21:54:34 -0400 Subject: [PATCH 03/16] Update compilation_android.md: escape * (#128) This asterisk confused your formatter --- src/introduction/compilation_android.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/introduction/compilation_android.md b/src/introduction/compilation_android.md index cd58a5e3..1c7b75e3 100644 --- a/src/introduction/compilation_android.md +++ b/src/introduction/compilation_android.md @@ -54,7 +54,7 @@ $ meson --default-library static -Dstatic_runtime=true --prefix=/tmp/android-dir A bit of explanation about all the options: * `--default-library static -Dstatic_runtime=true`: this ensure that libraries - and binaries are statically compiled, so you do not need to properly set LD_* + and binaries are statically compiled, so you do not need to properly set LD_\* environment variables in your Android environment to make it find the right libraries. Binaries have everything they need inside. * `-Dblob=true`: it tells meson to compile just one binary with all the needed From bec951c92adf4755a05ddb5accf3cee66726290d Mon Sep 17 00:00:00 2001 From: Giovanni <561184+wargio@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:34:47 +0800 Subject: [PATCH 04/16] Fix wrong link to rizin --- src/introduction/windows_compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/introduction/windows_compilation.md b/src/introduction/windows_compilation.md index 37cfdd01..41999b54 100644 --- a/src/introduction/windows_compilation.md +++ b/src/introduction/windows_compilation.md @@ -50,7 +50,7 @@ Any time you wish to enter this environment, open the Anaconda Prompt and re-iss 4. Verify Meson is version 0.50 or higher (`meson -v`) #### Install Git for Windows -All Rizin code is managed via the Git version control system and [hosted on GitHub](https://github.com/rizin). +All Rizin code is managed via the Git version control system and [hosted on GitHub](https://github.com/rizinorg). Follow these steps to install Git for Windows. From 05cc826c85ba1395a095929b9551f1533030c101 Mon Sep 17 00:00:00 2001 From: "Azamat H. Hackimov" Date: Tue, 12 Nov 2024 21:09:51 +0300 Subject: [PATCH 05/16] Update and cleanup "Basic Commands" chapter Update most of rizin invocations, remove deprecated and removed stuff. Replace images of print modes with code listings. Add simple C99-compliant program "hello_world" which will be used in examples. Remove unreferenced "Working with data types" section as it not linked to chapter and duplicated by "Working with data types" from "Analysis" chapter. For all changed command invocation was used rizin @ dev (d2bd9406a). --- examples/hello_world/hello_world.c | 34 ++ src/basic_commands/block_size.md | 26 +- src/basic_commands/comparing_bytes.md | 79 ++--- src/basic_commands/dietline.md | 20 +- src/basic_commands/flags.md | 18 +- src/basic_commands/intro.md | 27 +- src/basic_commands/mapping_files.md | 45 ++- src/basic_commands/print_modes.md | 470 ++++++++++++++----------- src/basic_commands/print_modes_px.png | Bin 133013 -> 0 bytes src/basic_commands/print_modes_pxq.png | Bin 122651 -> 0 bytes src/basic_commands/print_modes_pxw.png | Bin 287402 -> 0 bytes src/basic_commands/sdb.md | 67 ++-- src/basic_commands/sections.md | 84 +++-- src/basic_commands/seeking.md | 92 +++-- src/basic_commands/types.md | 46 --- src/basic_commands/write.md | 16 +- src/basic_commands/yank_paste.md | 6 +- 17 files changed, 587 insertions(+), 443 deletions(-) create mode 100644 examples/hello_world/hello_world.c delete mode 100644 src/basic_commands/print_modes_px.png delete mode 100644 src/basic_commands/print_modes_pxq.png delete mode 100644 src/basic_commands/print_modes_pxw.png delete mode 100644 src/basic_commands/types.md diff --git a/examples/hello_world/hello_world.c b/examples/hello_world/hello_world.c new file mode 100644 index 00000000..6cba78c7 --- /dev/null +++ b/examples/hello_world/hello_world.c @@ -0,0 +1,34 @@ +#include +#include +#include + +/* + * This is simple hello_world program made for education purposes. + * Licensed under CC-BY-SA 4.0 license. + * + * In order to compile executable run: + * + * gcc -o hello_world hello_world.c + * + */ + +int main(int argc, char* argv[]) +{ + const char *str1 = "Hello "; + const char *str2 = "world!"; + + size_t str1_size = strlen(str1); + size_t str2_size = strlen(str2); + + char *output = malloc(str1_size + str2_size + 1); + if (output) + { + strcpy(output, str1); + strcat(output, str2); + + puts(output); + free(output); + } + + return 0; +} diff --git a/src/basic_commands/block_size.md b/src/basic_commands/block_size.md index b6191603..f7256aff 100644 --- a/src/basic_commands/block_size.md +++ b/src/basic_commands/block_size.md @@ -1,19 +1,16 @@ ## Block Size -The block size determines how many bytes rizin commands will process when not given an explicit size argument. You can temporarily change the block size by specifying a numeric argument to the print commands. For example `px 20`. +The block size determines how many bytes rizin commands will process when not given an explicit size argument. +You can temporarily change the block size by specifying a numeric argument to the print commands. For example `px 20`. ``` [0x00000000]> b? -Usage: b[f] [arg] # Get/Set block size -| b 33 set block size to 33 -| b eip+4 numeric argument can be an expression -| b display current block size -| b+3 increase blocksize by 3 -| b-16 decrease blocksize by 16 -| b* display current block size in rizin command -| bf foo set block size to flag size -| bj display block size information in JSON -| bm 1M set max block size +Usage: b[j*-+fm] # Display or change the block size +| b[j*] [] # Set/Get current block size +| b- # Decrease current block size +| b+ # Increase current block size +| bf # Set block size to flag size +| bm [] # Set/Get max block size ``` The `b` command is used to change the block size: @@ -24,7 +21,9 @@ The `b` command is used to change the block size: [0x00000000]> b-32 # ... = 0xf0 ``` -The `bf` command is used to change the block size to value specified by a flag. For example, in symbols, the block size of the flag represents the size of the function. To make that work, you have to either run function analysis `af` (which is included in `aa`) or manually seek and define some functions e.g. via `Vd`. +The `bf` command is used to change the block size to value specified by a flag. For example, in symbols, the block size +of the flag represents the size of the function. To make that work, you have to either run function analysis `af` +(which is included in `aa`) or manually seek and define some functions e.g. via `Vd`. ``` [0x00000000]> bf sym.main # block size = sizeof(sym.main) @@ -37,7 +36,8 @@ You can combine two operations in a single `pdf` command. Except that `pdf` neit [0x00000000]> pdf @ sym.main # disassemble sym.main ``` -Another way around is to use special variables `$FB` and `$FS` which denote Function's Beginning and Size at the current seek. Read more about [Usable variables](../refcard/intro.md#usable-variables-in-expression). +Another way around is to use special variables `$FB` and `$FS` which denote Function's Beginning and Size at the +current seek. Read more about [Usable variables](../refcard/intro.md#usable-variables-in-expression). ``` [0x00000000]> s sym.main + 0x04 diff --git a/src/basic_commands/comparing_bytes.md b/src/basic_commands/comparing_bytes.md index f0f72289..8b974435 100644 --- a/src/basic_commands/comparing_bytes.md +++ b/src/basic_commands/comparing_bytes.md @@ -1,52 +1,46 @@ ## Comparing Bytes -For most generic reverse engineering tasks like finding the differences between two binary files, which bytes has changed, find differences in the graphs of the code analysis results, and other diffing operations you can just use rz-diff: +For most generic reverse engineering tasks like finding the differences between two binary files, which bytes has +changed, find differences in the graphs of the code analysis results, and other diffing operations you can just use +rz-diff: ``` $ rz-diff -h ``` -Inside rizin, the functionalities exposed by rz-diff are available with the `c` command. +Inside Rizin, the functionalities exposed by rz-diff are available with the `c` command. -`c` (short for "compare") allows you to compare arrays of bytes from different sources. The command accepts input in a number of formats and then compares it against values found at current seek position. +`c` (short for "compare") allows you to compare arrays of bytes from different sources. The command accepts input +in a number of formats and then compares it against values found at current seek position. ``` -[0x00404888]> c? -Usage: c[?dfx] [argument] # Compare -| c [string] Compare a plain with escaped chars string -| c* [string] Same as above, but printing rizin commands instead -| c1 [addr] Compare 8 bits from current offset -| c2 [value] Compare a word from a math expression -| c4 [value] Compare a doubleword from a math expression -| c8 [value] Compare a quadword from a math expression -| cat [file] Show contents of file (see pwd, ls) -| cc [at] Compares in two hexdump columns of block size -| ccc [at] Same as above, but only showing different lines -| ccd [at] Compares in two disasm columns of block size -| cd [dir] chdir -| cf [file] Compare contents of file at current seek -| cg[?] [o] [file] Graphdiff current file and [file] -| cl|cls|clear Clear screen, (clear0 to goto 0, 0 only) -| cu[?] [addr] @at Compare memory hexdumps of $$ and dst in unified diff -| cud [addr] @at Unified diff disasm from $$ and given address -| cv[1248] [hexpairs] @at Compare 1,2,4,8-byte (silent return in $?) -| cV[1248] [addr] @at Compare 1,2,4,8-byte address contents (silent, return in $?) -| cw[?] [us?] [...] Compare memory watchers -| cx [hexpair] Compare hexpair string (use '.' as nibble wildcard) -| cx* [hexpair] Compare hexpair string (output rizin commands) -| cX [addr] Like 'cc' but using hexdiff output +[0x00001100]> c? +Usage: c[?] # Compare block with given data +| c[j] # Compare an escaped with data at current offset +| c1 # Compare 8-bit data at current offset with the data at +| ca[j] # Compare bytes of data at with the data at current offset +| cb[j] # Compare (up to 8) bytes at current offset with a number +| cc # Compare hexdump of data of block size at with the data at current offset +| ccc # Show different lines between hexdump of a block of data at wth the data at current offset +| ccd [] # Compare disassembly of block size at and at the current offset +| cf[j] # Compare the contents of with the data at current offset +| cu[1248d] # Unified diff commands +| cw[lrux] # Compare watcher commands +| cx[j] # Compare data at current offset with a hexpair string (also return in $?) +| cX[j] # Compare hexdump of data of block size at with the data at current offset using hexdiff output ``` To compare memory contents at current seek position against a given string of values, use `cx`: ``` -[0x08048000]> p8 4 -7f 45 4c 46 +[0x00001100]> p8 4 +7f454c46 -[0x08048000]> cx 7f 45 90 46 +[0x00001100]> cx 7f 45 90 46 Compare 3/4 equal bytes -0x00000002 (byte=03) 90 ' ' -> 4c 'L' -[0x08048000]> +0x00001102 (byte=03) 90 ' ' -> 4c 'L' +Compare 3/4 equal bytes (75%) +[0x00001100]> ``` Another subcommand of the `c` command is `cc` which stands for "compare code". @@ -62,18 +56,7 @@ To compare contents of two functions specified by their names: [0x08049A80]> cc sym.main2 @ sym.main ``` -`c8` compares a quadword from the current seek (in the example below, 0x00000000) against a math expression: - -``` -[0x00000000]> c8 4 - -Compare 1/8 equal bytes (0%) -0x00000000 (byte=01) 7f ' ' -> 04 ' ' -0x00000001 (byte=02) 45 'E' -> 00 ' ' -0x00000002 (byte=03) 4c 'L' -> 00 ' ' -``` - -The number parameter can, of course, be math expressions which use flag names and anything allowed in an expression: +The number parameter can be math expressions which use flag names and anything allowed in an expression: ``` [0x00000000]> cx 7f469046 @@ -86,8 +69,8 @@ Compare 2/4 equal bytes You can use the compare command to find differences between a current block and a file previously dumped to a disk: ``` -rizin /bin/true -[0x08049A80]> s 0 -[0x08048000]> cf /bin/true -Compare 512/512 equal bytes +rizin /usr/bin/true +[0x00002680]> s 0 +[0x00000000]> cf /usr/bin/true +Compare 256/256 equal bytes (100%) ``` diff --git a/src/basic_commands/dietline.md b/src/basic_commands/dietline.md index 8c783c69..4fb6987f 100644 --- a/src/basic_commands/dietline.md +++ b/src/basic_commands/dietline.md @@ -1,6 +1,7 @@ # Dietline -Rizin comes with the lean [readline](https://en.wikipedia.org/wiki/GNU_Readline)-like input capability through the lean library to handle the command edition and history navigation. It allows users to perform cursor movements, search the +Rizin comes with the lean [readline](https://en.wikipedia.org/wiki/GNU_Readline)-like input capability through the lean +library to handle the command edition and history navigation. It allows users to perform cursor movements, search the history, and implements autocompletion. Moreover, due to the rizin portability, dietline provides the uniform experience among all supported platforms. It is used in all rizin subshells - main prompt, SDB shell, visual prompt, and offsets prompt. It also implements the most common features @@ -20,7 +21,7 @@ the `true` (as such: `e scr.prompt.popup=true`). # Emacs (default) mode -By default dietline mode is compatible with readline Emacs-like mode key bindings. Thus active are: +By default, dietline mode is compatible with readline Emacs-like mode key bindings. Thus, active are: ## Moving - `Ctrl-a` - move to the beginning of the line @@ -38,7 +39,8 @@ By default dietline mode is compatible with readline Emacs-like mode key binding ## Killing and Yanking - `Ctrl-k` - kill the text from point to the end of the line. - `Ctrl-x` - kill backward from the cursor to the beginning of the current line. -- `Ctrl-t` - kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as forward-word. +- `Ctrl-t` - kill from point to the end of the current word, or if between words, to the end of the next word. + Word boundaries are the same as forward-word. - `Ctrl-w` - kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. - `Ctrl-y` - yank the top of the kill ring into the buffer at point. - `Ctrl-]` - rotate the kill-ring, and yank the new top. You can only do this if the prior command is yank or yank-pop. @@ -48,7 +50,8 @@ By default dietline mode is compatible with readline Emacs-like mode key binding # Vi mode -Rizin also comes with in vi mode that can be enabled by toggling `e scr.prompt.vi=true`). The various keybindings available in this mode are: +Rizin also comes with in vi mode that can be enabled by toggling `e scr.prompt.vi=true`. The various keybindings +available in this mode are: ## Entering command modes - `ESC` - enter into the control mode @@ -76,8 +79,11 @@ Rizin also comes with in vi mode that can be enabled by toggling `e scr.prompt.v - `dl` - delete a character to the right - `d$` - kill the text from point to the end of the line. - `d^` - kill backward from the cursor to the beginning of the current line. -- `de` - kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as forward-word. +- `de` - kill from point to the end of the current word, or if between words, to the end of the next word. + Word boundaries are the same as forward-word. - `p` - yank the top of the kill ring into the buffer at point. -- `c` - acts similar to d based commands, but goes into insert mode in the end by prefixing the commands with numbers, the command is performed multiple times. +- `c` - acts similar to d based commands, but goes into insert mode in the end by prefixing the commands with numbers, + the command is performed multiple times. -If you are finding it hard to keep track of which mode you are in, just enter `e scr.prompt.mode=true` to update the color of the prompt based on the vi-mode. \ No newline at end of file +If you are finding it hard to keep track of which mode you are in, just enter `e scr.prompt.mode=true` to update +the color of the prompt based on the vi-mode. diff --git a/src/basic_commands/flags.md b/src/basic_commands/flags.md index 68afd96d..3906e54b 100644 --- a/src/basic_commands/flags.md +++ b/src/basic_commands/flags.md @@ -1,6 +1,8 @@ ## Flags -Flags are conceptually similar to bookmarks. They associate a name with a given offset in a file. Flags can be grouped into 'flagspaces'. A flagspace is a namespace for flags, grouping together flags of similar characteristics or type. Examples for flagspaces: sections, registers or symbols. +Flags are conceptually similar to bookmarks. They associate a name with a given offset in a file. Flags can be grouped +into 'flagspaces'. A flagspace is a namespace for flags, grouping together flags of similar characteristics or type. +Examples for flagspaces: sections, registers or symbols. To create a flag: @@ -8,7 +10,8 @@ To create a flag: [0x100003ba0]> f flag_name @ offset ``` -You can remove a flag by appending the `-` character to command. Most commands accept `-` as argument-prefix as an indication to delete something. +You can remove a flag by appending the `-` character to command. Most commands accept `-` as argument-prefix as +an indication to delete something. ``` [0x100003ba0]> f-flag_name @@ -70,8 +73,9 @@ You can rename flags with `fr`. ### Local flags -Every flag name should be unique for addressing reasons. But it is quite a common need -to have the flags, for example inside the functions, with simple and ubiquitous names like `loop` or `return`. For this purpose you can use so called "local" flags, which are tied to the function where they reside. It is possible to add them using `f.` command: +Every flag name should be unique for addressing reasons. But it is quite a common need to have the flags, for example +inside the functions, with simple and ubiquitous names like `loop` or `return`. For this purpose you can use so-called +"local" flags, which are tied to the function where they reside. It is possible to add them using `f.` command: ``` [0x00003a04]> pd 10 @@ -110,12 +114,14 @@ to have the flags, for example inside the functions, with simple and ubiquitous ### Flag Zones -Rizin offers flag zones, which lets you label different offsets on the scrollbar, for making it easier to navigate through large binaries. You can set a flag zone on the current seek using: +Rizin offers flag zones, which lets you label different offsets on the scrollbar, for making it easier to navigate +through large binaries. You can set a flag zone on the current seek using: ``` [0x00003a04]> fz flag-zone-name ``` -Set `e scr.scrollbar=1` and go to the Visual mode, to see your flag zone appear on the scrollbar on the right end of the window. +Set `e scr.scrollbar=1` and go to the Visual mode, to see your flag zone appear on the scrollbar on the right end of +the window. See `fz?` for more information. \ No newline at end of file diff --git a/src/basic_commands/intro.md b/src/basic_commands/intro.md index 663288f9..08122c0b 100644 --- a/src/basic_commands/intro.md +++ b/src/basic_commands/intro.md @@ -1,8 +1,12 @@ # Basic Commands -Most command names in rizin are derived from action names. They should be easy to remember, as they are short. Actually, all commands are single letters. Subcommands or related commands are specified using the second character of the command name. For example, `/ foo` is a command to search plain string, while `/x 90 90` is used to look for hexadecimal pairs. +Most command names in rizin are derived from action names. They should be easy to remember, as they are short. +Actually, all commands are single letters. Subcommands or related commands are specified using the second character +of the command name. For example, `/ foo` is a command to search plain string, while `/x 90 90` is used to look for +hexadecimal pairs. -The general format for a valid command (as explained in the [Rizin Command-line](../first_steps/commandline_rizin.md) chapter) looks like this: +The general format for a valid command (as explained in the [Rizin Command-line](../first_steps/commandline_rizin.md) +chapter) looks like this: ``` [.][times][cmd][~grep][@[@iter]addr!size][|>pipe] ; ... @@ -14,20 +18,24 @@ For example, > 3s +1024 ; seeks three times 1024 from the current seek ``` -If a command starts with `R!`, the rest of the string is passed to the currently loaded IO plugin (a debugger, for example). Most plugins provide help messages with `R!?` or `R!help`. +If a command starts with `R!`, the rest of the string is passed to the currently loaded IO plugin (a debugger, +for example). Most plugins provide help messages with `R!?` or `R!help`. ``` $ rizin -d /bin/ls > R!help ; handled by the IO plugin ``` -If a command starts with `!`, posix_system() is called to pass the command to your shell. Check `!?` for more options and usage examples. +If a command starts with `!`, posix_system() is called to pass the command to your shell. Check `!?` for more options +and usage examples. ``` > !ls ; run `ls` in the shell ``` -The meaning of the arguments (iter, addr, size) depends on the specific command. As a rule of thumb, most commands take a number as an argument to specify the number of bytes to work with, instead of the currently defined block size. Some commands accept math expressions or strings. +The meaning of the arguments (iter, addr, size) depends on the specific command. As a rule of thumb, most commands take +a number as an argument to specify the number of bytes to work with, instead of the currently defined block size. +Some commands accept math expressions or strings. ``` > px 0x17 ; show 0x17 bytes in hexs at current seek @@ -35,14 +43,16 @@ The meaning of the arguments (iter, addr, size) depends on the specific command. > / lib ; search for 'lib' string. ``` -The `@` sign is used to specify a temporary offset location or a seek position at which the command is executed, instead of current seek position. This is quite useful as you don't have to seek around all the time. +The `@` sign is used to specify a temporary offset location or a seek position at which the command is executed, +instead of current seek position. This is quite useful as you don't have to seek around all the time. ``` > p8 10 @ 0x4010 ; show 10 bytes at offset 0x4010 > f patata @ 0x10 ; set 'patata' flag at offset 0x10 ``` -Using `@@` sub-commands you can execute a single command on a list of flags, functions, symbols, etc.. You can think of these as foreach operations: +Using `@@` sub-commands you can execute a single command on a list of flags, functions, symbols, etc. You can think +of these as foreach operations: ``` > s 0 @@ -57,7 +67,8 @@ The `>` operation is used to redirect the output of a command into a file (overw > f > flags.txt ; dump flag list to 'flags.txt' ``` -The `|` operation (pipe) is similar to what you are used to expect from it in a *NIX shell: an output of one command as input to another. +The `|` operation (pipe) is similar to what you are used to expect from it in a *NIX shell: an output of one command +as input to another. ``` [0x4A13B8C0]> f | grep section | grep text diff --git a/src/basic_commands/mapping_files.md b/src/basic_commands/mapping_files.md index 973ec2e8..435cd766 100644 --- a/src/basic_commands/mapping_files.md +++ b/src/basic_commands/mapping_files.md @@ -1,14 +1,20 @@ ## Mapping Files -Rizin's I/O subsystem allows you to map the contents of files into the same I/O space used to contain a loaded binary. New contents can be placed at random offsets. +Rizin's I/O subsystem allows you to map the contents of files into the same I/O space used to contain a loaded binary. +New contents can be placed at random offsets. -The `o` command permits the user to open a file, this is mapped at offset 0 unless it has a known binary header and then the maps are created in virtual addresses. +The `o` command permits the user to open a file, this is mapped at offset 0 unless it has a known binary header and +then the maps are created in virtual addresses. Sometimes, we want to rebase a binary, or maybe we want to load or map the file in a different address. -When launching rizin, the base address can be changed with the `-B` flag. But you must notice the difference when opening files with unknown headers, like bootloaders, so we need to map them using the `-m` flag (or specifying it as argument to the `o` command). +When launching rizin, the base address can be changed with the `-B` flag. But you must notice the difference when +opening files with unknown headers, like bootloaders, so we need to map them using the `-m` flag (or specifying it as +argument to the `o` command). -rizin is able to open files and map portions of them at random places in memory specifying attributes like permissions and name. It is the perfect basic tooling to reproduce an environment like a core file, a debug session, by also loading and mapping all the libraries the binary depends on. +Rizin is able to open files and map portions of them at random places in memory specifying attributes like permissions +and name. It is the perfect basic tooling to reproduce an environment like a core file, a debug session, by also +loading and mapping all the libraries the binary depends on. Opening files (and mapping them) is done using the `o` (open) command. Let's read the help: @@ -38,32 +44,37 @@ Usage: o[?] # Open files and handle opened files Prepare a simple layout: ```bash -$ rz-bin -l /bin/ls -[Linked libraries] -libselinux.so.1 -librt.so.1 -libacl.so.1 +$ rz-bin -l hello_world +[Libs] +library +---------- libc.so.6 - -4 libraries ``` Map a file: ``` -[0x00001190]> o /bin/zsh 0x499999 +[0x00001100]> o /bin/sh 0x499999 ``` List mapped files: ``` [0x00000000]> ol -- 6 /bin/ls @ 0x0 ; r -- 10 /lib/ld-linux.so.2 @ 0x100000000 ; r -- 14 /bin/zsh @ 0x499999 ; r + 3 - r-x 0x00003d48 /home/user/playground/book/examples/hello_world/hello_world + 4 - r-x 0x00000070 vfile://0/reloc-targets + 5 - rw- 0x00000008 null://8 + 6 - r-x 0x00003d48 vfile://0/patched + 7 * r-x 0x000d5b68 /bin/sh + 8 - r-- 0x00000bf0 vfile://1/reloc-targets + 9 - rw- 0x0000ed7c null://60796 +10 - r-- 0x000d5b68 vfile://1/patched ``` -Print hexadecimal values from /bin/zsh: +_Note: `vfile` is a virtual file, that is often automatically created to patch relocations and could also be +created manually, if needed. It was created to avoid modifying the original file/IO ranges._ + +Print hexadecimal values from /bin/sh: ``` [0x00000000]> px @ 0x499999 @@ -72,7 +83,7 @@ Print hexadecimal values from /bin/zsh: Unmap files using the `o-` command. Pass the required file descriptor to it as an argument: ``` -[0x00000000]> o- 14 +[0x00000000]> o- 7 ``` You can also view the ascii table showing the list of the opened files: diff --git a/src/basic_commands/print_modes.md b/src/basic_commands/print_modes.md index f574adc0..d6cfa406 100644 --- a/src/basic_commands/print_modes.md +++ b/src/basic_commands/print_modes.md @@ -1,55 +1,55 @@ ## Print Modes -One of the key features of rizin is displaying information in many formats. The goal is to offer a selection of display choices to interpret binary data in the best possible way. +One of the key features of Rizin is displaying information in many formats. The goal is to offer a selection of display +choices to interpret binary data in the best possible way. -Binary data can be represented as integers, shorts, longs, floats, timestamps, hexpair strings, or more complex formats like C structures, disassembly listings, decompilation listing, be a result of an external processing... +Binary data can be represented as integers, shorts, longs, floats, timestamps, hexpair strings, or more complex formats +like C structures, disassembly listings, decompilation listing, be a result of an external processing... Below is a list of available print modes listed by `p?`: ``` -[0x00005310]> p? -|Usage: p[=68abcdDfiImrstuxz] [arg|len] [@addr] +[0x00001100]> p? +Usage: p[=68abcdDfiImrstuxz] [arg|len] [@addr] | p[b|B|xb] [len] ([S]) bindump N bits skipping S bytes -| p[iI][df] [len] print N ops/bytes (f=func) (see pi? and pdi) +| p[iI][df] [len] print N ops/bytes (f=func) (see pi? and pdq) | p[kK] [len] print key in randomart (K is for mosaic) -| p-[?][jh] [mode] bar|json|histogram blocks (mode: el search.in) +| p-[?][jh] [mode] bar|json|histogram blocks (mode: e?search.in) | p2 [len] 8x8 2bpp-tiles -| p3 [file] print stereogram (3D) | p6[de] [len] base64 decode/encode | p8[?][j] [len] 8bit hexpair list of bytes | p=[?][bep] [N] [L] [b] show entropy/printable chars/chars bars | pa[edD] [arg] pa:assemble pa[dD]:disasm or pae: esil from hex -| pA[n_ops] show n_ops address and type | pb[?] [n] bitstream of N bits | pB[?] [n] bitstream of N bytes | pc[?][p] [len] output C (or python) format -| pC[aAcdDxw] [rows] print disassembly in columns (see hex.cols and pdi) +| pC[aAcdDxw] [rows] print disassembly in columns (see hex.cols and pdq) | pd[?] [sz] [a] [b] disassemble N opcodes (pd) or N bytes (pD) | pf[?][.nam] [fmt] print formatted data (pf.name, pf.name $) | pF[?][apx] print asn1, pkcs7 or x509 | pg[?][x y w h] [cmd] create new visual gadget or print it (see pg? for details) | ph[?][=|hash] ([len]) calculate hash for a block +| pi[?][bdefrj] [num] print instructions +| pI[?][iI][df] [len] print N instructions/bytes (f=func) | pj[?] [len] print as indented JSON | pm[?] [magic] print libmagic data (see pm? and /m?) | po[?] hex print operation applied to block (see po?) | pp[?][sz] [len] print patterns, see pp? for more help -| pq[?][is] [len] print QR code with the first Nbytes | pr[?][glx] [len] print N raw bytes (in lines or hexblocks, 'g'unzip) | ps[?][pwz] [len] print pascal/wide/zero-terminated strings | pt[?][dn] [len] print different timestamps | pu[?][w] [len] print N url encoded bytes (w=wide) | pv[?][jh] [mode] show variable/pointer/value in memory -| pwd display current working directory | px[?][owq] [len] hexdump of N bytes (o=octal, w=32bit, q=64bit) -[0x00005310]> +| plf print the RzIL output of the function ``` Tip: when using json output, you can append the `~{}` to the command to get a pretty-printed version of the output: ``` -[0x00000000]> oj +[0x00000000]> olj [{"raised":false,"fd":563280,"uri":"malloc://512","from":0,"writable":true,"size":512,"overlaps":false}] -[0x00000000]> oj~{} +[0x00000000]> olj~{} [ { "raised": false, @@ -63,28 +63,58 @@ Tip: when using json output, you can append the `~{}` to the command to get a pr ] ``` -For more on the magical powers of `~` see the help in `?@?`, and the [Rizin Command-line](../first_steps/commandline_rizin.md) chapter earlier in the book. +For more on the magical powers of `~` see the help in `?@?`, and the [Rizin Command-line](../first_steps/commandline_rizin.md) +chapter earlier in the book. ### Hexadecimal View `px` gives a user-friendly output showing 16 pairs of numbers per row with offsets and raw representations: -![hexprint](print_modes_px.png) +``` +[0x00001100]> px +- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF +0x00001100 f30f 1efa 31ed 4989 d15e 4889 e248 83e4 ....1.I..^H..H.. +0x00001110 f050 5445 31c0 31c9 488d 3dca 0000 00ff .PTE1.1.H.=..... +0x00001120 15b3 2e00 00f4 662e 0f1f 8400 0000 0000 ......f......... +``` #### Show Hexadecimal Words Dump (32 bits) -![wordprint](print_modes_pxw.png) +``` +[0x00001100]> pxw +0x00001100 0xfa1e0ff3 0x8949ed31 0x89485ed1 0xe48348e2 ....1.I..^H..H.. +0x00001110 0x455450f0 0xc931c031 0xca3d8d48 0xff000000 .PTE1.1.H.=..... +0x00001120 0x002eb315 0x2e66f400 0x00841f0f 0x00000000 ......f......... + +[0x00001100]> e cfg.bigendian +false + +[0x00001100]> e cfg.bigendian=true + +[0x00001100]> pxw +0x00001100 0xf30f1efa 0x31ed4989 0xd15e4889 0xe24883e4 ....1.I..^H..H.. +0x00001110 0xf0505445 0x31c031c9 0x488d3dca 0x000000ff .PTE1.1.H.=..... +0x00001120 0x15b32e00 0x00f4662e 0x0f1f8400 0x00000000 ......f......... + +[0x00001100]> e cfg.bigendian=false +``` #### 8 bits Hexpair List of Bytes ``` -[0x00404888]> p8 16 -31ed4989d15e4889e24883e4f0505449 +[0x00001100]> p8 16 +f30f1efa31ed4989d15e4889e24883e4 ``` #### Show Hexadecimal Quad-words Dump (64 bits) -![pxq](print_modes_pxq.png) +``` +[0x00001100]> pxq +0x00001100 0x8949ed31fa1e0ff3 0xe48348e289485ed1 ....1.I..^H..H.. +0x00001110 0xc931c031455450f0 0xff000000ca3d8d48 .PTE1.1.H.=..... +0x00001120 0x2e66f400002eb315 0x0000000000841f0f ......f......... +0x00001130 0x4800002ed93d8d48 0x394800002ed2058d H.=....H......H9 +``` ### Date/Time Formats @@ -92,12 +122,12 @@ Currently supported timestamp output modes are: ``` [0x00404888]> pt? -|Usage: pt [dn] print timestamps -| pt. print current time -| pt print UNIX time (32 bit `cfg.bigendian`) Since January 1, 1970 -| ptd print DOS time (32 bit `cfg.bigendian`) Since January 1, 1980 -| pth print HFS time (32 bit `cfg.bigendian`) Since January 1, 1904 -| ptn print NTFS time (64 bit `cfg.bigendian`) Since January 1, 1601 +Usage: pt[.dhn] # Print timestamps +| pt # Print UNIX epoch time (32 bit `cfg.bigendian`, since January 1, 1970) +| pt. # Print the current time +| ptd # Print MS-DOS time (32 bit `cfg.bigendian`, since January 1, 1980) +| pth # Print Mac HFS time (32 bit `cfg.bigendian`, since January 1, 1904) +| ptn # Print NTFS time (64 bit `cfg.bigendian`, since January 1, 1601) ``` For example, you can 'view' the current buffer as timestamps in the ntfs time: @@ -111,7 +141,8 @@ For example, you can 'view' the current buffer as timestamps in the ntfs time: 20:05:13001 09:29:21 +0000 ``` -As you can see, the endianness affects the result. Once you have printed a timestamp, you can grep the output, for example, by year: +As you can see, the endianness affects the result. Once you have printed a timestamp, you can grep the output, for +example, by year: ``` [0x08048000]> pt ~1974 | wc -l @@ -120,7 +151,8 @@ As you can see, the endianness affects the result. Once you have printed a times 27:04:2022 16:15:43 +0000 ``` -The default date format can be configured using the `cfg.datefmt` variable. Formatting rules for it follow the well known strftime(3) format. Check the manpage for more details, but these are the most important: +The default date format can be configured using the `cfg.datefmt` variable. Formatting rules for it follow the well +known strftime(3) format. Check the manpage for more details, but these are the most important: ``` %a The abbreviated name of the day of the week according to the current locale. @@ -143,154 +175,171 @@ The default date format can be configured using the `cfg.datefmt` variable. Form ### Basic Types -There are print modes available for all basic types. If you are interested in a more complex structure, type `pf??` for format characters and `pf???` for examples: +There are print modes available for all basic types. If you are interested in a more complex structure, type `pf??` +for format characters and `pf???` for examples: ``` [0x00499999]> pf?? -|pf: pf[.k[.f[=v]]|[v]]|[n]|[0|cnt][fmt] [a0 a1 ...] -| Format: -| b byte (unsigned) -| B resolve enum bitfield (see t?) -| c char (signed byte) -| C byte in decimal -| d 0xHEX value (4 bytes) (see 'i' and 'x') -| D disassemble one opcode -| e temporally swap endian -| E resolve enum name (see t?) -| f float value (4 bytes) -| F double value (8 bytes) -| i signed integer value (4 bytes) (see 'd' and 'x') -| n next char specifies size of signed value (1, 2, 4 or 8 byte(s)) -| N next char specifies size of unsigned value (1, 2, 4 or 8 byte(s)) -| o octal value (4 byte) -| p pointer reference (2, 4 or 8 bytes) -| q quadword (8 bytes) -| r CPU register `pf r (eax)plop` -| s 32bit pointer to string (4 bytes) -| S 64bit pointer to string (8 bytes) -| t UNIX timestamp (4 bytes) -| T show Ten first bytes of buffer -| u uleb128 (variable length) -| w word (2 bytes unsigned short in hex) -| x 0xHEX value and flag (fd @ addr) (see 'd' and 'i') -| X show formatted hexpairs -| z null terminated string -| Z null terminated wide string -| ? data structure `pf ? (struct_name)example_name` -| * next char is pointer (honors asm.bits) -| + toggle show flags for each offset -| : skip 4 bytes -| . skip 1 byte -| ; rewind 4 bytes -| , rewind 1 byte +Usage: pf[j*q] # Show data using given format string +| pf # Show data using given format string +| pfj # Show data using given format string (JSON mode) +| pf* # Show data using given format string (rizin mode) +| pfq # Show data using given format string (quiet mode) + +Formats: +| b # byte (unsigned) +| B # resolve enum bitfield (see t?) +| c # char (signed byte) +| C # byte in decimal +| d # 0xHEX value (4 bytes) (see 'i' and 'x' formats) +| D # disassemble one opcode +| e # temporarily swap endian +| E # resolve enum name (see t?) +| f # float value (4 bytes) +| F # double float value (8 bytes) +| i # signed integer value (4 bytes) (see 'd' and 'x' formats) +| n # next char specifies size of signed value (1, 2, 4, or 8 byte(s)) +| N # next char specifies size of unsigned value (1, 2, 4, or 8 byte(s)) +| o # octal value (4 bytes) +| p # pointer reference (2, 4, or 8 bytes) +| q # quadword (8 bytes) +| Q # octoword (uint128_t) (16 bytes) +| r # CPU register (`pf r (eax)plop`) +| s # 32 bit pointer to string (4 bytes) +| s # 32 bit pointer to string (4 bytes) +| t # 32 bit UNIX timestamp (4 bytes) +| T # show ten first bytes of buffer +| u # uleb128 (variable length) +| w # word (2 bytes unsigned short in hex) +| x # 0xHEX value and flag (fd @ addr) (see 'd' and 'i' formats) +| X # show formatted hexpairs +| z # null terminated string +| Z # null terminated wide string +| ? # data structure `pf ? (struct_name)example_name` +| * # next char is pointer (honors 'asm.bits') +| + # toggle show flags for each offset +| : # skip 4 bytes +| . # skip 1 byte +| ; # rewind 4 bytes +| , # rewind 1 byte ``` Use triple-question-mark `pf???` to get some examples using print format strings. ``` -[0x00499999]> pf??? -|pf: pf[.k[.f[=v]]|[v]]|[n]|[0|cnt][fmt] [a0 a1 ...] -| Examples: -| pf 3xi foo bar 3-array of struct, each with named fields: 'foo' as hex, and 'bar' as int -| pf B (BitFldType)arg_name` bitfield type -| pf E (EnumType)arg_name` enum type -| pf.obj xxdz prev next size name Define the obj format as xxdz -| pf obj=xxdz prev next size name Same as above -| pf *z*i*w nb name blob Print the pointers with given labels -| pf iwq foo bar troll Print the iwq format with foo, bar, troll as the respective names for the fields -| pf 0iwq foo bar troll Same as above, but considered as a union (all fields at offset 0) -| pf.plop ? (troll)mystruct Use structure troll previously defined -| pfj.plop @ 0x14 Apply format object at the given offset -| pf 10xiz pointer length string Print a size 10 array of the xiz struct with its field names -| pf 5sqw string quad word Print an array with sqw struct along with its field names -| pf {integer}? (bifc) Print integer times the following format (bifc) -| pf [4]w[7]i Print an array of 4 words and then an array of 7 integers -| pf ic...?i foo bar "(pf xw yo foo)troll" yo Print nested anonymous structures -| pf ;..x Print value located 6 bytes from current offset -| pf [10]z[3]i[10]Zb Print an fixed size str, widechar, and var -| pfj +F @ 0x14 Print the content at given offset with flag -| pf n2 print signed short (2 bytes) value. Use N instead of n for printing unsigned values -| pf [2]? (plop)structname @ 0 Prints an array of structs -| pf eqew bigWord beef Swap endianness and print with given labels -| pf.foo rr (eax)reg1 (eip)reg2 Create object referencing to register values -| pf tt troll plop print time stamps with labels troll and plop +[0x00001100]> pf??? +Usage: p[=68abcdDfiImrstuxz] [arg|len] [@addr] +| p[b|B|xb] [len] ([S]) bindump N bits skipping S bytes +| p[iI][df] [len] print N ops/bytes (f=func) (see pi? and pdq) +| p[kK] [len] print key in randomart (K is for mosaic) +| p-[?][jh] [mode] bar|json|histogram blocks (mode: e?search.in) +| p2 [len] 8x8 2bpp-tiles +| p6[de] [len] base64 decode/encode +| p8[?][j] [len] 8bit hexpair list of bytes +| p=[?][bep] [N] [L] [b] show entropy/printable chars/chars bars +| pa[edD] [arg] pa:assemble pa[dD]:disasm or pae: esil from hex +| pb[?] [n] bitstream of N bits +| pB[?] [n] bitstream of N bytes +| pc[?][p] [len] output C (or python) format +| pC[aAcdDxw] [rows] print disassembly in columns (see hex.cols and pdq) +| pd[?] [sz] [a] [b] disassemble N opcodes (pd) or N bytes (pD) +| pf[?][.nam] [fmt] print formatted data (pf.name, pf.name $) +| pF[?][apx] print asn1, pkcs7 or x509 +| pg[?][x y w h] [cmd] create new visual gadget or print it (see pg? for details) +| ph[?][=|hash] ([len]) calculate hash for a block +| pi[?][bdefrj] [num] print instructions +| pI[?][iI][df] [len] print N instructions/bytes (f=func) +| pj[?] [len] print as indented JSON +| pm[?] [magic] print libmagic data (see pm? and /m?) +| po[?] hex print operation applied to block (see po?) +| pp[?][sz] [len] print patterns, see pp? for more help +| pr[?][glx] [len] print N raw bytes (in lines or hexblocks, 'g'unzip) +| ps[?][pwz] [len] print pascal/wide/zero-terminated strings +| pt[?][dn] [len] print different timestamps +| pu[?][w] [len] print N url encoded bytes (w=wide) +| pv[?][jh] [mode] show variable/pointer/value in memory +| px[?][owq] [len] hexdump of N bytes (o=octal, w=32bit, q=64bit) +| plf print the RzIL output of the function ``` + Some examples are below: ``` -[0x4A13B8C0]> pf i -0x00404888 = 837634441 -``` -``` -[0x4A13B8C0]> pf -0x00404888 = 837634432.000000 +[0x00001100]> pf i +0x00001100 = -98693133 + +[0x00001100]> pf f +0x00001100 = -2.05176598e+35 + ``` ### High-level Languages Views Valid print code formats for human-readable languages are: -* `pc` C -* `pc*` print 'wx' rizin commands -* `pch` C half-words (2 byte) -* `pcw` C words (4 byte) -* `pcd` C dwords (8 byte) -* `pci` C array of bytes with instructions -* `pca` GAS .byte blob -* `pcA` .bytes with instructions in comments -* `pcs` string -* `pcS` shellscript that reconstructs the bin -* `pcj` json -* `pcJ` javascript -* `pco` Objective-C -* `pcp` python -* `pck` kotlin -* `pcr` rust -* `pcv` JaVa -* `pcV` V (vlang.io) -* `pcy` yara -* `pcz` Swift - -If we need to create a .c file containing a binary blob, use the `pc` command, that creates this output. The default size is like in many other commands: the block size, which can be changed with the `b` command. - -We can also just temporarily override this block size by expressing it as an argument. - -``` -[0xB7F8E810]> pc 32 -#define _BUFFER_SIZE 32 -unsigned char buffer[_BUFFER_SIZE] = { -0x89, 0xe0, 0xe8, 0x49, 0x02, 0x00, 0x00, 0x89, 0xc7, 0xe8, 0xe2, 0xff, 0xff, 0xff, 0x81, 0xc3, 0xd6, 0xa7, 0x01, 0x00, 0x8b, 0x83, 0x00, 0xff, 0xff, 0xff, 0x5a, 0x8d, 0x24, 0x84, 0x29, 0xc2 }; ``` +0x00001100]> pc? +Usage: pc[?] # Print bytes as code byte arrays. +| pc [] # Generate a C/C++ byte array. +| pch # Generate a C/C++ 16 bits array. +| pcw # Generate a C/C++ 32 bits array. +| pcd # Generate a C/C++ 64 bits array. +| pca [] # Generate a byte array in GAS assembly. +| pcA [] # Generate a byte array in GAS assembly with instructions in comments. +| pcb [] # Generate a bash script with the byte array. +| pcg [] # Generate a Golang byte array. +| pcJ [] # Generate a Java byte array. +| pcj [] # Generate a JSON byte array. +| pck [] # Generate a Kotlin byte array. +| pcn [] # Generate a NodeJS buffer. +| pco [] # Generate a Objective-C/C++ byte array. +| pcp [] # Generate a Python byte array. +| pcr [] # Generate a Rust byte array. +| pcs [] # Generate a Swift byte array. +| pcy [] # Generate a Yara match pattern. +| pc* [] # Generate a rizin commands for writing the byte array. +``` + +If we need to create a .c file containing a binary blob, use the `pc` command, that creates this output. The default +size is like in many other commands: the block size, which can be changed with the `b` command. -That cstring can be used in many programming languages, not just C. +We can also just temporarily override this block size by expressing it as an argument. ``` -[0x7fcd6a891630]> pcs -"\x48\x89\xe7\xe8\x68\x39\x00\x00\x49\x89\xc4\x8b\x05\xef\x16\x22\x00\x5a\x48\x8d\x24\xc4\x29\xc2\x52\x48\x89\xd6\x49\x89\xe5\x48\x83\xe4\xf0\x48\x8b\x3d\x06\x1a +[0x00001100]> pc 32 +#define ARRAY_SIZE 32 +const uint8_t array[ARRAY_SIZE] = { + 0xf3, 0x0f, 0x1e, 0xfa, 0x31, 0xed, 0x49, 0x89, 0xd1, 0x5e, 0x48, 0x89, 0xe2, 0x48, 0x83, 0xe4, + 0xf0, 0x50, 0x54, 0x45, 0x31, 0xc0, 0x31, 0xc9, 0x48, 0x8d, 0x3d, 0xca, 0x00, 0x00, 0x00, 0xff +}; ``` ### Strings -Strings are probably one of the most important entry points when starting to reverse engineer a program because they usually reference information about functions' actions (asserts, debug or info messages...). Therefore, rizin supports various string formats: +Strings are probably one of the most important entry points when starting to reverse engineer a program because they +usually reference information about functions' actions (asserts, debug or info messages...). Therefore, Rizin supports +various string formats: ``` -[0x00000000]> ps? -|Usage: ps[bijqpsuwWxz+] [N] Print String -| ps print string -| ps+[j] print libc++ std::string (same-endian, ascii, zero-terminated) -| psb print strings in current block -| psi print string inside curseek -| psj print string in JSON format -| psp[j] print pascal string -| psq alias for pqs -| pss print string in screen (wrap width) -| psu[zj] print utf16 unicode (json) -| psw[j] print 16bit wide string -| psW[j] print 32bit wide string -| psx show string with escaped chars -| psz[j] print zero-terminated string +[0x00001100]> ps? +Usage: ps[?] # Print string at the current offset +| ps[j] =null # Print the autodetected string at the current offset (null->zero-terminated, block->block-terminated) +| ps+[j] # Print libc++ std::string (same-endian, ascii, zero-terminated) +| psb[q] # Print all the strings in current block +| psc[?] # Generate a C/C++ string +| psi[?] # Print the first string in the current block +| psp[j] =8 # Print the pascal string at the current offset +| pss[?] # Print string at the current offset in screen (wrap width) +| psm[j] # Print buffer as a utf16be string +| psM[j] # Print buffer as a utf32be string +| psn[j] # Print string with escaped new lines +| psw[j] # Print buffer as a utf16le string +| psW[j] # Print buffer as a utf32le string ``` -Most strings are zero-terminated. Below there is an example using the debugger to continue the execution of a program until it executes the 'open' syscall. When we recover the control over the process, we get the arguments passed to the syscall, pointed by %ebx. In the case of the 'open' call, it is a zero terminated string which we can inspect using `psz`. +Most strings are zero-terminated. Below there is an example using the debugger to continue the execution of a program +until it executes the 'open' syscall. When we recover the control over the process, we get the arguments passed to the +syscall, pointed by %ebx. In the case of the 'open' call, it is a zero terminated string which we can inspect using +`psz`. ``` [0x4A13B8C0]> dcs open @@ -316,7 +365,10 @@ It is also possible to print various packed data types using the `pf` command: 0x7fff0d29da38 = 0x7fff0d29da38 -> 0x0d29f7ee /bin/ls ``` -This can be used to look at the arguments passed to a function. To achieve this, simply pass a 'format memory string' as an argument to `pf`, and temporally change the current seek position/offset using `@`. It is also possible to define arrays of structures with `pf`. To do this, prefix the format string with a numeric value. You can also define a name for each field of the structure by appending them as a space-separated arguments list. +This can be used to look at the arguments passed to a function. To achieve this, simply pass a 'format memory string' +as an argument to `pf`, and temporally change the current seek position/offset using `@`. It is also possible to define +arrays of structures with `pf`. To do this, prefix the format string with a numeric value. You can also define a name +for each field of the structure by appending them as a space-separated arguments list. ``` [0x4A13B8C0]> pf 2*xw pointer type @ esp @@ -361,15 +413,19 @@ $ rizin /usr/lib/gstreamer-1.0/libgsttcp.so ### Disassembly -The `pd` command is used to disassemble code. It accepts a numeric value to specify how many instructions should be disassembled. The `pD` command is similar but instead of a number of instructions, it decompiles a given number of bytes. +The `pd` command is used to disassemble code. It accepts a numeric value to specify how many instructions should be +disassembled. The `pD` command is similar but instead of a number of instructions, it decompiles a given number of +bytes. -* `d` : disassembly N opcodes count of opcodes -* `D` : asm.arch disassembler bsize bytes +* `pd` : Disassemble N instructions (can be negative) +* `pD` : Disassemble N bytes (can be negative) ``` -[0x00404888]> pd 1 - ;-- entry0: - 0x00404888 31ed xor ebp, ebp +[0x00001100]> pd 1 + ;-- entry0: + ;-- section..text: + ;-- _start: + 0x00001100 endbr64 ; [14] -r-x section size 409 named .text ``` ### Selecting Target Architecture @@ -377,59 +433,63 @@ The `pd` command is used to disassemble code. It accepts a numeric value to spec The architecture flavor for the disassembler is defined by the `asm.arch` eval variable. You can use `e asm.arch=??` to list all available architectures. ``` -[0x00005310]> e asm.arch=?? -_dAe _8_16 6502 LGPL3 6502/NES/C64/Tamagotchi/T-1000 CPU -_dAe _8 8051 PD 8051 Intel CPU -_dA_ _16_32 arc GPL3 Argonaut RISC Core -a___ _16_32_64 arm.as LGPL3 as ARM Assembler (use ARM_AS environment) -adAe _16_32_64 arm BSD Capstone ARM disassembler -_dA_ _16_32_64 arm.gnu GPL3 Acorn RISC Machine CPU -_d__ _16_32 arm.winedbg LGPL2 WineDBG's ARM disassembler -adAe _8_16 avr GPL AVR Atmel -adAe _16_32_64 bf LGPL3 Brainfuck -_dA_ _32 chip8 LGPL3 Chip8 disassembler -_dA_ _16 cr16 LGPL3 cr16 disassembly plugin -_dA_ _32 cris GPL3 Axis Communications 32-bit embedded processor -adA_ _32_64 dalvik LGPL3 AndroidVM Dalvik -ad__ _16 dcpu16 PD Mojang's DCPU-16 -_dA_ _32_64 ebc LGPL3 EFI Bytecode -adAe _16 gb LGPL3 GameBoy(TM) (z80-like) -_dAe _16 h8300 LGPL3 H8/300 disassembly plugin -_dAe _32 hexagon LGPL3 Qualcomm Hexagon (QDSP6) V6 -_d__ _32 hppa GPL3 HP PA-RISC -_dAe _0 i4004 LGPL3 Intel 4004 microprocessor -_dA_ _8 i8080 BSD Intel 8080 CPU -adA_ _32 java Apache Java bytecode -_d__ _32 lanai GPL3 LANAI +[0x00001100]> e asm.arch=?? +_dAeI 8 16 6502 LGPL3 6502/NES/C64/Tamagotchi/T-1000 CPU +adAeI 8 8051 PD 8051 Intel CPU +_dA__ 32 amd29k LGPL3 AMD 29k RISC CPU (by deroad) +_dA__ 16 32 arc GPL3 Argonaut RISC Core +adAeI 16 32 64 arm BSD Capstone ARM disassembler +a____ 16 32 64 arm.as LGPL3 as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment) (by pancake) +adAeI 8 16 avr LGPL3 AVR Atmel +adA_I 16 32 64 bf LGPL3 Brainfuck (by pancake, nibble) v4.0.0 +_dA__ 32 chip8 LGPL3 Chip8 disassembler +_dA__ 16 32 64 cil LGPL3 .NET Common Intermediate Language +_dA__ 16 cr16 LGPL3 cr16 disassembly plugin +_dA__ 32 cris GPL3 Axis Communications 32-bit embedded processor (by pancake) +adA__ 32 64 dalvik LGPL3 AndroidVM Dalvik +ad___ 16 dcpu16 PD Mojang's DCPU-16 +_dA__ 32 64 ebc LGPL3 EFI Bytecode (by Fedor Sakharov) +adAeI 16 gb LGPL3 GameBoy(TM) (z80-like) (by condret) +_dAe_ 16 h8300 LGPL3 H8/300 disassembly plugin +_dA_I 32 hexagon LGPL3 Qualcomm Hexagon (QDSP6) V6 (by Rot127) +_d___ 32 hppa GPL3 HP PA-RISC +_dA__ 4 i4004 LGPL3 Intel 4004 microprocessor +_dA__ 8 i8080 BSD Intel 8080 CPU +adA__ 32 java LGPL-3 Java bytecode disassembler (by deroad) +_d___ 32 lanai GPL3 LANAI ... ``` ### Configuring the Disassembler -There are multiple options which can be used to configure the output of the disassembler. All these options are described in `el asm.` - -``` -[0x00005310]> el asm. -asm.analysis: Analyze code and refs while disassembling (see analysis.strings) -asm.arch: Set the arch to be used by asm -asm.assembler: Set the plugin name to use when assembling -asm.bbline: Show empty line after every basic block -asm.bits: Word size in bits at assembler -asm.bytes: Display the bytes of each instruction -asm.bytespace: Separate hexadecimal bytes with a whitespace -asm.calls: Show callee function related info as comments in disasm -asm.capitalize: Use camelcase at disassembly -asm.cmt.col: Column to align comments -asm.cmt.flgrefs: Show comment flags associated to branch reference -asm.cmt.fold: Fold comments, toggle with Vz +There are multiple options which can be used to configure the output of the disassembler. All these options are +described in `el asm.` + +``` +[0x00001100]> el asm. + asm.analysis: Analyze code and refs while disassembling (see analysis.strings) + asm.arch: Set the arch to be used by asm + asm.assembler: Set the plugin name to use when assembling + asm.bb.line: Show empty line after every basic block + asm.bb.middle: Realign disassembly if a basic block starts in the middle of an instruction + asm.bits: Word size in bits at assembler + asm.bytes: Display the bytes of each instruction + asm.bytes.right: Display the bytes at the right of the disassembly + asm.bytes.space: Separate hexadecimal bytes with a whitespace + asm.calls: Show callee function related info as comments in disasm + asm.capitalize: Use camelcase at disassembly + asm.cmt.col: Column to align comments + asm.cmt.esil: Show ESIL expressions as comments + asm.cmt.flgrefs: Show comment flags associated to branch reference ... ``` -Currently there are 136 `asm.` configuration variables so we do not list them all. +Currently, there are 130 `asm.` configuration variables so we do not list them all. ### Disassembly Syntax -The `asm.syntax` variable is used to change the flavor of the assembly syntax used by a disassembler engine. To switch between Intel and AT&T representations: +The `asm.syntax` variable is used to change the flavor of the assembly syntax used by a disassembler engine. To switch +between Intel and AT&T representations: ``` e asm.syntax=intel @@ -437,18 +497,24 @@ e asm.syntax=att ``` You can also check `asm.pseudo`, which is an experimental pseudocode view, -and `asm.esil` which outputs [ESIL](../disassembling/esil.md) ('Evaluable Strings Intermediate Language'). ESIL's goal is to have a human-readable representation of every opcode semantics. Such representations can be evaluated (interpreted) to emulate effects of individual instructions. +and `asm.esil` which outputs [ESIL](../disassembling/esil.md) ('Evaluable Strings Intermediate Language'). +ESIL's goal is to have a human-readable representation of every opcode semantics. Such representations can be evaluated +(interpreted) to emulate effects of individual instructions. ### Print gadgets -In Rizin, visual gadgets allows the users to cast or display the output of a particular Rizin command anywhere on the screen while in Visual mode. -This command is unrelated with displaying [ROP Gadgets](https://book.rizin.re/refcard/intro.html#searching). +In Rizin, visual gadgets allows the users to cast or display the output of a particular Rizin command anywhere on the +screen while in Visual mode. This command is unrelated with displaying [ROP Gadgets](https://book.rizin.re/refcard/intro.html#searching). + +Using the commands under `pg` (print gadgets), we can add, remove and change the location of these visual gadgets. +You can add a gadget using `pg`: -Using the commands under `pg` (print gadgets), we can add, remove and change the location of these visual gadgets. You can add a gadget using `pg`: ``` pg 10 10 10 10 ddr ``` -This will add the output of the Rizin command `ddr` be printed on the screen. The four arguments to be passed are the position (like coordinates) and -the height and width of the gadget you would like to see. This command requires the configuration variable `scr.gadgets` to be turned on. + +This will add the output of the Rizin command `ddr` be printed on the screen. The four arguments to be passed are +the position (like coordinates) and the height and width of the gadget you would like to see. This command requires +the configuration variable `scr.gadgets` to be turned on. See `pg?` for more information. diff --git a/src/basic_commands/print_modes_px.png b/src/basic_commands/print_modes_px.png deleted file mode 100644 index 0010654fed968e97f236a2893852179e20689de3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133013 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

L$ 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 z%0D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
  • L{dFoOjr3!xSVuRu0~nG)C0P%DF+ zcHllC_%4lP>LK71=5tTHO zN7@V(k+|5MZ?YDQ6jO0!DoouKw-X^>wWf&0ka59kr)x5blw4|2v@CmCAttxFa`!~@G zR}@88SGRLqRfv5RGWu}auR_+#=X16D^3FYBZ%?Btyw^gJwSPK z!v@sQMzrv&5Kkvqvj=0~&*)R1zsX1$9dCJ1PDR^leSg(yU1;0by?hQ<+m*kSBY zFvn{Vz^by(WR5s}F#OIJ=++_hOM_R?d=cA)=lr)vHotvfDdxj>~(_MHhkN)OSCFTDFxKev@^#kuPPu!9V?+lQhW49<#A zx=GD&Lp6m8ti=n#kZzG3&IlhPvIDJ9l<4rH-$aux(F=fMA^EPsR|){k)?uH) z393`DkWy5{L0%nNnCmDE2KL|pBtmSY{+`Nb|UO@ zTtrwWA7&d6QKZf9Ylazlc~Qm(p_mf#BD;|6RA`2S`Syf3_u_7YMuZJ;j?;po9e9$p zIFzQv&z?EMMD_uSwK|-s5TiuD{Rh45r7KsW4`ky6WJ4KN^?Sxu8-I{E9iU*L!*ZXD zLsdzvt}w9Hb#&Z4vxpvuSm?z0^G~Y+vn073@l6(Bb2ei>AbQ6pjn^o~v2E*YjBr~V zLclr(gB;DZEkk1{iJUi}FC*ugYZ+90al~Q7BSWG7D!64}Fk697M~{2(j+L6Ks?yP; z0l$i|(GeShhsjUh6BH0YrpTua*5)dp|IeS*+k~RL046P*NPBg3b(Mfvn}YYmu_yFa zMkNZCVon%eSD=f#i7i0Jqdqvi;l!+mgR>6B`jzScW^B4!SV@_(7Gxj`MoX-K zFTKx|Lc#VXqhtP}Sv#erwE_Y;$%`N5p>|@x>n|PEBa;Bn10=fyWX8(IW+fDt_YqNz zje2Yg82b0$ab?s)E~0eg2ouiR)dJUku|wMEoOk`1kt=Wl5-GZ&v0honZj50tKws>yE3nXgeC}MruXnm8 zCTnplV{{V>N-l>S^T}})+>wxPmj0Pet*qq5W2o=yT8{$gy-u9+gDM5U^Y!TJ9)OSp zLyZ(-gTe6$ltliR@|Ka2K>_-KX-DiAD6&X!LP~FPS=k1p_0(aWdnGh4hV!}L7|E+a z|JwoYAzs4pk2#NUv7I|_p&D#};tJ>F`uO;h$HwY0&?dD#qDK`7;+NrJW$-7P2?^+P^XAijp|4@e)@tWU;l_GM8cr{ zlgqikrV(`i8BSu}*V!2v*KuuO6ym;sXJ&3oe-%)KU}4C*UA;;|PO<9}8B6ekXtnD{ zMIZgIpGbawiX%KCWNK{Vlp?4@KipH*P1Py?{uM4>5!L_wDac10)IWRnDH_Xwaa;(0 zV`p!X&$@j1Yp~OQf8PImdV6IkmrxDWVPjJ$WH~49b6<)1efjP$$)A~WxY_=HezZ;z zpt(=62GhoF^z`&RMTKTOZLEdAGt|!vQs6(o;J==dwG89hO{+kyMtJo>#sNt{P1FAW z`7-SP_xJBi&oL}zh1qEZB^iqf;-ZPz-vR%AA-N?1A*#eH-9D#63jTLYRZ}HT+4RQ$ E1AUy#yZ`_I diff --git a/src/basic_commands/print_modes_pxq.png b/src/basic_commands/print_modes_pxq.png deleted file mode 100644 index 688fb4918e512e34264032229780e0839aada600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122651 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 R$yeaVv>)syXV@+c{ugH()8_yH diff --git a/src/basic_commands/print_modes_pxw.png b/src/basic_commands/print_modes_pxw.png deleted file mode 100644 index 57ae4ada921d8a2ce7d30b41e7ad1c1132171711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287402 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� 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 diff --git a/src/basic_commands/sdb.md b/src/basic_commands/sdb.md index a7665d65..ae1cef42 100644 --- a/src/basic_commands/sdb.md +++ b/src/basic_commands/sdb.md @@ -1,6 +1,8 @@ # SDB -SDB stands for String DataBase. It's a simple key-value database that only operates with strings created by pancake. It is used in many parts of rizin to have a disk and in-memory database which is small and fast to manage using it as a hashtable on steroids. +SDB stands for String DataBase. It's a simple key-value database that only operates with strings created by pancake. +It is used in many parts of rizin to have a disk and in-memory database which is small and fast to manage using it +as a hashtable on steroids. SDB is a simple string key/value database based on djb’s cdb disk storage and supports JSON and arrays introspection. @@ -16,6 +18,7 @@ SDB supports: ## Usage example + Let's create a database! ``` @@ -25,6 +28,7 @@ world ``` Using arrays: + ``` $ sdb - '[]list=1,2' '[0]list' '[0]list=foo' '[]list' '[+1]list=bar' 1 @@ -36,6 +40,7 @@ bar ``` Let's play with json: + ``` $ sdb d g='{"foo":1,"bar":{"cow":3}}' $ sdb d g?bar.cow @@ -45,6 +50,7 @@ $ sdb - user='{"id":123}' user?id=99 user?id ``` Using the command line without any disk database: + ``` $ sdb - foo=bar foo a=3 +a -a bar @@ -61,87 +67,82 @@ a=3 -a 3 ``` + Remove the database + ``` $ rm -f d - ``` ## So what ? + So, you can now do this inside your rizin sessions! -Let's take a simple binary, and check what is already _sdbized_. -``` -$ cat test.c -int main(){ - puts("Hello world\n"); -} -$ gcc test.c -o test -``` +Let's take a simple binary [hello_world](https://github.com/rizinorg/book/tree/master/examples/hello_world), +and check what is already _sdbized_. ``` -$ rizin -A ./test -[0x08048320]> # list namespaces under analysis -[0x08048320]> k ** -bin +$ rizin -A hello_world +[0x00001100]> k ** # list namespaces under analysis analysis -syscall +bin debug -``` +syscall +[0x00001100]> k bin/** +cur +fd.3 ``` -[0x08048320]> k bin/** -fd.6 -[0x08048320]> k bin/fd.6/* -archs=0:0:x86:32 -``` -The file corresponding to the sixth file descriptor is a x86\_32 binary. - -``` -[0x08048320]> k analysis/meta/* -meta.s.0x80484d0=12,SGVsbG8gd29ybGQ= -[...] -[0x08048320]> %b64- SGVsbG8gd29ybGQ= -Hello world -``` -Strings are stored encoded in base64. --- ## More Examples - List namespaces + ``` k ** ``` + List sub-namespaces + ``` k analysis/** ``` + List keys + ``` k * k analysis/* ``` + Set a key + ``` k foo=bar ``` + Get the value of a key + ``` k foo ``` List all syscalls + ``` k syscall/*~^0x ``` + List all comments + ``` k analysis/meta/*~.C. ``` + Show a comment at given offset: + ``` k %analysis/meta/[1]meta.C.0x100005000 -``` \ No newline at end of file +``` diff --git a/src/basic_commands/sections.md b/src/basic_commands/sections.md index 9c3aca20..59148815 100644 --- a/src/basic_commands/sections.md +++ b/src/basic_commands/sections.md @@ -1,58 +1,84 @@ ## Sections -The concept of sections is tied to the information extracted from the binary. We can display this information by using the `i` command. +The concept of sections is tied to the information extracted from the binary. We can display this information by using +the `i` command. Displaying information about sections: ``` -[0x00005310]> iS -[Sections] -00 0x00000000 0 0x00000000 0 ---- -01 0x00000238 28 0x00000238 28 -r-- .interp -02 0x00000254 32 0x00000254 32 -r-- .note.ABI_tag -03 0x00000278 176 0x00000278 176 -r-- .gnu.hash -04 0x00000328 3000 0x00000328 3000 -r-- .dynsym -05 0x00000ee0 1412 0x00000ee0 1412 -r-- .dynstr -06 0x00001464 250 0x00001464 250 -r-- .gnu.version -07 0x00001560 112 0x00001560 112 -r-- .gnu.version_r -08 0x000015d0 4944 0x000015d0 4944 -r-- .rela.dyn -09 0x00002920 2448 0x00002920 2448 -r-- .rela.plt -10 0x000032b0 23 0x000032b0 23 -r-x .init -... +[0x00001100]> iS +paddr size vaddr vsize align perm name type flags +----------------------------------------------------------------------------------------- +0x00000000 0x0 ---------- 0x0 0x0 ---- NULL +0x00000318 0x1c 0x00000318 0x1c 0x0 -r-- .interp PROGBITS alloc +0x00000338 0x50 0x00000338 0x50 0x0 -r-- .note.gnu.property NOTE alloc +0x00000388 0x20 0x00000388 0x20 0x0 -r-- .note.ABI-tag NOTE alloc +0x000003a8 0x24 0x000003a8 0x24 0x0 -r-- .gnu.hash GNU_HASH alloc +0x000003d0 0x120 0x000003d0 0x120 0x0 -r-- .dynsym DYNSYM alloc +0x000004f0 0xae 0x000004f0 0xae 0x0 -r-- .dynstr STRTAB alloc +0x0000059e 0x18 0x0000059e 0x18 0x0 -r-- .gnu.version VERSYM alloc +0x000005b8 0x30 0x000005b8 0x30 0x0 -r-- .gnu.version_r VERNEED alloc +0x000005e8 0xc0 0x000005e8 0xc0 0x0 -r-- .rela.dyn RELA alloc +0x000006a8 0x90 0x000006a8 0x90 0x0 -r-- .rela.plt RELA alloc,info +0x00001000 0x1b 0x00001000 0x1b 0x0 -r-x .init PROGBITS alloc,execute +0x00001020 0x70 0x00001020 0x70 0x0 -r-x .plt PROGBITS alloc,execute +0x00001090 0x10 0x00001090 0x10 0x0 -r-x .plt.got PROGBITS alloc,execute +0x000010a0 0x60 0x000010a0 0x60 0x0 -r-x .plt.sec PROGBITS alloc,execute +0x00001100 0x199 0x00001100 0x199 0x0 -r-x .text PROGBITS alloc,execute +0x0000129c 0xd 0x0000129c 0xd 0x0 -r-x .fini PROGBITS alloc,execute +0x00002000 0x12 0x00002000 0x12 0x0 -r-- .rodata PROGBITS alloc +0x00002014 0x34 0x00002014 0x34 0x0 -r-- .eh_frame_hdr PROGBITS alloc +0x00002048 0xac 0x00002048 0xac 0x0 -r-- .eh_frame PROGBITS alloc +0x00002d90 0x8 0x00003d90 0x8 0x0 -rw- .init_array INIT_ARRAY write,alloc +0x00002d98 0x8 0x00003d98 0x8 0x0 -rw- .fini_array FINI_ARRAY write,alloc +0x00002da0 0x1f0 0x00003da0 0x1f0 0x0 -rw- .dynamic DYNAMIC write,alloc +0x00002f90 0x70 0x00003f90 0x70 0x0 -rw- .got PROGBITS write,alloc +0x00003000 0x10 0x00004000 0x10 0x0 -rw- .data PROGBITS write,alloc +0x00003010 0x0 0x00004010 0x8 0x0 -rw- .bss NOBITS write,alloc +0x00003010 0x65 ---------- 0x65 0x0 ---- .comment PROGBITS merge,strings +0x00003078 0x2b8 ---------- 0x2b8 0x0 ---- .symtab SYMTAB +0x00003330 0x18a ---------- 0x18a 0x0 ---- .strtab STRTAB +0x000034ba 0x107 ---------- 0x107 0x0 ---- .shstrtab STRTAB ``` -As you may know, binaries have sections and maps. The sections define the contents of a portion of the file that can be mapped in memory (or not). What is mapped is defined by the segments. +As you may know, binaries have sections and maps. The sections define the contents of a portion of the file that can be +mapped in memory (or not). What is mapped is defined by the segments. -Before the IO refactoring done by condret, the `S` command was used to manage what we now call maps. Currently the `S` command is deprecated because `iS` and `om` should be enough. - -Firmware images, bootloaders and binary files usually place various sections of a binary at different addresses in memory. To represent this behavior, rizin offers the `iS`. Use `iS?` to get the help message. To list all created sections use `iS` (or `iSj` to get the json format). The `iS=` will show the region bars in ascii-art. +Firmware images, bootloaders and binary files usually place various sections of a binary at different addresses in +memory. To represent this behavior, rizin offers the `iS`. Use `iS?` to get the help message. To list all created +sections use `iS` (or `iSj` to get the json format). The `iS=` will show the region bars in ascii-art. You can create a new mapping using the `om` subcommand as follows: + ``` om fd vaddr [size] [paddr] [rwx] [name] ``` For Example: ``` -[0x0040100]> om 4 0x00000100 0x00400000 0x0001ae08 rwx test +[0x00001100]> om 4 0x00000100 0x00400000 0x0001ae08 rwx test ``` You can also use `oml` command to view information about mapped sections: ``` -[0x00401000]> oml - 6 fd: 4 +0x0001ae08 0x00000100 - 0x004000ff rwx test - 5 fd: 3 +0x00000000 0x00000000 - 0x0000055f r-- fmap.LOAD0 - 4 fd: 3 +0x00001000 0x00001000 - 0x000011e4 r-x fmap.LOAD1 - 3 fd: 3 +0x00002000 0x00002000 - 0x0000211f r-- fmap.LOAD2 - 2 fd: 3 +0x00002de8 0x00003de8 - 0x0000402f r-- fmap.LOAD3 - 1 fd: 4 +0x00000000 0x00004030 - 0x00004037 rw- mmap.LOAD3 +[0x00001100]> oml + 1 fd: 4 +0x00000000 0x00004020 - 0x0000408f r-- vmap.reloc-targets + 2 fd: 3 +0x00000000 0x00000000 - 0x00000737 r-- fmap.LOAD0 + 3 fd: 3 +0x00001000 0x00001000 - 0x000012a8 r-x fmap.LOAD1 + 4 fd: 3 +0x00002000 0x00002000 - 0x000020f3 r-- fmap.LOAD2 + 5 fd: 5 +0x00000000 0x00004010 - 0x00004017 rw- mmap.LOAD3 + 6 fd: 6 +0x00002d90 0x00003d90 - 0x0000400f r-- vmap.LOAD3 + 7 fd: 4 +0x0001ae08 0x00000100 * 0x004000ff r-x test ``` -Use `om?` to get all the possible subcommands. To list all the defined maps use `oml` (or `omlj` to get the json format). To get the ascii art view use `oml=`. + +Use `om?` to get all the possible subcommands. To list all the defined maps use `oml` (or `omlj` to get the json +format). To get the ascii art view use `oml=`. It is also possible to delete the mapped section using the `om- mapid` command. For Example: + ``` -[0x00401000]> om- 6 +[0x00001100]> om- 7 ``` diff --git a/src/basic_commands/seeking.md b/src/basic_commands/seeking.md index 186d45e6..85cf4585 100644 --- a/src/basic_commands/seeking.md +++ b/src/basic_commands/seeking.md @@ -2,7 +2,8 @@ To move around the file we are inspecting we will need to change the offset at which we are using the `s` command. -The argument is a math expression that can contain flag names, parenthesis, addition, subtraction, multiplication of immediates of contents of memory using brackets. +The argument is a math expression that can contain flag names, parenthesis, addition, subtraction, multiplication of +immediate of contents of memory using brackets. Some example commands: @@ -20,15 +21,18 @@ The second does a relative seek 4 bytes forward. And finally, the last 2 commands are undoing, and redoing the last seek operations in the seek history. -Instead of using just numbers, we can use complex expressions, or basic arithmetic operations to represent the address to seek. +Instead of using just numbers, we can use complex expressions, or basic arithmetic operations to represent the address +to seek. -To do this, check the ?$? Help message which describes the internal variables that can be used in the expressions. For example, this is the same as doing `sd +4` . +To do this, check the ?$? Help message which describes the internal variables that can be used in the expressions. For +example, this is the same as doing `sd +4` . ``` [0x00000000]> s $$+4 ``` -From the debugger (or when emulating) we can also use the register names as references. They are loaded as flags with the `.dr*` command, which happens under the hood. +From the debugger (or when emulating) we can also use the register names as references. They are loaded as flags with +the `.dr*` command, which happens under the hood. ``` [0x00000000]> s rsp+0x40 @@ -63,21 +67,61 @@ Usage: s[?] # Seek commands > s 10+0x80 ; seek at 0x80+10 ``` -If you want to inspect the result of a math expression, you can evaluate it using the `?` command. Simply pass the expression as an argument. The result can be displayed in hexadecimal, decimal, octal or binary formats. +If you want to inspect the result of a math expression, you can evaluate it using the `?` command. Simply pass the +expression as an argument. The result can be displayed in hexadecimal, decimal, octal or binary formats. ``` > % 0x100+200 0x1C8 ; 456d ; 710o ; 1100 1000 ``` -There are also subcommands of `%` that display the output in one specific format (base 10, base 16 ,...). See `%v` for instance. +There are also subcommands of `%` that display the output in one specific format (base 10, base 16 ,...). See `%v` for +instance. -In the visual mode, you can press `u` (undo) or `U` (redo) inside the seek history to return back to previous or forward to the next location. +In the visual mode, you can press `u` (undo) or `U` (redo) inside the seek history to return back to previous or +forward to the next location. ## Open file -As a test file, let's use a simple `hello_world.c` compiled in Linux ELF format. -After we compile it let's open it with rizin: +As a test file, let's use a simple [hello_world](https://github.com/rizinorg/book/tree/master/examples/hello_world) +compiled in Linux ELF 64-bit format: + +```cpp +#include +#include +#include + +/* + * This is simple hello_world program made for education purposes. + * Licensed under CC-BY-SA 4.0 license. + * + * In order to compile executable run: + * + * gcc -o hello_world hello_world.c + * + */ + +int main(int argc, char* argv[]) { + const char *str1 = "Hello "; + const char *str2 = "world!"; + + size_t str1_size = strlen(str1); + size_t str2_size = strlen(str2); + + char *output = malloc(str1_size + str2_size + 1); + if (output) { + strcpy(output, str1); + strcat(output, str2); + + puts(output); + free(output); + } + + return 0; +} +``` + +After we compile it with `gcc -o hello_world hello_world.c` let's open it with rizin: ``` $ rizin hello_world @@ -86,7 +130,7 @@ $ rizin hello_world Now we have the command prompt: ``` -[0x00400410]> +[0x00001100]> ``` And it is time to go deeper. @@ -99,7 +143,7 @@ such as hex, octal, binary or decimal. Seek to an address 0x0. An alternative command is simply `0x0` ``` -[0x00400410]> s 0x0 +[0x00001100]> s 0x0 [0x00000000]> ``` @@ -124,26 +168,20 @@ Undo last two seeks to return to the initial address: ``` [0x00000080]> shu [0x00000000]> shu -[0x00400410]> +[0x00001100]> ``` -We are back at _0x00400410_. +We are back at `0x00001100`. There's also a command to show the seek history: ``` -[0x00400410]> sh -0x400410 -0x40041a -0x400410 -0x400411 -0x400410 # current seek -0x4005b4 # redo +[0x00001100]> sh +0x1100 entry0 # current seek +0x0 segment.LOAD0 # redo +0x80 segment.PHDR+64 # redo [0x00400410]> sh* -f undo_3 @ 0x400410 -f undo_2 @ 0x40041a -f undo_1 @ 0x400410 -f undo_0 @ 0x400411 -# Current seek @ 0x400410 -f redo_0 @ 0x4005b4 -``` \ No newline at end of file +# Current seek @ 0x1100 +f redo_0 @ 0x0 +f redo_1 @ 0x80 +``` diff --git a/src/basic_commands/types.md b/src/basic_commands/types.md deleted file mode 100644 index 1cb26271..00000000 --- a/src/basic_commands/types.md +++ /dev/null @@ -1,46 +0,0 @@ -## Working with data types - -Rizin can also work with data types. You can use standard C data types or define your own using C. Currently, there is a support for structs, unions, function signatures, and enums. - -``` -[0x00000000]> t? -Usage: t[?] # Types, noreturn, signatures, C parser and more -| t[j*] [] # List all types / Show type information -| t- # Remove the type -| t-* # Remove all types -| tc[dc] # List loaded types in C format -| td # Define type from C definition -| te[jbcdf] # List loaded enums -| tf[j-c?] # List loaded functions definitions -| tn[j-?] # Manage noreturn function attributes and marks -| to[es] # Open C header file and load types from it -| tp[vx] # Print formatted type casted to the address -| ts[jlcd] # List loaded structures -| tt[jc] # List loaded typedefs -| tu[jlcd] # List loaded unions -| tx[fgl] # Type xrefs -``` - -### Defining new types - -There are three different methods to define new types: - -1. Defining a new type from rizin shell immediately, to do this you will use `td` command, and put the whole line between double quotes. For example: - -`td "struct person {int age; char *name; char *address;};"` - -2. You can also use `to -` to open a text editor and write your own types in there. This is preferable when you got too many types to define. - -3. Rizin also supports loading header files using the command `to` followed by a path to the header file you want to load. - -You can View loaded types in rizin using `ts` for structures, `tu` for unions, `tf` for function signatures, `te` for enums. - -You can also cast pointers to data types and view data in there accordingly with `tp`. EX: - -``` -[0x00400511]> tp person = 0x7fff170a46b0 - age : 0x7fff170a46b0 = 20 - name : (*0x4005b0) 0x7fff170a46b4 = My name - address : (*0x4005b8) 0x7fff170a46bc = My age -[0x00400511]> -``` \ No newline at end of file diff --git a/src/basic_commands/write.md b/src/basic_commands/write.md index a389e3f8..a32dc7fb 100644 --- a/src/basic_commands/write.md +++ b/src/basic_commands/write.md @@ -2,15 +2,20 @@ To be able to use Rizin in write mode, you need to load your binary as such: `rizin -w bin`. -Rizin can manipulate a loaded binary file in many ways. You can resize the file, move and copy/paste bytes, insert new bytes (shifting data to the end of the block or file), or simply overwrite bytes. New data may be given as a wide-string, assembler instructions, or the data may be read in from another file. +Rizin can manipulate a loaded binary file in many ways. You can resize the file, move and copy/paste bytes, insert +new bytes (shifting data to the end of the block or file), or simply overwrite bytes. New data may be given as +a wide-string, assembler instructions, or the data may be read in from another file. -Resize the file using the `r` command. It accepts a numeric argument. A positive value sets a new size for the file. A negative one will truncate the file to the current seek position minus N bytes. +Resize the file using the `r` command. It accepts a numeric argument. A positive value sets a new size for the file. +A negative one will truncate the file to the current seek position minus N bytes. ``` r 1024 ; resize the file to 1024 bytes r -10 @ 33 ; strip 10 bytes at offset 33 ``` -Write bytes using the `w` command. It accepts multiple input formats like inline assembly, endian-friendly dwords, files, hexpair files, wide strings: + +Write bytes using the `w` command. It accepts multiple input formats like inline assembly, endian-friendly dwords, +files, hexpair files, wide strings: ``` [0x00404888]> w? @@ -78,7 +83,8 @@ Examples: | wo4 # Content before: 1122334455667788; Content after: 4433221188776655 ``` -It is possible to implement cipher-algorithms using rizin core primitives and `wo`. A sample session performing xor(90) + add(01, 02): +It is possible to implement cipher-algorithms using rizin core primitives and `wo`. A sample session performing +xor(90) + add(01, 02): ``` [0x7fcd6a891630]> px @@ -101,4 +107,4 @@ It is possible to implement cipher-algorithms using rizin core primitives and `w 0x7fcd6a891640 91de 1a7e d91f 96db 14d9 9593 1401 9593 0x7fcd6a891650 c4da 1a6d e89a d959 9192 9159 1cb1 d959 0x7fcd6a891660 9192 79cb 81da 1652 81da 1456 a252 7c77 -``` \ No newline at end of file +``` diff --git a/src/basic_commands/yank_paste.md b/src/basic_commands/yank_paste.md index 99908bf9..27830603 100644 --- a/src/basic_commands/yank_paste.md +++ b/src/basic_commands/yank_paste.md @@ -9,9 +9,11 @@ The two basic operations are * copy (yank) * paste -The yank operation will read N bytes (specified by the argument) into the clipboard. We can later use the `yy` command to paste what we read before into a file. +The yank operation will read N bytes (specified by the argument) into the clipboard. We can later use the `yy` command +to paste what we read before into a file. -You can yank/paste bytes in visual mode selecting them with the cursor mode (`Vc`) and then using the `y` and `Y` key bindings which are aliases for `y` and `yy` commands of the command-line interface. +You can yank/paste bytes in visual mode selecting them with the cursor mode (`Vc`) and then using the `y` and `Y` key +bindings which are aliases for `y` and `yy` commands of the command-line interface. ``` [0x00000000]> y? From edf63c8674b24d94f9af47bdde3074505576f9b2 Mon Sep 17 00:00:00 2001 From: "Azamat H. Hackimov" Date: Sun, 17 Nov 2024 21:47:45 +0300 Subject: [PATCH 06/16] Update and cleanup Analysis chapter Update most of rizin invocations, remove deprecated and removed stuff. Fix internal links and improve spelling. Use "hello_world" as example. For all changed command invocation was used rizin 0.7.3. --- src/analysis/calling_conventions.md | 29 +- src/analysis/code_analysis.md | 440 ++++++++++++++------------ src/analysis/cpu_platform_profiles.md | 27 +- src/analysis/emulation.md | 14 +- src/analysis/graphs.md | 115 +++---- src/analysis/intro.md | 12 +- src/analysis/symbols.md | 41 ++- src/analysis/syscalls.md | 18 +- src/analysis/types.md | 46 +-- src/analysis/variables.md | 354 +++++++++++++-------- src/analysis/vtables.md | 17 +- 11 files changed, 617 insertions(+), 496 deletions(-) diff --git a/src/analysis/calling_conventions.md b/src/analysis/calling_conventions.md index fcd7d617..4f72a817 100644 --- a/src/analysis/calling_conventions.md +++ b/src/analysis/calling_conventions.md @@ -5,16 +5,11 @@ It is used also as a guide for basic function prototype and type propagation. ``` [0x00000000]> afc? -Usage: afc[agl?] -| afc convention Manually set calling convention for current function -| afc Show Calling convention for the Current function -| afcr[j] Show register usage for the current function -| afca Analyse function for finding the current calling convention -| afcf[j] [name] Prints return type function(arg1, arg2...), see afij -| afck List SDB details of call loaded calling conventions -| afcl List all available calling conventions -| afco path Open Calling Convention sdb profile from the given path -| afcR Register telescoping using the calling conventions order +Usage: afc[lor] # Calling convention +| afc [] # Set/Get calling convention for current function +| afcl[j*kl] # List all available calling conventions +| afco # Open Calling Convention sdb profile from given path +| afcr[j] # Show register usage for the current function [0x00000000]> ``` @@ -22,25 +17,16 @@ To list all available calling conventions for current architecture using `afcl` ``` [0x00000000]> afcl -swift amd64 amd64syscall ms reg +swift ``` The default calling convention for a particular architecture/binary is defined with `analysis.cc` for user-mode calls and `analysis.syscc` for syscalls. -To display a function prototype of standard library functions you have the `afcf` command - -``` -[0x00000000]> afcf printf -int printf(const char *format) -[0x00000000]> afcf fgets -char *fgets(char *s, int size, FILE *stream) -``` - All this information is loaded via sdb under `/librz/analysis/d/cc-[arch]-[bits].sdb` ``` @@ -58,6 +44,7 @@ cc.ms.ret=rax `cc.x.argi=rax` is used to set the ith argument of this calling convention to register name `rax` -`cc.x.argn=stack` means that all the arguments (or the rest of them in case there was `argi` for any `i` as counting number) will be stored in the stack from left to right +`cc.x.argn=stack` means that all the arguments (or the rest of them in case there was `argi` for any `i` as +counting number) will be stored in the stack from left to right `cc.x.argn=stack_rev` same as `cc.x.argn=stack` except for it means argument are passed right to left diff --git a/src/analysis/code_analysis.md b/src/analysis/code_analysis.md index 486c2c4a..f2fa28c2 100644 --- a/src/analysis/code_analysis.md +++ b/src/analysis/code_analysis.md @@ -4,77 +4,94 @@ Code analysis is a common technique used to extract information from assembly co Rizin has different code analysis techniques implemented in the core and available in different commands. -As long as the whole functionalities of rizin are available with the API as well as using commands. This gives you the ability to implement your own analysis loops using any programming language, even with rizin one-liners, shellscripts, or analysis or core native plugins. - -The analysis will show up the internal data structures to identify basic blocks, function trees and to extract opcode-level information. - -The most common rizin analysis command sequence is `aa`, which stands for "analyze all". That all is referring to all symbols and entry-points. If your binary is stripped you will need to use other commands like `aaa`, `aab`, `aar`, `aac` or so. - -Take some time to understand what each command does and the results after running them to find the best one for your needs. - -``` -[0x08048440]> aa -[0x08048440]> pdf @ main - ; DATA XREF from 0x08048457 (entry0) -/ (fcn) fcn.08048648 141 -| ;-- main: -| 0x08048648 8d4c2404 lea ecx, [esp+0x4] -| 0x0804864c 83e4f0 and esp, 0xfffffff0 -| 0x0804864f ff71fc push dword [ecx-0x4] -| 0x08048652 55 push ebp -| ; CODE (CALL) XREF from 0x08048734 (fcn.080486e5) -| 0x08048653 89e5 mov ebp, esp -| 0x08048655 83ec28 sub esp, 0x28 -| 0x08048658 894df4 mov [ebp-0xc], ecx -| 0x0804865b 895df8 mov [ebp-0x8], ebx -| 0x0804865e 8975fc mov [ebp-0x4], esi -| 0x08048661 8b19 mov ebx, [ecx] -| 0x08048663 8b7104 mov esi, [ecx+0x4] -| 0x08048666 c744240c000. mov dword [esp+0xc], 0x0 -| 0x0804866e c7442408010. mov dword [esp+0x8], 0x1 ; 0x00000001 -| 0x08048676 c7442404000. mov dword [esp+0x4], 0x0 -| 0x0804867e c7042400000. mov dword [esp], 0x0 -| 0x08048685 e852fdffff call sym..imp.ptrace -| sym..imp.ptrace(unk, unk) -| 0x0804868a 85c0 test eax, eax -| ,=< 0x0804868c 7911 jns 0x804869f -| | 0x0804868e c70424cf870. mov dword [esp], str.Don_tuseadebuguer_ ; 0x080487cf -| | 0x08048695 e882fdffff call sym..imp.puts -| | sym..imp.puts() -| | 0x0804869a e80dfdffff call sym..imp.abort -| | sym..imp.abort() -| `-> 0x0804869f 83fb02 cmp ebx, 0x2 -|,==< 0x080486a2 7411 je 0x80486b5 -|| 0x080486a4 c704240c880. mov dword [esp], str.Youmustgiveapasswordforusethisprogram_ ; 0x0804880c -|| 0x080486ab e86cfdffff call sym..imp.puts -|| sym..imp.puts() -|| 0x080486b0 e8f7fcffff call sym..imp.abort -|| sym..imp.abort() -|`--> 0x080486b5 8b4604 mov eax, [esi+0x4] -| 0x080486b8 890424 mov [esp], eax -| 0x080486bb e8e5feffff call fcn.080485a5 -| fcn.080485a5() ; fcn.080484c6+223 -| 0x080486c0 b800000000 mov eax, 0x0 -| 0x080486c5 8b4df4 mov ecx, [ebp-0xc] -| 0x080486c8 8b5df8 mov ebx, [ebp-0x8] -| 0x080486cb 8b75fc mov esi, [ebp-0x4] -| 0x080486ce 89ec mov esp, ebp -| 0x080486d0 5d pop ebp -| 0x080486d1 8d61fc lea esp, [ecx-0x4] -\ 0x080486d4 c3 ret -``` - -In this example, we analyze the whole file (`aa`) and then print disassembly of the `main()` function (`pdf`). +All features of Rizin are available from the library APIs as well as from commands. +This gives you the ability to implement your own analysis loops using any programming language, even with Rizin +one-liners, shell scripts, or analysis/core native plugins. + +The analysis will show up the internal data structures to identify basic blocks, function trees and to extract +opcode-level information. + +The most common rizin analysis sequence utilizes is **analyze all** command (`aa`), which examines all symbols and +entry-points. If the binary is stripped, using advance automated analysis `aaa` will be necessary; advanced analysis +steps can be invoked manually with commands like `aab`, `aar`, or `aac`. + +Let's analyse simple [hello_world](https://github.com/rizinorg/book/tree/master/examples/hello_world) program: + +``` +[0x00001100]> aa +[x] Analyze all flags starting with sym. and entry0 (aa) + +[0x00001100]> pdf @ main + ; DATA XREF from entry0 @ 0x1118 +/ int main(int argc, char **argv, char **envp); +| ; arg int argc @ rdi +| ; arg char **argv @ rsi +| ; var int64_t var_48h @ stack - 0x48 +| ; var int64_t var_3ch @ stack - 0x3c +| ; var int64_t var_30h @ stack - 0x30 +| ; var int64_t var_28h @ stack - 0x28 +| ; var int64_t var_20h @ stack - 0x20 +| ; var int64_t var_18h @ stack - 0x18 +| ; var int64_t var_10h @ stack - 0x10 +| 0x000011e9 endbr64 +| 0x000011ed push rbp +| 0x000011ee mov rbp, rsp +| 0x000011f1 sub rsp, 0x40 +| 0x000011f5 mov dword [var_3ch], edi ; argc +| 0x000011f8 mov qword [var_48h], rsi ; argv +| 0x000011fc lea rax, [str.Hello] ; 0x2004 ; "Hello " +| 0x00001203 mov qword [var_30h], rax +| 0x00001207 lea rax, [str.world] ; 0x200b ; "world!" +| 0x0000120e mov qword [var_28h], rax +| 0x00001212 mov rax, qword [var_30h] +| 0x00001216 mov rdi, rax +| 0x00001219 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000121e mov qword [var_20h], rax +| 0x00001222 mov rax, qword [var_28h] +| 0x00001226 mov rdi, rax +| 0x00001229 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000122e mov qword [var_18h], rax +| 0x00001232 mov rdx, qword [var_20h] +| 0x00001236 mov rax, qword [var_18h] +| 0x0000123a add rax, rdx +| 0x0000123d add rax, 1 +| 0x00001241 mov rdi, rax +| 0x00001244 call sym.imp.malloc ; sym.imp.malloc ; void *malloc(size_t size) +| 0x00001249 mov qword [var_10h], rax +| 0x0000124d cmp qword [var_10h], 0 +| ,=< 0x00001252 je 0x1292 +| | 0x00001254 mov rdx, qword [var_30h] +| | 0x00001258 mov rax, qword [var_10h] +| | 0x0000125c mov rsi, rdx +| | 0x0000125f mov rdi, rax +| | 0x00001262 call sym.imp.strcpy ; sym.imp.strcpy ; char *strcpy(char *dest, const char *src) +| | 0x00001267 mov rdx, qword [var_28h] +| | 0x0000126b mov rax, qword [var_10h] +| | 0x0000126f mov rsi, rdx +| | 0x00001272 mov rdi, rax +| | 0x00001275 call sym.imp.strcat ; sym.imp.strcat ; char *strcat(char *s1, const char *s2) +| | 0x0000127a mov rax, qword [var_10h] +| | 0x0000127e mov rdi, rax +| | 0x00001281 call sym.imp.puts ; sym.imp.puts ; int puts(const char *s) +| | 0x00001286 mov rax, qword [var_10h] +| | 0x0000128a mov rdi, rax +| | 0x0000128d call sym.imp.free ; sym.imp.free ; void free(void *ptr) +| `-> 0x00001292 mov eax, 0 +| 0x00001297 leave +\ 0x00001298 ret +``` + +In this example, we analyze the whole file (via `aa`) and then print disassembly of the `main()` function (via `pdf`). The `aa` command belongs to the family of auto analysis commands and performs only the most basic -auto analysis steps. In rizin there are many different types of auto analysis commands with a +auto analysis steps. In Rizin there are many different types of auto analysis commands with a different analysis depth, including partial emulation: `aa`, `aaa`, `aab`, `aaaa`, ... There is also a mapping of those commands to the rizin CLI options: `rizin -A`, `rizin -AA`, and so on. It is common sense that completely automated analysis can produce non sequitur results, thus -rizin provides separate commands for the particular stages of the analysis allowing fine-grained +Rizin provides separate commands for the particular stages of the analysis allowing fine-grained control of the analysis process. Moreover, there is a treasure trove of configuration variables -for controlling the analysis outcomes. You can find them in `analysis.*` and `emu.*` -cfg variables' namespaces. +for controlling the analysis outcomes. You can find them via command `el` under `analysis.*` and `emu.*` +variables namespaces. ## Analyze functions @@ -83,40 +100,39 @@ One of the most important "basic" analysis commands is the set of `af` subcomman function or perform a completely manual one. ``` -[0x00000000]> af? -Usage: af -| af ([name]) ([addr]) analyze functions (start at addr or $$) -| afr ([name]) ([addr]) analyze functions recursively -| af+ addr name [type] [diff] hand craft a function (requires afb+) -| af- [addr] clean all function analysis data (or function at addr) -| afa analyze function arguments in a call (afal honors dbg.funcarg) -| afb+ fcnA bbA sz [j] [f] ([t]( [d])) add bb to function @ fcnaddr -| afb[?] [addr] List basic blocks of given function -| afbF([0|1]) Toggle the basic-block 'folded' attribute -| afB 16 set current function as thumb (change asm.bits) -| afC[lc] ([addr])@[addr] calculate the Cycles (afC) or Cyclomatic Complexity (afCc) -| afc[?] type @[addr] set calling convention for function -| afd[addr] show function + delta for given offset -| afF[1|0|] fold/unfold/toggle -| afi [addr|fcn.name] show function(s) information (verbose afl) -| afj [tableaddr] [count] analyze function jumptable -| afl[?] [ls*] [fcn name] list functions (addr, size, bbs, name) (see afll) -| afm name merge two functions -| afM name print functions map -| afn[?] name [addr] rename name for function at address (change flag too) -| afna suggest automatic name for current offset -| afo[?j] [fcn.name] show address for the function name or current offset -| afs[!] ([fcnsign]) get/set function signature at current address (afs! uses cfg.editor) -| afS[stack_size] set stack frame size for function at current address -| afsr [function_name] [new_type] change type for given function -| aft[?] type matching, type propagation -| afu addr resize and analyze function from current address until addr -| afv[absrx]? manipulate args, registers and variables in function -| afx list function references +[0x00001100]> af? +Usage: af[?] # Analyze Functions commands +| af [] # Analyze functions recursively (honors `analysis.calls`) +| afr [] # Analyze functions recursively +| af+ [] # Hand craft a function (requires `afb+`) +| af- # Delete function +| af-* # Delete all function analysis data +| afj # Analyze function jumptable +| afa # Analyze function arguments in a call +| afal # Analyze function arguments in a call (honors `dbg.funcarg`) +| afb[?] # Basic blocks commands +| afB # Set asm.bits for the current function +| afs[jb!r] # Function signatures commands +| afo[j] # Show address of current function +| afu # Resize and analyze function from current address until addr +| afx[j] # List function references +| afS # Set stack frame size for function at current address +| afv # Manipulate arguments/variables in a function +| afl[?] # List functions +| afi[j*is] # Show/edit function information +| afn[as] # Analyze function names +| aft # Type matching analysis for the function in current seek +| afM # Print functions map +| afm # Merge two functions +| afc[lor] # Calling convention +| afd # Show function + delta for given offset ``` + You can use `afl` to list the functions found by the analysis. -There are a lot of useful commands under `afl` such as `aflj`, which lists the function in JSON format and `aflm`, which lists the functions in the syntax found in makefiles. +There are a lot of useful commands under `afl` such as `aflj` (lists the function in JSON format; `j` is a common +command suffix to provide JSON output), `aflm` (lists the functions in the syntax found in makefiles), or +`afll` (lists all functions in verbose mode). There's also `afl=`, which displays ASCII-art bars with function ranges. @@ -128,7 +144,8 @@ For the semi-automatic, you can use `afm ` to merge the current f the one specified by name as an argument, `aff` to readjust the function after analysis changes or function edits, `afu
    ` to do the resize and analysis of the current function until the specified address. -Apart from those semi-automatic ways to edit/analyze the function, you can handcraft it in the manual mode with `af+` command and edit basic blocks of it using `afb` commands. +Apart from those semi-automatic ways to edit/analyze the function, you can handcraft it in the manual mode with +`af+` command and edit basic blocks of it using `afb` commands. Before changing the basic blocks of the function it is recommended to check the already presented ones: ``` @@ -142,7 +159,9 @@ Before changing the basic blocks of the function it is recommended to check the ``` ### Handcraft function -before starting, let's prepare a binary file first, for example: + +Before starting, let's prepare a binary file first, for example: + ```C int code_block() { @@ -154,9 +173,11 @@ int code_block() return result; } ``` -then compile it with `gcc -c example.c -m32 -O0 -fno-pie`, we will get the object file `example.o`. open it with rizin. -since we haven't analyzed it yet, the `pdf` command will not print out the disassembly here: +Then compile it with `gcc -c example.c -m32 -O0 -fno-pie`, we will get the object file `example.o`. Open it with rizin. + +Since we haven't analyzed it yet, the `pdf` command will not print out the disassembly here: + ``` $ rizin example.o [0x08000034]> pdf @@ -181,38 +202,45 @@ p: Cannot find function at 0x08000034 0x0800005c c3 ret ``` -our goal is to handcraft a function with the following structure + +Our goal is to handcraft a function with the following structure ![analyze_one](analyze_one.png) -create a function at 0x8000034 named code_block: +Create a function at 0x8000034 named code_block: + ``` [0x8000034]> af+ 0x8000034 code_block ``` -In most cases, we use jump or call instructions as code block boundaries. so the range of first block is from `0x08000034 push ebp` to `0x08000048 jmp 0x8000052`. -use `afb+` command to add it. +In most cases, we use jump or call instructions as code block boundaries. So the range of first block is from +`0x08000034 push ebp` to `0x08000048 jmp 0x8000052`. Use `afb+` command to add it. ``` [0x08000034]> afb+ code_block 0x8000034 0x800004a-0x8000034 0x8000052 ``` -note that the basic syntax of `afb+` is `afb+ function_address block_address block_size [jump] [fail]`. the final instruction of this block points to a new address(jmp 0x8000052), thus we add the address of jump target (0x8000052) to reflect the jump info. +Note that the basic syntax of `afb+` is `afb+ function_address block_address block_size [jump] [fail]`. +The final instruction of this block points to a new address (jmp 0x8000052), thus we add the address of jump target +(0x8000052) to reflect the jump info. -the next block (0x08000052 ~ 0x08000056) is more likely an if conditional statement which has two branches. It will jump to 0x800004a if `jle-less or equal`, otherwise (the fail condition) jump to next instruction -- 0x08000058.: +The next block (0x08000052 ~ 0x08000056) is more likely an if conditional statement which has two branches. It will +jump to 0x800004a if `less or equal`, otherwise (the fail condition) jump to next instruction - 0x08000058: ``` [0x08000034]> afb+ code_block 0x8000052 0x8000058-0x8000052 0x800004a 0x8000058 ``` -follow the control flow and create the remaining two blocks (two branches) : +Follow the control flow and create the remaining two blocks (two branches): + ``` [0x08000034]> afb+ code_block 0x800004a 0x8000052-0x800004a 0x8000052 [0x08000034]> afb+ code_block 0x8000058 0x800005d-0x8000058 ``` -check our work: +Check our work: + ``` [0x08000034]> afb 0x08000034 0x0800004a 00:0000 22 j 0x08000052 @@ -224,9 +252,12 @@ check our work: ![handcraft_one](handcraft_one.png) -There are two very important commands for this: `afc` and `afB`. The latter is a must-know command for some platforms like ARM. It provides a way to change the "bitness" of a particular function by allowing to select between ARM and Thumb modes. +There are two very important commands for this: `afc` and `afB`. The latter is a must-know command for some platforms +like ARM. It provides a way to change the "bitness" of a particular function by allowing to select between ARM and +Thumb modes. -`afc` on the other side, allows to manually specify function calling convention. You can find more information on its usage in [calling_conventions](calling_conventions.md). +`afc` on the other side, allows to manually specify function calling convention. You can find more information on its +usage in [calling_conventions](calling_conventions.md). ## Recursive analysis @@ -243,28 +274,22 @@ wide choice of manual references' creation of any kind. For this fine-grained co you can use `ax` commands. ``` -Usage: ax[?d-l*] # see also 'afx?' -| ax list refs -| ax* output rizin commands -| ax addr [at] add code ref pointing to addr (from curseek) -| ax- [at] clean all refs/refs from addr -| ax-* clean all refs/refs -| axc addr [at] add generic code ref -| axC addr [at] add code call ref -| axg [addr] show xrefs graph to reach current function -| axg* [addr] show xrefs graph to given address, use .axg*;aggv -| axgj [addr] show xrefs graph to reach current function in json format -| axd addr [at] add data ref -| axq list refs in quiet/human-readable format -| axj list refs in json format -| axF [flg-glob] find data/code references of flags -| axm addr [at] copy data/code references pointing to addr to also point to curseek (or at) -| axt [addr] find data/code references to this address -| axf [addr] find data/code references from this address -| axv [addr] list local variables read-write-exec references -| ax. [addr] find data/code references from and to this address -| axff[j] [addr] find data/code references from this function -| axs addr [at] add string ref +[0x00001100]> ax? +Usage: ax[?] # Cross references (xrefs) +| ax # Add custom xref to addr from current seek +| axc # Add generic code xref to addr from current seek +| axC # Add call code xref to addr from current seek +| axd # Add data xref to addr from current seek +| axs # Add string xref to addr from current seek +| axl[j*q] # List all xrefs +| axt[j*q] # List xrefs to current seek +| axf[j*q] # List xrefs from current seek +| axtg # Display commands to generate graphs according to xrefs +| ax- [] # Delete xrefs to addr +| ax-* # Delete all xrefs +| axm # Copy xrefs pointing to addr to also point to curseek +| axg[j*] # Show xrefs graph to reach function at current seek + ``` The most commonly used `ax` commands are `axt` and `axf`, especially as a part of various rz-pipe @@ -289,29 +314,30 @@ sub.strlen_d50 0x5de0 [STRING] lea rcx, str.02x (nofunc) 0x17838 [CODE] jae str.02x ``` -There are also some useful commands under `axt`. Use `axtg` to generate rizin commands which will help you to create graphs according to the XREFs. +There are also some useful commands under `axt`. Use `axtg` to generate rizin commands which will help you to create +graphs according to the XREFs. ``` -[0x08048320]> s main -[0x080483e0]> axtg -agn 0x8048337 "entry0 + 23" -agn 0x80483e0 "main" -age 0x8048337 0x80483e0 +[0x00001100]> s main +[0x000011e9]> axtg +agn 0x1118 "entry0 + 24" +agn 0x11e9 "main" +age 0x1118 0x11e9 ``` Use `axt*` to split the rizin commands and set flags on those corresponding XREFs. -Also under `ax` is `axg`, which finds the path between two points in the file by showing an XREFs graph to reach the location or function. For example: +Also under `ax` is `axg`, which finds the path between two points in the file by showing an XREFs graph to reach +the location or function. For example: ``` -:> axg sym.imp.printf -- 0x08048a5c fcn 0x08048a5c sym.imp.printf - - 0x080483e5 fcn 0x080483e0 main - - 0x080483e0 fcn 0x080483e0 main - - 0x08048337 fcn 0x08048320 entry0 - - 0x08048425 fcn 0x080483e0 main +[0x000011e9]> axg +- 0x000011e9 fcn 0x000011e9 main + - 0x00001118 fcn 0x00001100 entry0 ``` -Use `axg*` to generate rizin commands which will help you to create graphs using `agn` and `age` commands, according to the XREFs. + +Use `axg*` to generate rizin commands which will help you to create graphs using `agn` and `age` commands, +according to the XREFs. Apart from predefined algorithms to identify functions there is a way to specify a function prelude with a configuration option `analysis.prelude`. For example, like @@ -341,15 +367,15 @@ There are different kinds of configuration options: The two most commonly used options for changing the behavior of control flow analysis in rizin are `analysis.hasnext` and `analysis.jmp.after`. The first one allows forcing rizin to continue the analysis after the end of the function, even if the next chunk of the code wasn't called anywhere, thus -analyzing all of the available functions. The latter one allows forcing rizin to continue +analyzing all the available functions. The latter one allows forcing rizin to continue the analysis even after unconditional jumps. In addition to those we can also set `analysis.jmp.indir` to follow the indirect jumps, continuing analysis; `analysis.pushret` to analyze `push ...; ret` sequence as a jump; `analysis.nopskip` to skip the NOP sequences at a function beginning. -For now, rizin also allows you to change the maximum basic block size with `analysis.bb.maxsize` option -. The default value just works in most use cases, but it's useful to increase that for example when +For now, rizin also allows you to change the maximum basic block size with `analysis.bb.maxsize` option. +The default value just works in most use cases, but it's useful to increase that for example when dealing with obfuscated code. Beware that some of the basic block control options may disappear in the future in favor of more automated ways to set those. @@ -377,13 +403,16 @@ There are a few options for this: - `analysis.limits` - enables the range limits for analysis operations - `analysis.from` - starting address of the limit range - `analysis.to` - the corresponding end of the limit range -- `analysis.in` - specify search boundaries for analysis. You can set it to `io.maps`, `io.sections.exec`, `dbg.maps` and many more. For example: - - To analyze a specific memory map with `analysis.from` and `analysis.to`, set `analysis.in = dbg.maps`. +- `analysis.in` - specify search boundaries for analysis. You can set it to `io.maps`, `bin.sections`, `dbg.maps` + and many more. For example: + - To analyze a specific memory map with `analysis.from` and `analysis.to`, set `analysis.in=dbg.maps`. - To analyze in the boundaries set by `analysis.from` and `analysis.to`, set `analysis.in=range`. - - To analyze in the current mapped segment or section, you can put `analysis.in=bin.segment` or `analysis.in=bin.section`, respectively. + - To analyze in the current mapped segment or section, you can put `analysis.in=bin.segment` or + `analysis.in=bin.section`, respectively. - To analyze in the current memory map, specify `analysis.in=dbg.map`. - To analyze in the stack or heap, you can set `analysis.in=dbg.stack` or `analysis.in=dbg.heap`. - - To analyze in the current function or basic block, you can specify `analysis.in=analysis.fcn` or `analysis.in=analysis.bb`. + - To analyze in the current function or basic block, you can specify `analysis.in=analysis.fcn` or + `analysis.in=analysis.bb`. Please see `e analysis.in=??` for the complete list. @@ -391,7 +420,7 @@ Please see `e analysis.in=??` for the complete list. Jump tables are one of the trickiest targets in binary reverse engineering. There are hundreds of different types, the end result depending on the compiler/linker and LTO stages of optimization. -Thus rizin allows enabling some experimental jump tables detection algorithms using `analysis.jmp.tbl` +Thus, Rizin allows enabling some experimental jump tables detection algorithms using `analysis.jmp.tbl` option. Eventually, algorithms moved into the default analysis loops once they start to work on every supported platform/target/test-case. Two more options can affect the jump tables analysis results too: @@ -403,7 +432,7 @@ Two more options can affect the jump tables analysis results too: There are two common problems when analyzing embedded targets: ARM/Thumb detection and MIPS GP value. In the case of ARM binaries rizin supports some auto-detection of ARM/Thumb mode switches, but -beware that it uses partial ESIL emulation, thus slowing the analysis process. If you will not +beware that it uses partial ESIL emulation, thus slowing the analysis process. If you do not like the results, particular functions' mode can be overridden with `afB` command. The MIPS GP problem is even trickier. It is basic knowledge that GP value can be different not only @@ -415,7 +444,7 @@ future in favor of more automated analysis. ## Visuals -One of the easiest way to see and check the changes of the analysis commands and variables +One of the easiest ways to see and check the changes of the analysis commands and variables is to perform scrolling in a `Vv` special visual mode, allowing functions preview: ![vv](code_analysis_vv.png) @@ -436,50 +465,65 @@ to override some basic opcode or meta-information properties, or even to rewrite string. These commands are located under `ah` namespace: ``` -Usage: ah[lba-] Analysis Hints -| ah? show this help -| ah? offset show hint of given offset -| ah list hints in a human-readable format -| ah. list hints in human-readable format from current offset -| ah- remove all hints -| ah- offset [size] remove hints at the given offset -| ah* offset list hints in rizin commands format -| aha ppc @ 0x42 force arch ppc for all address >= 0x42 or until the next hint -| aha 0 @ 0x84 disable the effect of arch hints for all address >= 0x84 or until the next hint -| ahb 16 @ 0x42 force 16bit for all address >= 0x42 or until the next hint -| ahb 0 @ 0x84 disable the effect of bits hints for all address >= 0x84 or until the next hint -| ahc 0x804804 override call/jump address -| ahd foo a0,33 replace opcode string -| ahe 3,eax,+= set vm analysis string -| ahf 0x804840 override fallback address for call -| ahF 0x10 set stackframe size at the current offset -| ahh 0x804840 highlight this address offset in disasm -| ahi[?] 10 define numeric base for immediates (2, 8, 10, 10u, 16, i, p, S, s) -| ahj list hints in JSON -| aho call change opcode type (see aho?) (deprecated, moved to "ahd") -| ahp addr set pointer hint -| ahr val set hint for the return value of a function -| ahs 4 set opcode size=4 -| ahS jz set asm.syntax=jz for this opcode -| aht [?] Mark immediate as a type offset (deprecated, moved to "aho") -| ahv val change opcode's val field (useful to set jmptbl sizes in jmp rax) -``` - -One of the most common cases is to set a particular numeric base for immediates: +[0x00001100]> ah? +Usage: ah # Analysis hints +| ahl[j*] # List all analysis hints +| ahl.[j*] # List analysis hints at current seek +| ah- [] # Delete analysis hints in region starting from current seek +| ah-* # Delete all analysis hints +| aha # Set arch hint +| aha- # Delete arch hint +| ahb # Set bits hint +| ahb- # Delete bits hint +| ahh # Set highlight hint +| ahh- # Delete highlight hint +| ahc # Set jump/call address hint +| ahc- # Delete jump/call address hint +| ahe # Set ESIL string hint +| ahe- # Delete ESIL string hint +| ahd # Set opcode hint +| ahd- # Delete opcode hint +| ahs # Set opcode size hint +| ahs- # Delete opcode size hint +| ahf # Set fallback address hint +| ahf- # Delete fallback address hint +| ahF # Set stackframe size hint +| ahF- # Delete stackframe size hint +| ahS # Set asm syntax hint +| ahS- # Delete asm syntax hint +| ahp # Set pointer hint +| ahp- # Delete pointer hint +| ahr # Set function return value hint +| ahr- # Delete function return value hint +| ahv # Set opcode value hint +| ahv- # Delete opcode value hint +| aho # Set opcode type hint +| aho- # Delete opcode type hint +| ahi [] # Set immediate base hint +| ahi- # Delete immediate base hint +| aht # Set structure offset hint +| aht- # Delete structure offset hint +| ahts # List all matching structure offsets +``` + +One of the most common cases is to set a particular numeric base for immediate: ``` [0x00003d54]> ahi? -Usage: ahi [2|8|10|10u|16|bodhipSs] [@ offset] Define numeric base -| ahi set numeric base (2, 8, 10, 16) -| ahi 10|d set base to signed decimal (10), sign bit should depend on receiver size -| ahi 10u|du set base to unsigned decimal (11) -| ahi b set base to binary (2) -| ahi o set base to octal (8) -| ahi h set base to hexadecimal (16) -| ahi i set base to IP address (32) -| ahi p set base to htons(port) (3) -| ahi S set base to syscall (80) -| ahi s set base to string (1) +Usage: ahi [] # Set immediate base hint +| ahi # Set numeric (2, 8, 10, 16) +| ahi 10|d # Set base to signed decimal (10), sign bit should depend on receiver size +| ahi 10u|du # Set base to unsigned decimal (11) +| ahi b # Set base to binary (2) +| ahi o # Set base to octal (8) +| ahi h # Set base to hexadecimal (16) +| ahi i # Set base to IP address (32) +| ahi p # Set base to htons(port) (3) +| ahi S # Set base to syscall (80) +| ahi s # Set base to string (1) + +Set base of the N-th immediate (indexing starts from 0): +| ahi 16 1 # Set base of the 1-st immediate to hexadecimal [0x00003d54]> pd 2 0x00003d54 0583000000 add eax, 0x83 @@ -505,7 +549,7 @@ which can be checked with `ah` command: ``` Sometimes we need to override jump or call address, for example in case of tricky -relocation, which is unknown for rizin, thus we can change the value manually. +relocation, which is unknown for Rizin, thus we can change the value manually. The current analysis information about a particular opcode can be checked with `ao` command. We can use `ahc` command for performing such a change: diff --git a/src/analysis/cpu_platform_profiles.md b/src/analysis/cpu_platform_profiles.md index 851217e3..64c92e42 100644 --- a/src/analysis/cpu_platform_profiles.md +++ b/src/analysis/cpu_platform_profiles.md @@ -5,7 +5,8 @@ The computer ecosystem, especially in embedded systems is vast and growing and is thus diverse and is full of trivial differences. CPUs and development boards differ by minor and sometimes large differences in their design, ports, MMIO registers and other peripherals. Rizin handles these -differences by storing the data regarding each CPUs and platforms in [SDB](https://book.rizin.re/basic_commands/sdb.html?highlight=SDB#sdb) files in a standard format, instead of hardcoding them with each of the +differences by storing the data regarding each CPUs and platforms in [SDB](../basic_commands/sdb.md) +files in a standard format, instead of hardcoding them with each of the disassembler plugins. This information will be parsed and added as flags and comments during the analysis loop and will show up in the disassembly and other places, making reverse engineering on those particular chips ets is much easier. This also helps in easy addition of a new port, in maintenance and in user-friendliness. @@ -15,9 +16,9 @@ chips ets is much easier. This also helps in easy addition of a new port, in mai ### CPU profiles All the specifics pertaining to a CPU is written down in a CPU profile. It is designed in a way that allows you -to enter CPU specefic values like: size of the RAM (`RAM_SIZE`), size of the ROM (`ROM_SIZE`) and many more. -CPU profiles can be selected using the configuration variable `asm.cpu`. Firstly, Rizin checks whether the -a CPU profile exists for the selected CPU and architecture. If it exists, Rizin generates the filepath of the +to enter CPU specific values like: size of the RAM (`RAM_SIZE`), size of the ROM (`ROM_SIZE`) and many more. +CPU profiles can be selected using the configuration variable `asm.cpu`. Firstly, Rizin checks whether the CPU profile +exists for the selected CPU and architecture. If it exists, Rizin generates the filepath of the profile and gets to a stage where it's ready to be loaded up. During analysis (`aa`), it's loaded up and the values are parsed and handled. CPU profiles also allow you to add information regarding the IO and extended IO registers of a CPU. The information pertaining to the IO and extended IO registers are added as flags at their corresponding offsets. @@ -37,10 +38,11 @@ PORTB=io ``` Here, `PINB` is the name and `io` is the type of the port and this will be added as a flag at the offset `0x03`. The type can be `ext_io` if it's an extended IO register, as well. Both will be added -as [flags](https://book.rizin.re/basic_commands/flags.html?highlight=flags#flags) and the only difference between -them is that they will be added in different [flagspaces](https://book.rizin.re/refcard/intro.html?highlight=flagspa#flagspaces). +as [flags](../basic_commands/flags.md) and the only difference between them is that they will be added in different +[flagspaces](../refcard/intro.md). -CPU profiles also support mapping the ROM. According the `ROM_ADDRESS` and `ROM_SIZE`, a [section](https://book.rizin.re/basic_commands/sections.html?highlight=section#sections) named `.rom` will be added during analysis. +CPU profiles also support mapping the ROM. According to the `ROM_ADDRESS` and `ROM_SIZE`, +a [section](../basic_commands/sections.md) named `.rom` will be added during analysis. #### Adding CPU profiles @@ -53,12 +55,13 @@ by the variable `cpus` in the corresponding architecture's disassembler plugin ( the SDB file in the directory, add the entry in the `meson.build` of the same directory and build again. Choose the right CPU and architecture and analyze again (`aa`) to load up the CPU profile. -For reference, you can see the previously added CPU profile of ATmega16 here: [librz/asm/cpus/avr-ATmega16.sdb.txt](https://github.com/rizinorg/rizin/blob/dev/librz/asm/cpus/avr-ATmega16.sdb.txt). +For reference, you can see the previously added CPU profile of ATmega16 here: +[librz/asm/cpus/avr-ATmega16.sdb.txt](https://github.com/rizinorg/rizin/blob/dev/librz/asm/cpus/avr-ATmega16.sdb.txt). ### Platform profiles Platform profiles are designed with an idea to support adding information that is pertaining to a specific board -or a micro controller. For example, most of the Raspberry Pi-s use a specific Broadcom chip and its peripherals +or a microcontroller. For example, most of the Raspberry Pi-s use a specific Broadcom chip and its peripherals like registers and interrupts will be the same for all Raspberry Pi-s. These profiles can be selected using the configuration variable `asm.platforms` and is loaded during analysis (`aa`). If you run `e asm.platform=?`, you can see the supported platforms by the selected architecture and CPU. @@ -75,7 +78,8 @@ AUX_MU_IO_REG.address=0x7e215040 AUX_MU_IO_REG.comment=Mini UART I/O Data ``` -Just like in CPU profiles, the `name` will be added as a flag and the `comment` as a [comment](https://book.rizin.re/disassembling/adding_metadata.html?highlight=Comment#adding-metadata-to-disassembly) (`CCu`). +Just like in CPU profiles, the `name` will be added as a flag and the `comment` as a +[comment](../disassembling/adding_metadata.md) (`CCu`). #### Adding platform profiles @@ -87,4 +91,5 @@ the `RzAsmPlugin` definition corresponding architecture's disassembler plugin. Y CPU is it's not already added. Then, add the entry in the `meson.build` of the same directory and build again. Choose the right CPU, architecture and platform and analyze again (`aa`). -You can also check out the platform profiles that were previously added at [librz/asm/platforms/arm-arm1176-bcm2835.sdb.txt](https://github.com/rizinorg/rizin/blob/dev/librz/asm/platforms/arm-arm1176-bcm2835.sdb.txt). +You can also check out the platform profiles that were previously added at +[librz/asm/platforms/arm-arm1176-bcm2835.sdb.txt](https://github.com/rizinorg/rizin/blob/dev/librz/asm/platforms/arm-arm1176-bcm2835.sdb.txt). diff --git a/src/analysis/emulation.md b/src/analysis/emulation.md index e429a716..2b5d8990 100644 --- a/src/analysis/emulation.md +++ b/src/analysis/emulation.md @@ -5,14 +5,14 @@ the core difference between static analysis and dynamic analysis. As many alread know, static analysis suffers from the path explosion problem, which is impossible to solve even in the most basic way without at least a partial emulation. -Thus many professional reverse engineering tools use code emulation while -performing an analysis of binary code, and rizin is no different here. +Thus, many professional reverse engineering tools use code emulation while +performing an analysis of binary code, and Rizin is no different here. -For partial emulation (or imprecise full emulation) rizin uses its own -[ESIL](../disassembling/esil.md) intermediate language and virtual machine. +For partial emulation (or imprecise full emulation) Rizin uses its own RzIL intermediate language, designed +to replace current [ESIL](../disassembling/esil.md). Rizin supports this kind of partial emulation for all platforms that -implement ESIL uplifting (x86/x86_64, ARM, arm64, MIPS, PowerPC, SPARC, AVR, 8051, Gameboy, ...). +implement ESIL uplifting (x86/x86_64, ARM, arm64, MIPS, PowerPC, SPARC, AVR, 8051, Game Boy, ...). One of the most common usages of such emulation is to calculate indirect jumps and conditional jumps. @@ -66,7 +66,7 @@ To manually setup the ESIL imprecise emulation you need to run this command sequ - a sequence of `aer` commands to set the initial register values. While performing emulation, please remember, that ESIL VM cannot emulate external calls -or system calls, along with SIMD instructions. Thus the most common scenario is to +or system calls, along with SIMD instructions. Thus, the most common scenario is to emulate only a small chunk of the code, like encryption/decryption, unpacking or calculating something. @@ -79,7 +79,7 @@ The commands interface for ESIL VM is almost identical to the debugging one: - `aesue ` to step until some specified ESIL expression met - `aec` to continue until break (Ctrl-C), this one is rarely used though, due to the omnipresence of external calls -In visual mode, all of the debugging hotkeys will work also in ESIL emulation mode. +In visual mode, all the debugging hotkeys will work also in ESIL emulation mode. Along with usual emulation, there is a possibility to record and replay mode: diff --git a/src/analysis/graphs.md b/src/analysis/graphs.md index ce84d180..9047bc41 100644 --- a/src/analysis/graphs.md +++ b/src/analysis/graphs.md @@ -1,6 +1,7 @@ # Graph commands -When analyzing data it is usually handy to have different ways to represent it in order to get new perspectives to allow the analyst to understand how different parts of the program interact. +When analyzing data it is usually handy to have different ways to represent it in order to get new perspectives to +allow the analyst to understand how different parts of the program interact. Representing basic block edges, function calls, string references as graphs show a very clear view of this information. @@ -8,91 +9,93 @@ Rizin supports various types of graph available through commands starting with ` ``` [0x00005000]> ag? -|Usage: ag [addr] -| Graph commands: -| aga[format] Data references graph -| agA[format] Global data references graph -| agc[format] Function callgraph -| agC[format] Global callgraph -| agd[format] [fcn addr] Diff graph -| agf[format] Basic blocks function graph -| agi[format] Imports graph -| agr[format] References graph -| agR[format] Global references graph -| agx[format] Cross references graph -| agg[format] Custom graph -| ag- Clear the custom graph -| agn[?] title body Add a node to the custom graph -| age[?] title1 title2 Add an edge to the custom graph - -Output formats: -| Ascii art -| * rizin commands -| d Graphviz dot -| g Graph Modelling Language (gml) -| j json ('J' for formatted disassembly) -| k SDB key-value -| t Tiny ascii art -| v Interactive ascii art -| w [path] Write to path or display graph image (see graph.gv.format and graph.web) +Usage: ag # Analysis graph commands +| aga =ascii # Data reference graph +| agA =ascii # Global data references graph +| agc =ascii # Function callgraph +| agC =ascii # Global callgraph +| agCi =ascii # Inter-procedual control flow graph +| agF =ascii # Control flow graph (without calls) +| agf =ascii # Basic blocks function graph +| agi =ascii # Imports graph +| agr =ascii # References graph +| agR =ascii # Global references graph +| ags =ascii # Normal graph +| agl =ascii # Line graph +| agx =ascii # Cross-references graph +| agI =ascii # RzIL graph of the instruction at the current offset. +| agg =ascii # Custom graph +| ag- # Clear the custom graph +| agn[-] # Managing custom graph nodes +| age[-] # Managing custom graph edges +| agw =dataref [-global] # Write to path or display graph image (see graph.gv.format) + +Formats: +| ascii # Ascii art +| cmd # rizin commands +| dot # Graphviz dot +| gml # Graph Modelling Language +| json # json +| json_disasm # json formatted disassembly +| sdb # SDB key-value +| interactive # Interactive ascii art ``` The structure of the commands is as follows: `ag `. -For example, `agid` displays the imports graph in dot format, while `aggj` +For example, `agi dot` displays the imports graph in dot format, while `agg json` outputs the custom graph in JSON format. Here's a short description for every output format available: -### Ascii Art ** (e.g. `agf`) +### Ascii Art (e.g. `agf`) Displays the graph directly to stdout using ASCII art to represent blocks and edges. -_Warning: displaying large graphs directly to stdout might prove to be computationally expensive and will make rizin not responsive for some time. In case of doubt, prefer using the interactive view (explained below)._ +_Warning: displaying large graphs directly to stdout might prove to be computationally expensive and will make Rizin +not responsive for some time. In case of doubt, prefer using the interactive view (explained below)._ -### Interactive Ascii Art (e.g. `agfv`) +### Interactive Ascii Art (e.g. `agf interactive`) Displays the ASCII graph in an interactive view similar to `VV` which allows to move the screen, zoom in / zoom out, ... -### Tiny Ascii Art (e.g. `agft`) +### Graphviz dot (e.g. `agf dot`) -Displays the ASCII graph directly to stdout in tiny mode (which is the same as reaching the maximum zoom out level in the interactive view). +Prints the dot source code representing the graph, which can be interpreted by programs such as +[graphviz](https://graphviz.gitlab.io/download/) or online viewers like [webgraphviz](http://www.webgraphviz.com/). -### Graphviz dot (e.g. `agfd`) - -Prints the dot source code representing the graph, which can be interpreted by programs such as [graphviz](https://graphviz.gitlab.io/download/) or online viewers like [this](http://www.webgraphviz.com/) - -### JSON (e.g. `agfj`) +### JSON (e.g. `agf json`) Prints a JSON string representing the graph. -- In the case of the `f` format (basic blocks of function), it will have detailed information about the function and will also contain the disassembly of the function (use `J` format for the formatted disassembly. - +- In the case of the `f` format (basic blocks of function), it will have detailed information about the function and + will also contain the disassembly of the function (use `J` format for the formatted disassembly). - In all other cases, it will only have basic information about the nodes of the graph (id, title, body, and edges). -### Graph Modelling Language (e.g. `agfg`) +### Graph Modelling Language (e.g. `agf gml`) -Prints the GML source code representing the graph, which can be interpreted by programs such as [yEd](https://www.yworks.com/products/yed/download) +Prints the GML source code representing the graph, which can be interpreted by programs such as +[yEd](https://www.yworks.com/products/yed/download) -### SDB key-value (e.g. `agfk`) +### SDB key-value (e.g. `agf sdb`) -Prints key-value strings representing the graph that was stored by sdb (rizin's string database). +Prints key-value strings representing the graph that was stored by sdb (Rizin's string database). -### R2 custom graph commands (e.g. `agf*`) +### Rizin custom graph commands (e.g. `agg`) -Prints rizin commands that would recreate the desired graph. The commands to construct the graph are `agn [title] [body]` to add a node and `age [title1] [title2]` to add an edge. +Prints rizin commands that would recreate the desired graph. The commands to construct the graph are +`agn [title] [body]` to add a node and `age [title1] [title2]` to add an edge. The `[body]` field can be expressed in base64 to include special formatting (such as newlines). -To easily execute the printed commands, it is possible to prepend a dot to the command (`.agf*`). - -### Web / image (e.g. `agfw`) - -Rizin will convert the graph to dot format, use the `dot` program to convert it to a `.gif` image and then try to find an already installed viewer on your system (`xdg-open`, `open`, ...) and display the graph there. +To easily execute the printed commands, it is possible to prepend a dot to the command (`.agg`). -The extension of the output image can be set with the `graph.extension` config variable. Available extensions are `png, jpg, gif, pdf, ps`. +### Web / image (e.g. `agw`) -_Note: for particularly large graphs, the most recommended extension is `svg` as it will produce images of much smaller size_ +Rizin will convert the graph to dot format, use the `dot` program to convert it to a `.gif` image and then try to find +an already installed viewer on your system (`xdg-open`, `open`, ...) and display the graph there. -If `graph.web` config variable is enabled, rizin will try to display the graph using the browser (_this feature is experimental and unfinished, and -disabled by default._) +The extension of the output image can be set with the `graph.gv.format` config variable. Available extensions are +`png, jpg, pdf, ps, svg, json`. +_Note: for particularly large graphs, the most recommended extension is `svg` as it will produce images of much +smaller size_ diff --git a/src/analysis/intro.md b/src/analysis/intro.md index 13cc4087..c8d0d417 100644 --- a/src/analysis/intro.md +++ b/src/analysis/intro.md @@ -6,13 +6,12 @@ basic blocks, opcode data, jump targets, cross-references, and much more. These operations are handled by the `a` (analyze) command family: ``` -|Usage: a[abdefFghoprxstc] [...] +[0x00001100]> a? +Usage: a [abdefFghoprxstc] [...] +| a* same as afl*;ah*;ax* | aa[?] analyze all (fcns + bbs) (aa0 to avoid sub renaming) | a8 [hexpairs] analyze bytes -| ab[b] [addr] analyze block at given address -| abb [len] analyze N basic blocks in [len] (section.size by default) -| abt [addr] find paths in the bb function graph from current offset to given address -| ac [cycles] analyze which op could be executed in [cycles] +| ab[?] [addr] analyze block | ad[?] analyze data trampoline (wip) | ad [from] [to] analyze data pointers to (from-to) | ae[?] [expr] analyze opcode eval expression (see ao) @@ -21,6 +20,8 @@ These operations are handled by the `a` (analyze) command family: | ag[?] [options] draw graphs in various formats | ah[?] analysis hints (force opcode size, ...) | ai [addr] address information (show perms, stack, heap, ...) +| aj same as a* but in json (aflj) +| aL list all asm/analysis plugins (e asm.arch=?) | an [name] [@addr] show/rename/create whatever flag/function is used at addr | ao[?] [len] analyze Opcodes (or emulate it) | aO[?] [len] Analyze N instructions in M bytes @@ -43,4 +44,3 @@ very different parts of the analysis: - Emulation using ESIL VM - Opcode introspection - Objects information, like virtual tables - diff --git a/src/analysis/symbols.md b/src/analysis/symbols.md index 8f450e8a..a4be6d32 100644 --- a/src/analysis/symbols.md +++ b/src/analysis/symbols.md @@ -16,34 +16,33 @@ In this case, all PDB files are available on the Microsoft server, which is by d is in options. See all pdb options in rizin: ``` -pdb.autoload = 0 -pdb.extract = 1 -pdb.server = https://msdl.microsoft.com/download/symbols -pdb.useragent = Microsoft-Symbol-Server/6.11.0001.402 +[0x00000000]> ell pdb +pdb.autoload = 0 ; Automatically load the required pdb files for loaded DLLs +pdb.extract = 1 ; Avoid extract of the pdb file, just download +pdb.server = https://msdl.microsoft.com/download/symbols ; Semi-colon separated list of base URLs for Microsoft symbol servers +pdb.symstore = /home/user/.local/share/rizin/pdb ; Path to downstream symbol store ``` -Using the variable `pdb.server` you can change the address where rizin will try to +Using the variable `pdb.server` you can change the address where Rizin will try to download the PDB file by the GUID stored in the executable header. -You can make use of multiple symbol servers by separating each URL with a semi-colon: +You can make use of multiple symbol servers by separating each URL with a semicolon: + ``` -e pdb.server=https://msdl.microsoft.com/download/symbols;https://symbols.mozilla.org/ +[0x00000000]> e pdb.server=https://msdl.microsoft.com/download/symbols;https://symbols.mozilla.org/ ``` -On Windows, you can also use local network share paths (UNC paths) as symbol servers. -Usually, there is no reason to change the default `pdb.useragent`, but who knows where -could it be handy? +On Windows, you can also use local network share paths (UNC paths) as symbol servers. Because those PDB files are stored as "cab" archives on the server, `pdb.extract=1` says to automatically extract them. Note that for the automatic downloading to work you need the "cabextract" tool, and wget/curl installed. -Sometimes you don't need to do that from the rizin itself, thus - two handy -rz-bin options: +Sometimes you don't need to do that from the Rizin itself, thus - two handy rz-bin options: ``` - -P show debug/pdb information - -PP download pdb file for binary + -P Show debug/pdb information + -PP Download pdb file for binary ``` where `-PP` automatically downloads the pdb for the selected binary, using those @@ -55,13 +54,9 @@ manipulated by the `id` commands: ``` [0x000051c0]> id? -|Usage: id Debug information -| Output mode: -| '*' Output in rizin commands -| id Source lines -| idp [file.pdb] Load pdb file information -| idpi [file.pdb] Show pdb file information -| idpd Download pdb file on remote server +Usage: id[jqp] # Debug commands +| id[jq] # Show DWARF source lines information +| idp[jidx] # PDB commands ``` Where `idpi` is basically the same as `rz-bin -P`. @@ -69,8 +64,8 @@ Note that `idp` can be also used not only in the static analysis mode but also in the debugging mode, even if connected via WinDbg. For simplifying the loading PDBs, especially for the processes with many linked DLLs, -rizin can autoload all required PDBs automatically - you need just set the -`e pdb.autoload=true` option. Then if you load some file in debugging mode +Rizin can autoload all required PDBs automatically - you need just set the +`e pdb.autoload=true` option. Then, if you load some file in debugging mode in Windows, using `rizin -d file.exe` or `rizin -d 2345` (attach to pid 2345), all related PDB files will be loaded automatically. diff --git a/src/analysis/syscalls.md b/src/analysis/syscalls.md index 6052be77..9c8ad12d 100644 --- a/src/analysis/syscalls.md +++ b/src/analysis/syscalls.md @@ -11,6 +11,7 @@ on the others, these can be different instructions, e.g. `syscall` on x86 PC. 0x00018a0e # 2: svc 0x82 ... ``` + Syscalls detection is driven by `asm.os`, `asm.bits`, and `asm.arch`. Be sure to set those configuration options accordingly. You can use `asl` command to check if syscalls' support is set up properly and as you expect. @@ -34,11 +35,10 @@ the addresses where particular syscalls were found and list them. 0x00018a0e sd_ble_gap_sec_info_reply ... ``` -To reduce searching time it is possible to [restrict the -searching](../search_bytes/configurating_the_search.md) range for -only executable segments or sections with `/as @e:search.in=io.maps.x` +To reduce searching time it is possible to [restrict the searching](../search_bytes/configurating_the_search.md) +range for only executable segments or sections with `/as @e:search.in=io.maps.x` -Using the [ESIL emulation](emulation.md) rizin can print syscall arguments +Using the [ESIL emulation](emulation.md) Rizin can print syscall arguments in the disassembly output. To enable the linear (but very rough) emulation use `asm.emu` configuration variable: ``` @@ -50,8 +50,9 @@ in the disassembly output. To enable the linear (but very rough) emulation use ``` In case of executing `aae` (or `aaaa` which calls `aae`) command -rizin will push found syscalls to a special `syscall.` flagspace, +Rizin will push found syscalls to a special `syscall.` flagspace, which can be useful for automation purpose: + ``` [0x000187c2]> fs 0 0 * imports @@ -77,7 +78,9 @@ It also can be interactively navigated through within HUD mode (`V_`) 0x0002ac36 syscall.sd_ble_gap_disconnect.3 ``` -When debugging in rizin, you can use `dcs` to continue execution until the next syscall. You can also run `dcs*` to trace all syscalls. +When debugging in Rizin, you can use `dcs` to continue execution until the next syscall. You can also run `dcs*` to +trace all syscalls. + ``` [0xf7fb9120]> dcs* Running child until syscalls:-1 @@ -90,7 +93,8 @@ child stopped with signal 133 child stopped with signal 133 ``` -rizin also has a syscall name to syscall number utility. You can return the syscall name of a given syscall number or vice versa, without leaving the shell. +rizin also has a syscall name to syscall number utility. You can return the syscall name of a given syscall number +or vice versa, without leaving the shell. ``` [0x08048436]> asr 1 diff --git a/src/analysis/types.md b/src/analysis/types.md index 27baf581..bfd9e44c 100644 --- a/src/analysis/types.md +++ b/src/analysis/types.md @@ -3,27 +3,27 @@ Rizin supports C-syntax data type definitions. Most of the related commands are located in `t` namespace: ``` -[0x000051c0]> t? +[0x00001100]> t? Usage: t[?] # Types, noreturn, signatures, C parser and more -| t[j*] [] # List all types / Show type information -| t- # Remove the type -| t-* # Remove all types -| tc[dc] # List loaded types in C format -| td # Define type from C definition -| te[jbcdf] # List loaded enums -| tf[j-c?] # List loaded functions definitions -| tn[j-?] # Manage noreturn function attributes and marks -| to[es] # Open C header file and load types from it -| tp[vx] # Print formatted type casted to the address -| ts[jlcd] # List loaded structures -| tt[jc] # List loaded typedefs -| tu[jlcd] # List loaded unions -| tx[fgl] # Type xrefs +| t[j*l] [] # List all types / Show type information +| t- # Remove the type +| t-* # Remove all types +| tc[dc] # List loaded types in C format +| td # Define type from C definition +| te[jbcdf] # List loaded enums +| tf[j-c?] # List loaded functions definitions +| tn[j-?] # Manage noreturn function attributes and marks +| to[es] # Open C header file and load types from it +| tp[vx] # Print formatted type casted to the address +| ts[jlcd] # List loaded structures +| tt[jc] # List loaded typedefs +| tu[jlcd] # List loaded unions +| tx[fgl] # Type xrefs ``` Note that the basic (atomic) types are not those from the C standard - not `char`, `_Bool`, or `short`. Because those types can be different -from one platform to another, rizin uses `definite` types like as +from one platform to another, Rizin uses `definite` types like as `int8_t` or `uint64_t` and will convert `int` to `int32_t` or `int64_t` depending on the binary or debuggee platform/compiler. @@ -49,7 +49,7 @@ long long There are three easy ways to define a new type: * Passing a string to the `td` command * Passing a file with the `to ` command -* Using your defined `cfg.editor` by calling the the `to -` command +* Using your defined `cfg.editor` by calling the `to -` command ``` [0x000051c0]> td "struct foo {char* a; int b;}" @@ -135,16 +135,16 @@ Moreover, the link will be shown in the disassembly output or visual mode: 0x00005202 mov rbp, rsp ``` -Once the struct is linked, rizin tries to propagate structure offset in the function at the current +Once the struct is linked, Rizin tries to propagate structure offset in the function at the current offset, to run this analysis on the whole program or at any targeted functions after all structs are linked you have `aat` command: ``` -[0x00000000]> aa? -| aat [] # Analyze all/given function to convert immediate to linked structure offsets +[0x00000000]> aat? +Usage: aat [] # Analyze all/given function to convert immediate to linked structure offsets ``` -Note sometimes the emulation may not be accurate, for example as below : +Note sometimes the emulation may not be accurate, for example as below: ```` |0x000006da push rbp @@ -161,8 +161,8 @@ The return value of `malloc` may differ between two emulations, so you have to s value manually using `ahr` command, so run `tl` or `aat` command after setting up the return value hint. ``` -[0x000006da]> ah? -| ahr # Set function return value hint +[0x000006da]> ahr? +Usage: ahr # Set function return value hint ``` ### Structure Immediates diff --git a/src/analysis/variables.md b/src/analysis/variables.md index 9f1d5740..7a928986 100644 --- a/src/analysis/variables.md +++ b/src/analysis/variables.md @@ -7,44 +7,42 @@ configuration option. The main variables commands are located in `afv` namespace: ``` -Usage: afv [rbs] -| afv* output rizin command to add args/locals to flagspace -| afv-([name]) remove all or given var -| afv= list function variables and arguments with disasm refs -| afva analyze function arguments/locals -| afvb[?] manipulate bp based arguments/locals -| afvd name output rizin command for displaying the value of args/locals in the debugger -| afvf show BP relative stackframe variables -| afvn [new_name] ([old_name]) rename argument/local -| afvr[?] manipulate register based arguments -| afvR [varname] list addresses where vars are accessed (READ) -| afvs[?] manipulate sp based arguments/locals -| afvt [name] [new_type] change type for given argument/local -| afvW [varname] list addresses where vars are accessed (WRITE) -| afvx show function variable xrefs (same as afvR+afvW) -``` - -`afvr`, `afvb` and `afvs` commands are uniform but allow manipulation of -register-based arguments and variables, BP/FP-based arguments and variables, -and SP-based arguments and variables respectively. +[0x00001100]> afv? +Usage: afv # Manipulate arguments/variables in a function +| afvl[j*lt] # List all variables and arguments of the current function +| afv= # List function variables and arguments with disasm refs +| afv- # Remove all variables/arguments or just the specified one +| afva # Analyze function arguments/locals +| afvd [] # Display the value of arguments/variables +| afvf # Show BP relative stackframe variables +| afvn [] # Rename argument/variable in current function +| afvR [] # List addresses where vars are accessed (READ) +| afvW [] # List addresses where vars are accessed (WRITE) +| afvt # Change type for given argument/local +| afvx[jav] # Show argument/variable xrefs in a function +| afvs[j*-gs?] # Manipulate stack-based arguments/locals +| afvr[j*-gs?] # Manipulate register-based arguments/locals +``` + +`afvr` and `afvs` commands are uniform but allow manipulation of +register-based arguments and variables, and SP-based arguments and variables respectively. If we check the help for `afvr` we will get the way two others commands works too: ``` -|Usage: afvr [reg] [type] [name] -| afvr list register based arguments -| afvr* same as afvr but in rizin commands -| afvr [reg] [name] ([type]) define register arguments -| afvrj return list of register arguments in JSON format -| afvr- [name] delete register arguments at the given index -| afvrg [reg] [addr] define argument get reference -| afvrs [reg] [addr] define argument set reference +[0x00001100]> afvr? +Usage: afvr[j*-gs?] # Manipulate register-based arguments/locals +| afvr[j*] [ []] # List register-based arguments and locals / Define a new one +| afvr- # Delete register-based argument/local with the given name +| afvr-* # Delete all register-based arguments/locals +| afvrg # Define register-based arguments and locals get references +| afvrs # Define register-based arguments and locals set references ``` -Like many other things variables detection is performed by rizin automatically, but results +Like many other things variables detection is performed by Rizin automatically, but results can be changed with those arguments/variables control commands. This kind of analysis relies heavily on preloaded function prototypes and the calling-convention, thus loading symbols can improve it. Moreover, after changing something we can rerun variables analysis with -`afva` command. Quite often variables analysis is accompanied with +`afva` command. Quite often variables analysis is accompanied by [types analysis](types.md), see `afta` command. The most important aspect of reverse engineering - naming things. Of course, you can rename @@ -53,33 +51,33 @@ _any_ type of argument or variable. Or you can simply remove the variable or arg `afv-` command. As mentioned before the analysis loop relies heavily on types information while performing -variables analysis stages. Thus comes next very important command - `afvt`, which -allows you to change the type of variable: - -``` -[0x00003b92]> afvs -var int local_8h @ rsp+0x8 -var int local_10h @ rsp+0x10 -var int local_28h @ rsp+0x28 -var int local_30h @ rsp+0x30 -var int local_32h @ rsp+0x32 -var int local_38h @ rsp+0x38 -var int local_45h @ rsp+0x45 -var int local_46h @ rsp+0x46 -var int local_47h @ rsp+0x47 -var int local_48h @ rsp+0x48 -[0x00003b92]> afvt local_10h char* -[0x00003b92]> afvs -var int local_8h @ rsp+0x8 -var char* local_10h @ rsp+0x10 -var int local_28h @ rsp+0x28 -var int local_30h @ rsp+0x30 -var int local_32h @ rsp+0x32 -var int local_38h @ rsp+0x38 -var int local_45h @ rsp+0x45 -var int local_46h @ rsp+0x46 -var int local_47h @ rsp+0x47 -var int local_48h @ rsp+0x48 +variables analysis stages. Let's see all variables that found by Rizin: + +``` +[0x000011e9]> afvs +var unknown_t var_48h @ stack - 0x48 +var unknown_t var_3ch @ stack - 0x3c +var unknown_t var_30h @ stack - 0x30 +var unknown_t var_28h @ stack - 0x28 +var unknown_t var_20h @ stack - 0x20 +var unknown_t var_18h @ stack - 0x18 +var unknown_t var_10h @ stack - 0x10 +``` + +`unknown_t` means an "undefined" default type for variable whose exact type can't be inferred. Thus comes very +important command - `afvt`, which allows you to change the type of variable: + +``` +[0x000011e9]> afvt var_48h const char * + +[0x000011e9]> afvs +var const char *var_48h @ stack - 0x48 +var unknown_t var_3ch @ stack - 0x3c +var unknown_t var_30h @ stack - 0x30 +var unknown_t var_28h @ stack - 0x28 +var unknown_t var_20h @ stack - 0x20 +var unknown_t var_18h @ stack - 0x18 +var unknown_t var_10h @ stack - 0x10 ``` Less commonly used feature, which is still under heavy development - distinction between @@ -88,95 +86,179 @@ being written with `afvW` command. Both commands provide a list of the places th are performed: ``` -[0x00003b92]> afvR -local_48h 0x48ee -local_30h 0x3c93,0x520b,0x52ea,0x532c,0x5400,0x3cfb -local_10h 0x4b53,0x5225,0x53bd,0x50cc -local_8h 0x4d40,0x4d99,0x5221,0x53b9,0x50c8,0x4620 -local_28h 0x503a,0x51d8,0x51fa,0x52d3,0x531b -local_38h -local_45h 0x50a1 -local_47h -local_46h -local_32h 0x3cb1 +[0x000011e9]> afvR + var_3ch + var_48h + var_30h 0x1212,0x1254 + var_28h 0x1222,0x1267 + var_20h 0x1232 + var_18h 0x1236 + var_10h 0x124d,0x1258,0x126b,0x127a,0x1286 + [0x00003b92]> afvW -local_48h 0x3adf -local_30h 0x3d3e,0x4868,0x5030 -local_10h 0x3d0e,0x5035 -local_8h 0x3d13,0x4d39,0x5025 -local_28h 0x4d00,0x52dc,0x53af,0x5060,0x507a,0x508b -local_38h 0x486d -local_45h 0x5014,0x5068 -local_47h 0x501b -local_46h 0x5083 -local_32h +[0x000011e9]> afvW + var_3ch 0x11f5 + var_48h 0x11f8 + var_30h 0x1203 + var_28h 0x120e + var_20h 0x121e + var_18h 0x122e + var_10h 0x1249 [0x00003b92]> ``` ## Type inference -The type inference for local variables and arguments is well integrated with the command `afta`. - -Let's see an example of this with a simple [hello_world](https://github.com/rizinorg/rizinbook/tree/master/examples/hello_world) binary - -``` -[0x000007aa]> pdf -| ;-- main: -/ (fcn) sym.main 157 -| sym.main (); -| ; var int local_20h @ rbp-0x20 -| ; var int local_1ch @ rbp-0x1c -| ; var int local_18h @ rbp-0x18 -| ; var int local_10h @ rbp-0x10 -| ; var int local_8h @ rbp-0x8 -| ; DATA XREF from entry0 (0x6bd) -| 0x000007aa push rbp -| 0x000007ab mov rbp, rsp -| 0x000007ae sub rsp, 0x20 -| 0x000007b2 lea rax, str.Hello ; 0x8d4 ; "Hello" -| 0x000007b9 mov qword [local_18h], rax -| 0x000007bd lea rax, str.r2_folks ; 0x8da ; " r2-folks" -| 0x000007c4 mov qword [local_10h], rax -| 0x000007c8 mov rax, qword [local_18h] -| 0x000007cc mov rdi, rax -| 0x000007cf call sym.imp.strlen ; size_t strlen(const char *s) -``` - -* After applying `afta` - -``` -[0x000007aa]> afta -[0x000007aa]> pdf -| ;-- main: -| ;-- rip: -/ (fcn) sym.main 157 -| sym.main (); -| ; var size_t local_20h @ rbp-0x20 -| ; var size_t size @ rbp-0x1c -| ; var char *src @ rbp-0x18 -| ; var char *s2 @ rbp-0x10 -| ; var char *dest @ rbp-0x8 -| ; DATA XREF from entry0 (0x6bd) -| 0x000007aa push rbp -| 0x000007ab mov rbp, rsp -| 0x000007ae sub rsp, 0x20 -| 0x000007b2 lea rax, str.Hello ; 0x8d4 ; "Hello" -| 0x000007b9 mov qword [src], rax -| 0x000007bd lea rax, str.r2_folks ; 0x8da ; " r2-folks" -| 0x000007c4 mov qword [s2], rax -| 0x000007c8 mov rax, qword [src] -| 0x000007cc mov rdi, rax ; const char *s -| 0x000007cf call sym.imp.strlen ; size_t strlen(const char *s) -``` - -It also extracts type information from format strings like `printf ("fmt : %s , %u , %d", ...)`, the format specifications are extracted from `analysis/d/spec.sdb` - -You could create a new profile for specifying a set of format chars depending on different libraries/operating systems/programming languages like this : +The type inference for local variables and arguments is well integrated with the command `aft`. + +Let's see an example of this with a simple +[hello_world](https://github.com/rizinorg/book/tree/master/examples/hello_world) binary: + +``` +[0x00001100]> aa +[x] Analyze all flags starting with sym. and entry0 (aa) + +[0x00001100]> s main + +[0x000011e9]> pdf + ; DATA XREF from entry0 @ 0x1118 +/ int main(int argc, char **argv, char **envp); +| ; arg int argc @ rdi +| ; arg char **argv @ rsi +| ; var int64_t var_48h @ stack - 0x48 +| ; var int64_t var_3ch @ stack - 0x3c +| ; var int64_t var_30h @ stack - 0x30 +| ; var int64_t var_28h @ stack - 0x28 +| ; var int64_t var_20h @ stack - 0x20 +| ; var int64_t var_18h @ stack - 0x18 +| ; var int64_t var_10h @ stack - 0x10 +| 0x000011e9 endbr64 +| 0x000011ed push rbp +| 0x000011ee mov rbp, rsp +| 0x000011f1 sub rsp, 0x40 +| 0x000011f5 mov dword [var_3ch], edi ; argc +| 0x000011f8 mov qword [var_48h], rsi ; argv +| 0x000011fc lea rax, [str.Hello] ; 0x2004 ; "Hello " +| 0x00001203 mov qword [var_30h], rax +| 0x00001207 lea rax, [str.world] ; 0x200b ; "world!" +| 0x0000120e mov qword [var_28h], rax +| 0x00001212 mov rax, qword [var_30h] +| 0x00001216 mov rdi, rax +| 0x00001219 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000121e mov qword [var_20h], rax +| 0x00001222 mov rax, qword [var_28h] +| 0x00001226 mov rdi, rax +| 0x00001229 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000122e mov qword [var_18h], rax +| 0x00001232 mov rdx, qword [var_20h] +| 0x00001236 mov rax, qword [var_18h] +| 0x0000123a add rax, rdx +| 0x0000123d add rax, 1 +| 0x00001241 mov rdi, rax +| 0x00001244 call sym.imp.malloc ; sym.imp.malloc ; void *malloc(size_t size) +| 0x00001249 mov qword [var_10h], rax +| 0x0000124d cmp qword [var_10h], 0 +| ,=< 0x00001252 je 0x1292 +| | 0x00001254 mov rdx, qword [var_30h] +| | 0x00001258 mov rax, qword [var_10h] +| | 0x0000125c mov rsi, rdx +| | 0x0000125f mov rdi, rax +| | 0x00001262 call sym.imp.strcpy ; sym.imp.strcpy ; char *strcpy(char *dest, const char *src) +| | 0x00001267 mov rdx, qword [var_28h] +| | 0x0000126b mov rax, qword [var_10h] +| | 0x0000126f mov rsi, rdx +| | 0x00001272 mov rdi, rax +| | 0x00001275 call sym.imp.strcat ; sym.imp.strcat ; char *strcat(char *s1, const char *s2) +| | 0x0000127a mov rax, qword [var_10h] +| | 0x0000127e mov rdi, rax +| | 0x00001281 call sym.imp.puts ; sym.imp.puts ; int puts(const char *s) +| | 0x00001286 mov rax, qword [var_10h] +| | 0x0000128a mov rdi, rax +| | 0x0000128d call sym.imp.free ; sym.imp.free ; void free(void *ptr) +| `-> 0x00001292 mov eax, 0 +| 0x00001297 leave +\ 0x00001298 ret +``` + +After applying `aft`: + +``` +[0x000011e9]> aeim + +[0x000011e9]> aft + +[0x000011e9]> pdf + ; DATA XREF from entry0 @ 0x1118 + ;-- rip: +/ int main(int argc, char **argv, char **envp); +| ; arg int argc @ rdi +| ; arg char **argv @ rsi +| ; var char **var_48h @ stack - 0x48 +| ; var int var_3ch @ stack - 0x3c +| ; var const char *src @ stack - 0x30 +| ; var const char *s2 @ stack - 0x28 +| ; var size_t var_20h @ stack - 0x20 +| ; var size_t size @ stack - 0x18 +| ; var char *dest @ stack - 0x10 +| 0x000011e9 endbr64 +| 0x000011ed push rbp +| 0x000011ee mov rbp, rsp +| 0x000011f1 sub rsp, 0x40 +| 0x000011f5 mov dword [var_3ch], edi ; argc +| 0x000011f8 mov qword [var_48h], rsi ; argv +| 0x000011fc lea rax, [str.Hello] ; 0x2004 ; "Hello " +| 0x00001203 mov qword [src], rax +| 0x00001207 lea rax, [str.world] ; 0x200b ; "world!" +| 0x0000120e mov qword [s2], rax +| 0x00001212 mov rax, qword [src] +| 0x00001216 mov rdi, rax ; const char *s +| 0x00001219 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000121e mov qword [var_20h], rax +| 0x00001222 mov rax, qword [s2] +| 0x00001226 mov rdi, rax ; const char *s +| 0x00001229 call sym.imp.strlen ; sym.imp.strlen ; size_t strlen(const char *s) +| 0x0000122e mov qword [size], rax +| 0x00001232 mov rdx, qword [var_20h] +| 0x00001236 mov rax, qword [size] +| 0x0000123a add rax, rdx +| 0x0000123d add rax, 1 +| 0x00001241 mov rdi, rax ; size_t size +| 0x00001244 call sym.imp.malloc ; sym.imp.malloc ; void *malloc(size_t size) +| 0x00001249 mov qword [dest], rax +| 0x0000124d cmp qword [dest], 0 +| ,=< 0x00001252 je 0x1292 +| | 0x00001254 mov rdx, qword [src] +| | 0x00001258 mov rax, qword [dest] +| | 0x0000125c mov rsi, rdx ; const char *src +| | 0x0000125f mov rdi, rax ; char *dest +| | 0x00001262 call sym.imp.strcpy ; sym.imp.strcpy ; char *strcpy(char *dest, const char *src) +| | 0x00001267 mov rdx, qword [s2] +| | 0x0000126b mov rax, qword [dest] +| | 0x0000126f mov rsi, rdx ; const char *s2 +| | 0x00001272 mov rdi, rax ; char *s1 +| | 0x00001275 call sym.imp.strcat ; sym.imp.strcat ; char *strcat(char *s1, const char *s2) +| | 0x0000127a mov rax, qword [dest] +| | 0x0000127e mov rdi, rax ; const char *s +| | 0x00001281 call sym.imp.puts ; sym.imp.puts ; int puts(const char *s) +| | 0x00001286 mov rax, qword [dest] +| | 0x0000128a mov rdi, rax ; void *ptr +| | 0x0000128d call sym.imp.free ; sym.imp.free ; void free(void *ptr) +| `-> 0x00001292 mov eax, 0 +| 0x00001297 leave +\ 0x00001298 ret +``` + +It also extracts type information from format strings like `printf ("fmt : %s , %u , %d", ...)`, +the format specifications are extracted from `analysis/d/spec.sdb` + +You could create a new profile for specifying a set of format chars depending on different libraries/operating +systems/programming languages like this: ``` win=spec spec.win.u32=unsigned int ``` + Then change your default specification to a newly created one using this config variable `e analysis.spec=win` -For more information about primitive and user-defined types support in rizin refer to [types](types.md) chapter. +For more information about primitive and user-defined types support in Rizin refer to [types](types.md) chapter. diff --git a/src/analysis/vtables.md b/src/analysis/vtables.md index 5e0ab19c..8533647e 100644 --- a/src/analysis/vtables.md +++ b/src/analysis/vtables.md @@ -9,16 +9,17 @@ Currently, the support is very basic, allowing you only to inspect parsed tables. ``` -|Usage: av[?jr*] C++ vtables and RTTI -| av search for vtables in data sections and show results -| avj like av, but as json -| av* like av, but as rizin commands -| avr[j@addr] try to parse RTTI at vtable addr (see analysis.cpp.abi) -| avra[j] search for vtables and try to parse RTTI at each of them +Usage: av[j*gr?] # C++ vtables and RTTI +| av[j*] # search for vtables in data sections and show results +| avg[?] # Global variables +| avr[j] # try to parse RTTI at vtable addr (see analysis.cpp.abi) +| avra[j] # search for vtables and try to parse RTTI at each of them +| avrr # recover class info from all findable RTTI (see ac) +| avrD # demangle a class name from RTTI ``` The main commands here are `av` and `avr`. `av` lists all virtual tables -found when rizin opened the file. If you are not happy with the result +found when Rizin opened the file. If you are not happy with the result you may want to try to parse a virtual table at a particular address with `avr` command. `avra` performs the search and parsing of all virtual -tables in the binary, like rizin does during the file opening. +tables in the binary, like Rizin does during the file opening. From 00a36624ce5aad367dc8267e5ced06f4e6ff40d0 Mon Sep 17 00:00:00 2001 From: "Azamat H. Hackimov" Date: Sun, 17 Nov 2024 21:54:55 +0300 Subject: [PATCH 07/16] Update and cleanup Visual mode Improve spelling. --- src/visual_mode/intro.md | 10 ++-- .../visual_configuration_editor.md | 5 +- src/visual_mode/visual_disassembly.md | 59 ++++++++++++------- src/visual_mode/visual_panels.md | 24 +++++--- 4 files changed, 64 insertions(+), 34 deletions(-) diff --git a/src/visual_mode/intro.md b/src/visual_mode/intro.md index e319f578..09946a2e 100644 --- a/src/visual_mode/intro.md +++ b/src/visual_mode/intro.md @@ -1,6 +1,7 @@ # Visual Mode -The visual mode is a more user-friendly interface alternative to rizin's command-line prompt. It allows easy navigation, has a cursor mode for selecting bytes, and offers numerous key bindings to simplify debugger use. +The visual mode is a more user-friendly interface alternative to Rizin's command-line prompt. It allows easy navigation, +has a cursor mode for selecting bytes, and offers numerous key bindings to simplify debugger use. To enter visual mode, use `V` command. To exit from it back to command line, press `q`. ## Navigation @@ -11,11 +12,12 @@ example `5j` will move down for 5 lines, or `2l` will move 2 characters right. ![Visual Mode](visualmode.png) -## print modes aka panels +## Print modes aka panels -The Visual mode uses "print modes" which are basically different panel that you can rotate. By default those are: +The Visual mode uses "print modes" which are basically different panel that you can rotate. By default, those are: -↻ **Hexdump panel** -> **Disassembly panel** → **Debugger panel** → **Hexadecimal words dump panel** → **Hex-less hexdump panel** → **Op analysis color map panel** → **Annotated hexdump panel** ↺. +↻ **Hexdump panel** -> **Disassembly panel** → **Debugger panel** → **Hexadecimal words dump panel** → +**Hex-less hexdump panel** → **Op analysis color map panel** → **Annotated hexdump panel** ↺. Notice that the top of the panel contains the command which is used, for example for the disassembly panel: diff --git a/src/visual_mode/visual_configuration_editor.md b/src/visual_mode/visual_configuration_editor.md index a4abec5d..459ce4c9 100644 --- a/src/visual_mode/visual_configuration_editor.md +++ b/src/visual_mode/visual_configuration_editor.md @@ -1,7 +1,8 @@ # Visual Configuration Editor -`Ve` or `e` in visual mode allows you to edit rizin configuration visually. -For example, if you want to change the assembly display just select `asm` in the list and choose your assembly display flavor. +`Ve` or `e` in visual mode allows you to edit Rizin configuration visually. +For example, if you want to change the assembly display just select `asm` in the list and choose your assembly +display flavor. ![First Select asm](select_asm.png) diff --git a/src/visual_mode/visual_disassembly.md b/src/visual_mode/visual_disassembly.md index f850329e..2424ddfc 100644 --- a/src/visual_mode/visual_disassembly.md +++ b/src/visual_mode/visual_disassembly.md @@ -2,8 +2,11 @@ ## 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. +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] @@ -13,7 +16,8 @@ Seek back to the previous location using `u`, `U` will allow you to redo the see ## `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` 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 → ... @@ -28,7 +32,10 @@ d → d ... ``` -To improve code readability you can change how rizin 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`: +To improve code readability you can change how Rizin presents numerical values in disassembly, by default most +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 → ... @@ -41,34 +48,44 @@ d → i → 2 ### Usage of the Cursor for Inserting/Patching... -Remember that, to be able to actually edit files loaded in rizin, you have to start it with the `-w` option. Otherwise a file is opened in read-only mode. +Remember that, to be able to actually edit files loaded in rizin, 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. +Pressing lowercase `c` toggles the cursor mode. When this mode is active, the currently selected byte (or byte range) +is highlighted. ![Cursor at 0x00404896](cursor.png) -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 specific 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: +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 specific 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: + ```