No description
Find a file
Dhruv Maroo 19ec6ba298
Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535)
* Add a new test for checking 80-bit floating point operations

    * New test `f80_ieee_div_test` tests the division of two 80-bit
      floats

* Add SoftFloat 2c as a meson subproject

* Add softfloat code to make the failing test case pass

* Update the hash for the latest softfloat revision

* Implement `rz_float_sqrt` using SoftFloat

* Run the `f80_ieee_div_test` only for x86

* Replace SoftFloat version 2c with 3e

    * 3e has less bugs and more features
    * Modify the implementation in accordance

* Update SoftFloat revision and add a guard around the 80-bit div test

* Use SoftFloat for add, sub, mul operations as well

* Make rem and mod also use SoftFloat functions

    * Also add test for mod and rem, and fix behavior of rem

* Add comment about behavior of mod and rem

* Add comments for tests which have different results for mod and rem

* Simplify usage of loop variable as suggested in review

* Remove unused macro from float.c

* Implement `FMA` and `ROUND` using SoftFloat API

* Add more tests for 80-bit floats

* Change remote to a repository under rizinorg

* Add info about the rounding mode in the Doxygen for rem and mod

* Add comments in tests for rem and mod in `test_float.c`

* Use bitvectors to initialize 80-bit soft floats

    * This makes the tests more portable and hence they can be run on
      any platform

* Remove guards for f80 tests since they are portable now
2024-06-25 22:06:24 +05:30
.builds Use Python venv on OpenBSD (#4437) 2024-04-16 23:43:20 +08:00
.github Revert #4506 (#4519) 2024-05-27 21:50:58 +08:00
.reuse Fix license linter 2024-03-07 18:38:49 +08:00
.woodpecker Update Woodpecker Syntax (#4163) 2024-01-26 20:09:09 +01:00
binrz Added documentation for MS-DOS and Win32 timestamp conversions (#4528) 2024-06-02 12:52:15 +08:00
dist Drop libuv dependency 2022-08-06 13:20:52 +02:00
doc Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
librz Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
LICENSES Move SDB into RzUtil 2022-07-19 08:45:20 +02:00
subprojects Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
sys clang format files that previously were incorrectly excluded. 2024-03-07 18:38:49 +08:00
test Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
.appveyor.yml Add simple POST-command and changed upload path (remote) (#4106) 2024-01-17 15:17:36 +08:00
.clang-format Remove SdbList (#4496) 2024-05-17 19:23:04 +08:00
.dockerignore Drop libuv dependency 2022-08-06 13:20:52 +02:00
.gitattributes Move remaining things from shlr/ to meson subprojects (#2126) 2021-12-22 09:20:39 +08:00
.gitignore Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
.lgtm.yml Make LGTM use Meson 2021-01-28 11:57:28 +01:00
.prettierignore Move remaining things from shlr/ to meson subprojects (#2126) 2021-12-22 09:20:39 +08:00
.pylintrc For now, let's just ignore C0209 pylint error (#1735) 2021-09-23 13:20:44 +02:00
.travis.yml Add simple POST-command and changed upload path (remote) (#4106) 2024-01-17 15:17:36 +08:00
BUILDING.md Work around for https://github.com/google/sanitizers/issues/1716 (#4362) 2024-03-16 13:45:51 +08:00
CODE_OF_CONDUCT.md
codecov.yml Disable Codecov PR Commenting (#2117) 2021-12-19 13:42:41 +01:00
CODEOWNERS Fix codeowners and labeler 2024-03-08 12:33:07 +08:00
CONTRIBUTING.md CONTRIBUTING.md: Remove commit hashtag requirement (#4186) 2024-02-05 18:39:37 +08:00
COPYING
COPYING.LESSER
DEVELOPERS.md Add hint about bitmaps and bitvectors. (#4144) 2024-01-24 18:21:14 +08:00
Dockerfile Revert "Downgrade Docker Meson to 1.2.3 (#3994)" 2023-12-01 23:32:17 +08:00
Doxyfile Move remaining things from shlr/ to meson subprojects (#2126) 2021-12-22 09:20:39 +08:00
meson.build Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
meson_options.txt Use SoftFloat 3e for implementing arithmetic operations in RzFloat (#4535) 2024-06-25 22:06:24 +05:30
README.md Mention tools in README (#4065) 2024-01-05 12:29:35 +08:00
SECURITY.md Update Security policy to be more precise about vulns 2021-08-25 13:13:37 +02:00
snapcraft.yaml Bump version to v0.8.0 2024-02-24 12:09:08 +08:00
travis-extract-var.sh SPDX Copyright text for all files based on history 2021-03-05 19:39:15 +08:00
travis-script Use meson setup <dir> instead of meson <dir> 2023-04-26 20:01:47 +08:00

Rizin logo

Rizin

Rizin is a fork of the radare2 reverse engineering framework with a focus on usability, working features and code cleanliness.

Rizin is portable and it can be used to analyze binaries, disassemble code, debug programs, as a forensic tool, as a scriptable command-line hexadecimal editor able to open disk files, and much more!

To learn more on Rizin you may want to read the official Rizin book.

How to install

Look at install instructions on our web page.

How to build

Use meson to compile and install Rizin. Please make sure to get an updated meson (e.g. get it with pip install meson if your system does not provide one that is at least version 0.55.0).

Clone this repository:

$ git clone https://github.com/rizinorg/rizin

Then compile and install with:

$ meson setup build
$ meson compile -C build
$ sudo meson install -C build

Now you can use rizin:

$ rizin
 -- Thank you for using rizin. Have a nice night!
[0x00000000]>

To uninstall rizin, execute sudo ninja -C build uninstall.

Please have a look at BUILDING.md for more information about building Rizin.

Contributing

We very much welcome any kind of contributions, from typos, to documentation, to refactoring, up to completely new features you may think of. Before contributing, we would like you to read the file CONTRIBUTING.md, so that we can all be on the same page.

Tests

Look at test/README.md.

Supported features

Supported Operating Systems

Windows 7 and higher, Apple macOS/iOS/iPadOS, GNU/Linux, [Dragonfly|Net|Free|Open]BSD, Android, QNX, Solaris/Illumos, Haiku, GNU/Darwin, GNU/Hurd.

Supported Architectures

i386, x86-64, ARM/ARM64, RISC-V, PowerPC, MIPS, AVR, SPARC, System Z (S390), SuperH, m68k, m680x, XAP, XCore, CR16, HPPA, ARC, Blackfin, Z80, H8/300, Renesas (V810, V850, RL78), CRIS, XAP, PIC, LM32, 8051, 6502, i4004, i8080, Propeller, Tricore, CHIP-8, LH5801, T8200, GameBoy, SNES, SPC700, MSP430, Xtensa, NIOS II, TMS320 (c54x, c55x, c55+, c64x), Hexagon, DCPU16, LANAI, MCORE, mcs96, RSP, C-SKY(MCore), VAX, AMD Am29000.

There is also support for the following bytecode formats:

Dalvik, EBC, Java, Lua, Python, WebAssembly, Brainfuck, Malbolge

Supported File Formats

ELF, Mach-O, Fatmach-O, PE, PE+, MZ, COFF, OMF, NE, LE, LX, TE, XBE, BIOS/UEFI, Dyldcache, DEX, ART, CGC, ELF, Java class, Android boot image, Plan9 executable, ZIMG, MBN/SBL bootloader, ELF coredump, MDMP (Windows minidump), DMP (Windows pagedump), WASM (WebAssembly binary), Commodore VICE emulator, QNX, Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs.

Tools

Apart from the main tool rizin, there are also other tools tailored for specific purposes and useful for shell scripting or as separate standalone tools:

  • rz-bin - provides all kind of information about binary formats
  • rz-asm - a command-line assembler and disassemblers
  • rz-diff - a tool to compare two binaries as raw data or analyzed executables
  • rz-hash - allows to calculate different hashes or even encrypt data
  • rz-gg - a small "eggs" code generator useful for exploitation purposes
  • rz-find - binary analog of find tool, allowing to search patterns and bit masks
  • rz-sign - tool to create, convert and parse FLIRT signatures
  • rz-ax - a calculator and number format converter
  • rz-run - a tool that allows to specify running environment and arguments for debugged file

Scripting

We provide a way to interact with Rizin from Python, Haskell, OCaml, Ruby, Rust, and Go languages through rzpipe. Other languages although not currently supported could be easily added.

Community

Our website and blog: https://www.rizin.re/

Join our Mattermost community to discuss Rizin, its development, and general topics related to the project.

We also provide the following partial bridges to other messaging platforms: