A lightweight ARM reverse engineering tool.

eydis

A lightweight (basic and slow) ARM reverse engineering tool.

I. Requierements

  1. macOS/Linux,
  2. Basics compiling tools,
  3. The SQLite3 + readline frameworks,

II. Usage

usage: eydis [-d] <image>
   -w [file]	specify a database,
   -b [addr]	specify the rebase address,    # "-b 0x100000000"

   -s [offset]	start from a specified offset, # "-s 0x30"
   -e [offset]	end to a specified offset.     # "-e 0x200"

By the way, eydis has a built-in shell:

eydis > help

[shell_help]: exit				exit safely eydis,
[shell_help]: save				save a patched file,
[shell_help]: reload 				reload the actual disassemblage,

[shell_help]: patch [addr] [hex] 		patch a certain instruction of the image,
[shell_help]: name [old_name] [new_name]	rename an existing subroutine,
[shell_help]: set [start_addr] [end_addr]	set new disassembling limits.

Examples

  1. If you own a database (with the original file corresponding to) with renamed subroutines, you can specify it before running eydis with the -w argument:
$ eydis -d original_arm_file.bin -w db_with_renamed_functions

  1. If you ever need to patch one of the file that you are disassembling, you can use the patch command:

The base_addr will be 0x240000000 here

eydis > patch 0x24000d4b0 0x00008052 (< The patch in hexadecimal, not swapped)
                 (^ Address where the patch has to be)

I advise to use this website.


  1. If you ever need to rename a subroutine, you can use the name command:
eydis > name sub_2400112C8 _DERImg4Decode (< Its new name)
                 (^ the actual name of the subroutine)

  1. Disassembling a whole file may be boring (because waiting for the end can be very long) but you can re-specify (either before running eydis or after with the shell) the disassembling limits, here is an example with the shell:
eydis > set 0x30 0x7c (< Where the disassemblage will ends)
            (^ Where the disassemblage will starts)

Then when everything is done, you can use the reload command to display or save to save your modified file!

III. The 'TODO' list

> Optimize the most possible the whole program,
> Make a better user experience (using the 'ncurses' library),
> Find the end of the regulars functions (so the prints can ends faster),
> Avoid to re-print the whole image every times that the 'reload' command is called,
> Avoid to use GNU readline (I use it because it is more advanced than a simple stdin read).

(they all are long and hard tasks and I don't even know if I can do everything...)

IV. Notes

  • Eydis was made for learning purpose and is not really meant to be a complete disassembler,

  • If there is any bugs | issues | problems | wishes, please, report it in the Issues section!!

  • A 32bit support is planned but not for now (however, if it is absolutely necessary I will do my best),

  • This project is still under development so please enjoy at least the time you will spend with it (^v^)

Owner
Yui Aioi
Professional failure.
Yui Aioi
Similar Resources

A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Jul 21, 2022

Prometheus exporter for ARM® Hardware components using HWCPipe.

ARM® HWCPipe Exporter ARM® HWCPipe Exporter is a Prometheus exporter written in Java and C++ that retrieves metrics from Android devices running on AR

Oct 5, 2022

An experimental operating system for x86 and ARM

An experimental operating system for x86 and ARM

Odyssey - an experimental operating system for x86 and ARM

Dec 28, 2022

ARM DevSummit workshop with Portenta H7

ARM DevSummit 2021 - Edge Impulse Portenta workshop Edge Impulse enables developers to create the next generation of intelligent device solutions with

Oct 19, 2021

Dummy-Robot my super mini robot arm robot items

Dummy-Robot my super mini robot arm robot items

Dummy-Robot 我的超迷你机械臂机器人项目。 资料待整理 已添加3D模型设计源文件。 已添加夹爪硬件设计文件和LED灯环PCB 已添加无线空间定位控制器PCB文件 已添加无线示教器Peak软硬件工程(作为submodule) 已添加REF的硬件设计文件 已添加DummyStudio上位机 已

Dec 30, 2022

Kernel with ARM/KVM for SM-A600G (Samsung Galaxy A6) with Exynos7870 SoC

Kernel with ARM/KVM for SM-A600G (Samsung Galaxy A6) with Exynos7870 SoC

Kernel source for SM-A600G (Samsung Galaxy A6 with exynos7870) with KVM support. Warning: Super long text ahead, be careful not to mess up your brain

Sep 20, 2022

An articulating arm in OpenGL for coms336

Theodore Davis tcdavis Sean Griffen griffens opengl-articulating-arm Articulating Arm in OpenGL for ComS 336 Project Description The scene will defaul

Nov 16, 2021

A small RTOS for ARM Cortex-M3/M4 based Microcontrollers.

A small RTOS for ARM Cortex-M3/M4 based Microcontrollers.

A tiny RTOS for ARM Cortex-M3/M4 based Microcontrollers. Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Proje

Dec 31, 2022

Control of 4 DOF robotic arm using Bluetooth HC-05 Sensor

Control of 4 DOF robotic arm using Bluetooth HC-05 Sensor

SERV-E - "At your Service" Problem Statement With the current boom of technology where the whole world is running towards digitisation and automation

Apr 27, 2022
Related tags
Block Cipher Reverse Engineering: A Challenge by Nintendo European Research & Development
Block Cipher Reverse Engineering: A Challenge by Nintendo European Research & Development

My algorithm cracks NERD HireMe for any output within 1 Second without Brute-Force! Read more if you want to find out how this was accomplished or execute this algorithm yourself on Wandbox - Online C++ Compiler

Nov 15, 2021
Resources gathered for reverse engineering the FNIRSI-1013D scope

# FNIRSI-1013D-Hack Resources gathered for reverse engineering the FNIRSI-1013D scope As part of what is on EEVBLOG, resources for the reverse engine

Dec 25, 2022
The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.
The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.

Memestream This repository holds the code that I develop during my live game "modding" ?? sessions. When I stream, I like to speedrun making a success

Jul 6, 2022
Info & tools for reverse engineering the M6 smart fitness band
Info & tools for reverse engineering the M6 smart fitness band

m6-reveng This repo contains information and tools for reverse engineering the $7 M6 smart fitness band. Hardware The SoC (system-on-a-chip) is a Teli

Dec 26, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Oct 14, 2021
Reverse engineering the V831 npu

v831-npu Reverse engineering the V831 Neural Network Accelerator (NNA) Hardware is primarily based off NVIDIA Deep Learning Accelerator(NVDLA) archite

Jan 7, 2023
Reverse engineering / documenting the SSC (qcom Snapdragon Sensor Core) or SLPI.

QRTR / QMI sensor daemon Device setup (pmos) Install deps sudo apk add alpine-sdk sshfs eudev-dev qrtr-dev Mount build dir First on host setup USB net

Jul 26, 2022
Reverse engineering Genshin Impact anticheat to study how anticheats work on the Windows operating system.
Reverse engineering Genshin Impact anticheat to study how anticheats work on the Windows operating system.

mhyprot2 - Reverse engineering Genshin Impact anticheat for study 1. Demonstration video 2. Screenshots 2.1 Panel 3. Future updates and questions As I

Nov 16, 2022
OverRide - Binary Exploitation and Reverse-Engineering (from assembly into C)
OverRide - Binary Exploitation and Reverse-Engineering (from assembly into C)

OverRide Explore disassembly, binary exploitation & reverse-engineering through 10 little challenges. In the folder for each level you will find: flag

Sep 22, 2022
Cutter is a free and open-source reverse engineering platform powered by rizin
Cutter is a free and open-source reverse engineering platform powered by rizin

Cutter is a free and open-source reverse engineering platform powered by rizin. It aims at being an advanced and customizable reverse engineering platform while keeping the user experience in mind. Cutter is created by reverse engineers for reverse engineers.

Jan 1, 2023