thorkill / eresi

The ERESI Reverse Engineering Software Interface
http://www.eresi-project.org
547 stars 129 forks source link

FIXME: This file is not updated to ERESI 0.8 ! TO DO ASAP

                -------------------
                ELFSH 0.65rc2-linux
                -------------------

Hello dear ELFsh & E2dbg user,

Try to read this README, its a precious information ressource for the ELF shell project .

For impatient people, this is a short list of provided features :

. Analysis on nearly all types of sections
. Cool disasm/resolving engine with libelfsh and libasm
. Raw read/write capability into ELF32 AND ELF64 objects
. Modify ELF header, PHT, SHT, GOT, CTORS, DTORS, .dynamic, PAX bits
. Modify symbol table, dynamic symbol table and relocation tables
. Remove or reconstruct SHT
. Real interactive and scripting modes
. Many kind of section injection [even working in non-exec environments]
. Control flow graphs with graphviz output (i386) : see modflow
. ELFsh Module support and ELFsh internal API
. Quiet output for tiny screens and shellcript friendship
. Experimental ET_EXEC relocation and remapping feature (INTEL)
. Full ET_REL injection into ET_EXEC (INTEL / SPARC / ALPHA)
. PLT infection (INTEL, SPARC, ALPHA, MIPS)
. ALTPLT technique (INTEL, SPARC, ALPHA)

Major features of 0.65 are :

. 64 bits support
. A better scripting language with variables, conditions, and loops
. Support of ALPHA, MIPS, and SPARC64 architecture
. The Embedded ELF Debugging for Linux / IA32
. The DUMP protocol for connections between elfsh nodes
. The very first source release of libasm
. The EXTPLT technique for the X86 architecture
. The ALTGOT technique for the MIPS architecture
. The CFLOW technique for function redirection on IA32 and MIPS
. EXTSTATIC technique for extending static executables  

The major features of the 0.65 releases are available both for static injections and memory injection, using the Embedded ELF Debugger (e2dbg) for now on the Linux / IA32 environment.

We succesfully tested the debugger on Solaris x86 but we are still in the testing phase for it. BSD port is coming as well so stay tuned. If you are running BSD or Solaris and want to test elfsh, then make sure to look at elfsh 0.51rc3 that include a lot of the previously mentionned static features.

[0] Introduction [1] Communicate with ELFsh [2] Libelfsh and BFD [3] Portability [4] Changes [5] Module interface [6] Bugs and WIP [7] Contact

[0] Introduction

$ elfsh

     The ELF shell 0.65rc2 (32 bits built) .::. 

     .::. This software is under the General Public License V.2 
     .::. Please visit http://www.gnu.org 

(elfsh-0.65rc2)

[1] ELFsh syntax

You can choose to use ELFsh in interactive mode, script mode, or command line.

$ elfsh

     The ELF shell 0.65rc2 (32 bits built) .::.

     .::. This software is under the General Public License V.2
     .::. Please visit http://www.gnu.org

(elfsh-0.65rc2) help

             The ELF shell 0.65rc2 (compiled for 32 bits objects) 

Configuration commands .::. help, info, cat, sdir, lscripts, profile, quit, exit load, unload, switch, list, workspace ELFsh modules commands .::. modload, modunload, modhelp Ondisk/Memory ELF commands .::. elf, interp, pht, got, sht, rel, notes, dyn, dynsym findrel, ctors, disasm, hexa, set, get, write, print add, sub, mul, div, mod, cmp, reladd, redir Debugger commands .::. break, delete, continue, dumpregs, stack, dbgstack backtrace, linkmap, step ELF objects flags .::. fixup, shtrm, sstrip Ondisk only ELF commands .::. flush, save, sym, stab, append, extend, insert, remove Network commands .::. net, netlist, netkill, connect, disconnect, peerslist, rcmd

Available prefixes .::. all, sort, quiet, verb Available Script jumps .::. jmp, je, jne, jg, jl, jge, jle Available modules .::. modtest, modremap, modflow

Type 'help command' for specific information

(elfsh-0.65rc2)

Since ELFsh support his own module format, you can inject code into the VM very easily, or choose to improve libelfsh, if the needed modifications are pure ELF manipulation.

[*] D and X commands parameters syntax