librz: add some initial documentation (#3782)
This commit is contained in:
parent
6eec2fe0d1
commit
3b903caa96
28 changed files with 94 additions and 0 deletions
35
librz/README.md
Normal file
35
librz/README.md
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Rizin Libs (librz)
|
||||||
|
|
||||||
|
The Rizin framework is composed of several pieces that work together to provide
|
||||||
|
a reverse-engineering framework useful for a variety of use-cases and tasks. All
|
||||||
|
tools present in [binrz](../binrz/) are based on the libraries present in this
|
||||||
|
directory, so getting a general idea of what these libraries are and do is key
|
||||||
|
to navigate the codebase.
|
||||||
|
|
||||||
|
- [RzUtil](util/README.md)
|
||||||
|
- [RzIO](io/README.md)
|
||||||
|
- [RzBin](bin/README.md)
|
||||||
|
- [RzAnalysis](analysis/README.md)
|
||||||
|
- [RzAsm](asm/README.md)
|
||||||
|
- [RzCons](cons/README.md)
|
||||||
|
- [RzDebug](debug/README.md)
|
||||||
|
- [RzFlag](flag/README.md)
|
||||||
|
- [RzCore](core/README.md)
|
||||||
|
- [RzBp](bp/README.md)
|
||||||
|
- [RzConfig](config/README.md)
|
||||||
|
- [RzCrypto](crypto/README.md)
|
||||||
|
- [RzDemangler](demangler/README.md)
|
||||||
|
- [RzDiff](diff/README.md)
|
||||||
|
- [RzEgg](egg/README.md)
|
||||||
|
- [RzHash](hash/README.md)
|
||||||
|
- [RzIL](il/README.md)
|
||||||
|
- [RzLang](lang/README.md)
|
||||||
|
- [RzMagic](magic/README.md)
|
||||||
|
- [RzMain](main/README.md)
|
||||||
|
- [RzParse](parse/README.md)
|
||||||
|
- [RzReg](reg/README.md)
|
||||||
|
- [RzSearch](search/README.md)
|
||||||
|
- [RzSign](sign/README.md)
|
||||||
|
- [RzSocket](socket/README.md)
|
||||||
|
- [RzSyscall](syscall/README.md)
|
||||||
|
- [RzType](type/README.md)
|
||||||
0
librz/analysis/README.md
Normal file
0
librz/analysis/README.md
Normal file
0
librz/asm/README.md
Normal file
0
librz/asm/README.md
Normal file
0
librz/bin/README.md
Normal file
0
librz/bin/README.md
Normal file
0
librz/bp/README.md
Normal file
0
librz/bp/README.md
Normal file
0
librz/config/README.md
Normal file
0
librz/config/README.md
Normal file
0
librz/cons/README.md
Normal file
0
librz/cons/README.md
Normal file
0
librz/core/README.md
Normal file
0
librz/core/README.md
Normal file
0
librz/crypto/README.md
Normal file
0
librz/crypto/README.md
Normal file
0
librz/debug/README.md
Normal file
0
librz/debug/README.md
Normal file
0
librz/demangler/README.md
Normal file
0
librz/demangler/README.md
Normal file
0
librz/diff/README.md
Normal file
0
librz/diff/README.md
Normal file
0
librz/egg/README.md
Normal file
0
librz/egg/README.md
Normal file
0
librz/flag/README.md
Normal file
0
librz/flag/README.md
Normal file
0
librz/hash/README.md
Normal file
0
librz/hash/README.md
Normal file
0
librz/il/README.md
Normal file
0
librz/il/README.md
Normal file
41
librz/io/README.md
Normal file
41
librz/io/README.md
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# RzIO
|
||||||
|
|
||||||
|
This library contains is about all I/O operations that are needed in the Rizin
|
||||||
|
framework. The main concepts here are `RzIO`, `RzIODesc`, `RzIOMap`, and
|
||||||
|
`RzIOPlugin`. When working with the Rizin framework, files are "mapped" into a
|
||||||
|
64bit address space. When you open a raw binary file, it is opened at address 0,
|
||||||
|
for example. However, you could open other files at different addresses and view
|
||||||
|
all of them together in the same address space.
|
||||||
|
|
||||||
|
`RzIO` is the main object through which other modules perform I/O and it links
|
||||||
|
together all RzIO concepts.
|
||||||
|
|
||||||
|
`RzIODesc` represents an opened URI (like a local file). These descriptors have
|
||||||
|
an URI that specify what `RzIOPlugin` to use to open a resource. The most common
|
||||||
|
one allows users to open local files, however one could open files over an HTTP
|
||||||
|
server, inside a ZIP-compressed file, from the shared memory, etc.. For example,
|
||||||
|
`zip:///myfile.zip//file_inside.elf` would open the file `file_inside.elf` by
|
||||||
|
reading the ZIP file `myfile.zip` and uncompressing it on the fly.
|
||||||
|
|
||||||
|
`RzIOMap` expresses how a `RzIODesc` is mapped into the Rizin address space.
|
||||||
|
When analyzing a raw binary file, for example, you may just want to map the
|
||||||
|
whole file, however when dealing with binary file formats (e.g. ELF, PE, MachO)
|
||||||
|
having the file layed out in memory similarly to how a loader would load it,
|
||||||
|
greatly helps analyzing the binary. Thus, through `RzIOMap` you specify how
|
||||||
|
parts of a `RzIODesc` are mapped into the memory (usually sections/segments are
|
||||||
|
mapped at specific addresses).
|
||||||
|
|
||||||
|
Files are opened by default in read-only mode, however it is usually possible to
|
||||||
|
open/re-open them in write mode too. When this is done, writes in the mapped
|
||||||
|
addresses are done in the real resource, if possible. If users want to write
|
||||||
|
some temporary data without actually modifying the resource, it is useful to use
|
||||||
|
the *cache* concept in `RzIO`. The cache provides a layer on top of `RzIOMap` to
|
||||||
|
write/read data temporarily.
|
||||||
|
|
||||||
|
## What can I expect here?
|
||||||
|
- I/O operations, like read from address, write to address, seek, resize, etc.
|
||||||
|
- Functions to open new files/resources
|
||||||
|
- Functions to map parts of a RzIODesc into the Rizin space
|
||||||
|
- Functions to manipulate maps and opened descriptors
|
||||||
|
- Functions to deal with the cache
|
||||||
|
- `RzIO` Plugins to perform I/O operations on various kinds of resources
|
||||||
0
librz/lang/README.md
Normal file
0
librz/lang/README.md
Normal file
0
librz/magic/README.md
Normal file
0
librz/magic/README.md
Normal file
0
librz/main/README.md
Normal file
0
librz/main/README.md
Normal file
0
librz/parse/README.md
Normal file
0
librz/parse/README.md
Normal file
0
librz/reg/README.md
Normal file
0
librz/reg/README.md
Normal file
0
librz/search/README.md
Normal file
0
librz/search/README.md
Normal file
0
librz/sign/README.md
Normal file
0
librz/sign/README.md
Normal file
0
librz/socket/README.md
Normal file
0
librz/socket/README.md
Normal file
0
librz/syscall/README.md
Normal file
0
librz/syscall/README.md
Normal file
0
librz/type/README.md
Normal file
0
librz/type/README.md
Normal file
18
librz/util/README.md
Normal file
18
librz/util/README.md
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# RzUtil
|
||||||
|
|
||||||
|
This library contains all common utilities and functions that are used by other
|
||||||
|
modules in the Rizin framework, like string manipulation, data structures
|
||||||
|
(lists, vectors, trees, etc.), JSON parsing/printing, and others.
|
||||||
|
|
||||||
|
## What can I expect here?
|
||||||
|
- Numbers/math functions
|
||||||
|
- Functions likely needed across several other modules
|
||||||
|
- Data structures: lists, vectors, trees, graphs, skiplist
|
||||||
|
- RzBuffer
|
||||||
|
- JSON parsing, JSON printing
|
||||||
|
- PKCS7
|
||||||
|
- BitVector
|
||||||
|
- Functions that are very common and not specific to other modules
|
||||||
|
- SDB
|
||||||
|
- Floating point number operations
|
||||||
|
- OS/Platform-independent abstractions for common operations (e.g. rename a file, create temporary file, etc.)
|
||||||
Loading…
Reference in a new issue