News Of The Bastard

This page chronicles the ongoing changes made to the bastard in the course of "normal development" and in response to user feedback. The current version of the bastard can be obtained from cvs; releases can be downloaded from the sourceforge project page once they become available. A release tarball will not be produced until all design criteria for that release have been met, regardless of any delay this incurs. Those with an immediate need for features specified in a future release are encouraged to use the cvs version if it meets their needs, or to contact the developer(s) in order to have those features given a higher priority.

version .20

Release Date: Undetermined

Design Criteria:

  • Platform-independent [e.g. windows support will finally work]
  • Database-agnostic [no more typhoon issues]
  • Interpreter-agnostic [not more EiC issues]

    version .18

    Release Date: Never

    Design Criteria:

  • MIPS disassembler extension
  • SPARC disassembler extension
  • CLR [.NET] disassembler extension
  • Gtk-based UI
  • html output
  • xml output
  • postscript output
  • support for Solaris environments [if possible]
  • support for Win32 environments [if possible -- EiC is problem]
  • intermediate code generation from x86 [complete]
  • function-level high-level language code generation [basic]
  • Extension Programming Guide
  • bdbview utility
  • patching of target

    version .17

    Release Date: Spring^H^H^H^H^HSummer '03

    Release Criteria:

  • library signatures
  • PE file format support
  • AR file format support
  • ncurses-based UI
  • graph output
  • 'magic' target file format detection
  • support for BSD environments
  • Front-end programming guide
  • Function, Structure, Plugin, Disassembly HOWTOs

    version .17-cvs current

    Started writing the Front End Programming doc

    API Reference has been started

    Added find_addr_ptr(), find_string_ref() routines

    Fixed bugs in post.1.bc and disasm_find_epilogue() that caused hangs

    Barebones ATT Assembler extension written

    Calltree plugin written

    Added code_tag(), code_untag(), and code_untag_all()

    CLI now has BC Script debugging commands, e.g. BC MEMDUMP and BC TRACE

    Fixed disassembler bug that disassembled a 32-bit insn as 16-bit insn

    Fixed sec_new bug that made data addresses at the start of code sections

    Fixed bug in addr_make_code() that corrupted mnemonic strings

    Moved extensions from share/bastard to $BASTARD_BASE/lib/bastard

    Install now places static libraries in $BASTARD_BASE/lib/bastard

    Fixed new_addr() bug that created 1 byte-data addresses inside code addresses

    Fixed post.1.bc 'fixing 0/1-byte fns' runaway loop bug

    Ncurses front-end is now usable

    Wrote ncurses front-end help document

    Fixed moronic offset-off-by-1 error in intcode mnemonic sprintf

    Fixed sob startup crashes caused by GtkSendEvent

    Added new find functions: find_bytes(), find_reg(), find_op(), find_mnemonic(), find_xref(), find_name(), find_string(). Completely removed old find API.

    Added func_del(), updated func_size() to mark CODE objects contained by function

    Implemented 64-bit internal data types fpr addresses and operands

    Changed OOPy names in bdb.ddl to proper BSDish names

    Added condition code information to CODE struct

    Fixed mega-stupid bug that crashed the CLI in EiC when format strings were used

    Finished GDL output plugin (produces files for vcg)

    Finished Graph DB plugin

    Added addr_step_code() routine

    Added support for storing plugins in ~/.bastard/plugins

    Addded a new API to libdisasm [not actually a bastard feature]

    Fixed ModR/M bug introduced into libdisasm since .16

    Fixed 'disassembler engines not being called' problem

    Added Visual C++ project files to libdisasm

    Updated man pages

    Fixed operand types in scas, stosb, etc instructions

    Added sys_puts() to allow STDOUT output even when QUIET flag is set

    Removed typhoon-specific functions [d_keyfind, etc] from Bastard API -- everything runs through the bdb_* interface now

    Added sys_sprintf() to meet all your sys_msg() needs

    Removed Get*Object() routines once and for all

    Added 'tag' and 'hint' field to often-used DB tables [for UI, plugin use].

    Fixed handling of xrefs in asmsprintf()

    Added disassemble_address_raw() to libdisasm

    Added notion of 'events' and sys_event() callback for UI frontends

    Fixed imul bug where a word was disassembled instead of a byte

    Added UI callbacks sys_okcancel, sys_prompt_user, sys_msg, and sys_errmsg


    Fixed bobjdump and defaulted it to Intel syntax

    Fixed extension "ext_*" routines to return an error code on error

    Plugins now provide a plugin_help command for help, version info

    Plugin-HOWTO.txt added.

    Added DIS command to CLI for calling disassembler plugins directly

    Static library signature generation/matching implemented with libsignatures plugin and SIG GEN, SIG LOAD, SIG MATCH.

    PE file format extension written [resources not supported].

    Updated CLI VER command to print env and target struct details

    MZ file format updated to create PSP structure

    Added signature commands to CLI: SIG [subcommands GEN, LOAD, MATCH]

    Modified disassembler plugins to call COMP extension and generate data types

    Fixed FIND command in CLI; added subcommands INSN, OP, REG, XREF, NAME, BYTES

    16-bit mode of libi386/libdisasm finished

    Added EXT command to CLI for manualy loading of extensions

    Moved clearing of target struct to sys_init() and target_close()

    CLI now has the following commands: NAME [name location or dump named location], COMMENT [comment location], VER [version info], ENTRY [dump entry point]

    Extension.c now contains ext_fprint_versions to print extension version info

    CLI can handle commands with single or double quotes to protect whitespace

    Fixed problem with structure generation in ELF.h

    Fixed CLI bug with '|' and '>' not closing pipe

    CLI now has 'P' command to call arbitrary plugins directly

    Extension flags bug fixed

    sys_init() process cleaned up

    Top-level Makefile updated to allow configuration of defaults

    Cheeky written

    ELF format extension fixed to provide proper handling for AR files

    AR format extension finished

    EXT_PLUGIN support expanded to allow multiple plugins

    libi386 makefile fixed to include i386_invariant.o

    Build/install process fixed to install the bastard to /usr/local/bin, /usr/local/include, /use/local/lib, /usr/local/man, and /usr/local/share instead of a monolithic /usr/local/bastard directory

    Disassembly of .header section in packed executables fixed.

    Makefiles updated to allow compilation on FreeBSD.

    libi386/libdisasm invariant disassembly fixed.

    Makefiles updated to fix 'make install' bug.

    CLI now has 'O' command to call output plugins directly.

    Plugin interface extended to allow arbitrary functions in plugins to be called by name.

    libMAGIC format extension uses code from file(1) to detect the file format of the target automatically.

    libi386/libdisasm disassembly of prefetch instructions fixed.

    Typhoon DB state save/restore rewritten for speed.

    version .16

    Release Date: Summer '02

    Release Criteria:

  • "invariant" instruction disassembly
  • Syscall identification
  • man pages
  • bdbdump utiltiy
  • bobjdump utility