Git Product home page Git Product logo

elfkickers's Introduction

This distribution is a collection of programs that are generally
unrelated, except in that they all deal with the ELF file format.

The main purpose of these programs is to be illustrative and
educational -- to help fellow programmers understand the ELF file
format and something of how it works under the Linux platform. For the
most part, these programs have limited real-world utility. (Although I
myself have found some of these programs quite useful while writing
the others.)

With the exception of shared use of the elfrw static library, each
program is independent of the others. There is no other shared code
between them, and they all take slightly different approaches to
handling ELF files.

The table of contents:

sstrip/
  sstrip is a small utility that removes as much as possible from an
  ELF file without affecting the file's memory image.

objres/
  objres is a simple utility that embeds arbitrary binary data files
  in object files as exported variables.

elfls/
  elfls is a utility that displays an ELF file's program and/or
  section header tables, which serve as a kind of global roadmap to
  the file's contents.

rebind/
  rebind is another small utility that alters the binding of selected
  exported symbols in an ELF object file.

elfrw/
  libelfrw.a is a small wrapper library. Its main purpose is to make
  32-bit ELF structures look like 64-bit structures when reading ELF
  files (and vice versa when writing them), thus allowing programs to
  more easily support both flavors of ELF files. The previous four
  programs all make use of this library.

elftoc/
  elftoc takes an ELF file and generates C code that defines a
  structure with the same memory image, using the structures and
  preprocessor symbols defined in your system's elf.h header file.

ebfc/
  ebfc is a compiler for a tiny programming language. The compiler can
  generate 32-bit ELF executables, object files, and shared libraries.

infect/
  infect provides a very simple example of modifying an ELF executable
  without affecting its original program.

See the README in each directory for more details about each program.

The ELF standard is worthwhile reading if you want to understand more
about the inner workings of these programs. You can find PDF documents
describing the 32-bit ELF standard, and the additions made for 64-bit
support, floating around in various unlikely places on the web. Search
engines are your friends here.

Many years ago I created a flat-text version of the document because
the Postscript version was too hard to search. You can find it at
<http://www.muppetlabs.com/~breadbox/software/ELF.txt>. Although it
only covers 32-bit ELF for x86, nearly all of it is still applicable
to 64-bit ELF files as well.

Earlier versions of this distribution also included my collection of
tiny ELF executables. I stopped including these because they are
somewhat orthogonal to the subject of most of the programs here. They
can be found at <http://www.muppetlabs.com/~breadbox/software/tiny/>
if you are curious about them.

    These programs are copyright (C) 1999, 2000, 2001, 2011 by Brian
    Raiter. These programs are free software; you can redistribute
    them and/or modify them under the terms of the GNU General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.
    These programs are distributed in the hope that they will be
    useful, but WITHOUT ANY WARRANTY; without even the implied
    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the GNU General Public License, included in this distribution
    in the file COPYING, for more details.

Bug reports and general feedback should be directed to the author at
<[email protected]>.

Share and enjoy.

Brian Raiter
<http://www.muppetlabs.com/~breadbox/software/elfkickers.html>

elfkickers's People

Contributors

br903 avatar dougmencken avatar fengjixuchui avatar lszr avatar stevenhoneyman avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.