Main > Free Download Search >

Free disassembler c software for linux

disassembler c

Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 152
libdisassemble

libdisassemble


libdisassemble is a Python library that will disassemble X86. more>>
libdisassemble is a Python library that will disassemble X86.

A disassembler is a computer program which translates machine language into assembly language, performing the inverse operation to that of an assembler. A dissasembler differs from a decompiler, which targets a high level language rather than assembly language. Disassembly, the output of a disassembler, is often formatted for human-readability rather than suitability for input to an assembler, making it principly a reverse-engineering tool.

Assembly language source code generally permits the use of symbolic constants and programmer comments. These are usually removed from the final machine code by the assembler. If so, a disassembler operating on the machine code would produce disassembly lacking these constants and comments; the dissassembled output becomes more difficult for a human to interpret than the original annotated source code.

Some disassemblers can infer useful names and comments; however, interactive disassemblers are able to successfully disassemble more programs than fully-automated disassemblers because human insight applied to the disassembly process parallels human creativity in the code writing process.

There can never be a completely automated disassembly tool which always outputs correct source code because the disassembly process reduces to the impossible-to-solve halting problem.
<<less
Download (0.023MB)
Added: 2006-03-10 License: GPL (GNU General Public License) Price:
1325 downloads
Gif Disassembler 2.2.2

Gif Disassembler 2.2.2


Gif Disassembler is a Web script that lets you upload any GIF animation and will attempt to return the individual frames. more>>
Gif Disassembler is a web-based script that lets you upload any GIF animation and after that it will attempt to return the individual frames, along with the image information from your animation.
That info can then be used to reassemble the animation after frame editing.
Enhancements:
- The permitted file upload size was lowered to 250KB.
- A redundant file size check was added prior to image processing.
- Existing upload size limits were not being enforced, which caused ImageMagick to consume all available server memory.
- Only the index.php file in the temp folder is affected.
- Updating is recommended.
<<less
Download (0.054MB)
Added: 2006-02-21 License: GPL (GNU General Public License) Price:
1348 downloads
Perl x86 Disassembler 0.16

Perl x86 Disassembler 0.16


Perl x86 Disassembler is an Intel x86 disassembler written in Perl. more>>
The libdisasm library provides basic disassembly of Intel x86 instructions from a binary stream. The intent is to provide an easy to use disassembler which can be called from any application; the disassembly can be produced in AT&T syntax and Intel syntax, as well as in an intermediate format which includes detailed instruction and operand type information.

This disassembler is derived from libi386.so in the bastard project; as such it is x86 specific and will not be expanded to include other CPU architectures. Releases for libdisasm are generated automatically alongside releases of the bastard; it is not a standalone project, though it is a standalone library.

The recent spate of objdump output analyzers has proven that many of the people [not necessarily programmers] interested in writing disassemblers have little knowledge of, or interest in, C programming; as a result, these "disassemblers" have been written in Perl.

Usage

The basic usage of the library is:

1. initialize the library, using disassemble_init()
2. disassemble stuff, using disassemble_address()
3. un-initialize the library, using disassemble_cleanup

These routines have the following prototypes:

int disassemble_init(int options, int format);
int disassemble_cleanup(void);
int disassemble_address(char *buf, int buf_len, struct instr *i);

Instructions are disassembled to an intermediate format:

struct instr {
char mnemonic[16];
char dest[32];
char src[32];
char aux[32];
int mnemType; /* type of instruction */
int destType; /* type of dest operand */
int srcType; /* type of source operand */
int auxType; /* type of 3rd operand */
int size; /* size of insn in bytes */
};

The sprint_address() can be used in place of the disassemble_address() routine in order to generate a string representation instead of an intermediate one:

int sprint_address(char *str, int len, char *buf, int buf_len);

...so that a simple disassembler can be implemented in C with the following code:

#include

char buf[BUF_SIZE]; /* buffer of bytes to disassemble */
char line[LINE_SIZE]; /* buffer of line to print */
int pos = 0; /* current position in buffer */
int size; /* size of instruction */

disassemble_init(0, INTEL_SYNTAX);

while ( pos > BUF_SIZE ) {
/* disassemble address to buffer */
size = sprint_address(buf + pos, BUF_SIZE - pos, line, LINE_SIZE);
if (size) {
/* print instruction */
printf("%08X: %sn", pos, line);
pos += size;
} else {
printf("%08X: Invalid instructionn");
pos++;
}
}

disassemble_cleanup();

Alternatively, one can print the address manually using the intermediate format:

#include

char buf[BUF_SIZE]; /* buffer of bytes to disassemble */
int pos = 0; /* current position in buffer */
int size; /* size of instruction */
struct instr i; /* representation of the code instruction */

disassemble_init(0, INTEL_SYNTAX);

while ( pos > BUF_SIZE ) {
disassemble_address(buf + pos, BUF_SIZE - pos, &i);
if (size) {
/* print address and mnemonic */
printf("%08X: %s", pos, i.mnemonic);
/* print operands */
if ( i.destType ) {
printf("t%s", i.dest);
if ( i.srcType ) {
printf(", %s", i.src);
if ( i.auxType ) {
printf(", %s", i.aux);
}
}
}
printf("n");
pos += size;
} else {
/* invalid/unrecognized instruction */
pos++;
}
}

disassemble_cleanup();

This is the recommended usage of libdisasm: the instruction type and operand type fields allow analyzing of the disassembled instruction, and can provide cues for xref generation, syntax hi-lighting, and control flow tracking.
<<less
Download (0.038MB)
Added: 2005-03-07 License: Artistic License Price:
1701 downloads
The bastard disassembler 0.17

The bastard disassembler 0.17


The bastard disassembler is a disassembler for linux/unix platforms. more>>
The bastard disassembler is a disassembler written for x86 ELF targets on Linux. Other file formats/CPUs can be plugged in. It has a command-line interface and is meant to be used as a backend or engine. Support for controlling the disassembler via pipes is provided. Note that this disassembler does not rely on libopcodes to do its disassembly. Rather, the libi386 plugin is a standard .so that can be reused by other projects.

This interpreter can be used interactively, it can be fed commands via STDIN [just like a scripting interpreter], and it can be communicated with via a pair of FIFOs. Now, on top of this any number of UI front ends can be stacked -- ncurses console front ends, Gtk X front-ends, Tk front ends, etc. It is the reponsibility of the front-ends to display the information obtained by querying the disassembler, supplying syntax highlighting, displaying strings, xrefs, etc; however the disassembler will retain all of this information, do all of the brute processing, and will provide any of the information when requested.
<<less
Download (2.35MB)
Added: 2005-01-27 License: Artistic License Price:
1736 downloads
Disassembler for linux 0.3.3

Disassembler for linux 0.3.3


Disassembler for linux is a software that will try to provide a gui driven tool to disassemble executables. more>>
Disassembler for linux is a software that will try to provide a gui driven tool to disassemble executables.

Written in C++, and will disassemble binaries from a number of OSses.

<<less
Download (0.36MB)
Added: 2006-09-29 License: GPL (GNU General Public License) Price:
671 downloads
vPICdisasm 1.0

vPICdisasm 1.0


vPICdisasm is an PIC Mid-Range MCU family program disassembler. more>> <<less
Download (0.043MB)
Added: 2007-06-29 License: GPL (GNU General Public License) Price:
852 downloads
DSP5600x disassembly library 1.1

DSP5600x disassembly library 1.1


DSP5600x disassembly library is a code disassembly library for the Motorola DSP5600x. more>>
lib5600x is a library implementing Motorola DSP5600x disassembler. Its an ANSI C link library that should be useful for people writing debuggers, memory monitors etc for DSP5600x chips.

Usage

1. First you call two initialization functions in the library. This step is mandatory:

make_masks();
make_masks2();

You pass nothing and check for no results -- these functions are guaranteed to succeed.

2. Now you have to allocate memory for a structure that will be used for passing data to/from the library. You may do that on the stack

struct disasm_data dis, *d = &dis;

Yes, the pointer will be useful, too. The disasm_data structure is defined in 5600x_disasm.h file. Lets take a closer look:


#define LINE_SIZE 256

struct disasm_data
{
unsigned char *memory;
char line_buf[LINE_SIZE];
char *line_ptr;
char words;
};

First member -- "memory" -- should point to the opcode you want disassembled. IMPORTANT! The library expects it to be a 24-bit word, so if your assembler creates 32-bit words, youll have to make a simple conversion. Take a look at test.c to see how it is done. Whats more, the library may wish to evaluate two words at a time, so you have to account for that -- this is also demonstrated in the example source.

3. After properly setting up disasm_data struct (i.e. "memory" pointer), you call following function:

int disassemble_opcode(struct disasm_data *);

This function takes pointer to the struct youve just prepared as an argument. When it returns, disasm_data structs "line_buf" member contains the disassembled opcode as a string of ASCII characters. "line_ptr" should be of no interest to you (it is merely a internal variable) and "words" holds the number of 24-bit words you should advance your memory pointer by. This variable is also available as a return value of above function. Again, I
shall refer you to the example source.

4. Repeat step 3 until you run out of code to disassemble.

Testing

First, check out the makefile and make sure it contains proper flags and defines for your architecture. Big endian users should add -DBIGENDIAN to CFLAGS (Id appreciate if someone created Autoconf script to avoid such tricks). Following that, type

make
./test example_dsp_binary

and compare the output (visually) with example.a56 which is a source code I used to create example_dsp_binary and which contains all instructions and addressing modes described in DSP56000/DSP56001 Digital Signal Processor Users Manual. You can also diff your output and supplied example.out file to check if there are any differences (there should be none).
<<less
Download (0.012MB)
Added: 2005-03-07 License: BSD License Price:
1693 downloads
pts-elfdisasm 0.14

pts-elfdisasm 0.14


pts-elfdisasm is command-line ELF disassembler for the i386 architecture. more>>
pts-elfdisasm is command-line ELF disassembler for the i386 architecture, based on elfdisasm-0.11, which is in turn based on ndisasm of nasm-0.98.

It supports dumping section headers, symbol tables, and disassembling code sections of i386 ELF binaries, object, and shared object files.

It shows both the file offset, the memory offset, the hex dump, and the mnemonic of each assembly instruction.

It can also find and mark jump targets, call targets, and system calls in the dump for easier cross-referencing. The dump cannot be fed directly to an assembler to recreate the original binary.
<<less
Download (0.13MB)
Added: 2005-11-02 License: Other/Proprietary License with Source Price:
816 downloads
NASM - The Netwide Assembler 0.99.00

NASM - The Netwide Assembler 0.99.00


NASM - The Netwide Assembler is 80x86 assembler designed for portability and modularity. more>>
NASM is an 80x86 assembler designed for portability and modularity. The project supports a range of object file formats including Linux a.out and ELF, COFF, Microsoft 16-bit OBJ and Win32. It will also output plain binary files.
Its syntax is designed to be simple and easy to understand, similar to Intels but less complex. It supports Pentium, P6, MMX, 3DNow! and SSE opcodes, and has macro capability. It includes a disassembler as well.
The Netwide Assembler grew out of an idea on comp.lang.asm.x86 (or possibly alt.lang.asm - I forget which), which was essentially that there didnt seem to be a good free x86-series assembler around, and that maybe someone ought to write one.
- a86 is good, but not free, and in particular you dont get any 32-bit capability until you pay. Its DOS only, too.
- gas is free, and ports over DOS and Unix, but its not very good, since its designed to be a back end to gcc, which always feeds it correct code. So its error checking is minimal. Also, its syntax is horrible, from the point of view of anyone trying to actually write anything in it. Plus you cant write 16-bit code in it (properly).
- as86 is Minix- and Linux-specific, and (my version at least) doesnt seem to have much (or any) documentation.
- MASM isnt very good, and its (was) expensive, and it runs only under DOS.
- TASM is better, but still strives for MASM compatibility, which means millions of directives and tons of red tape. And its syntax is essentially MASMs, with the contradictions and quirks that entails (although it sorts out some of those by means of Ideal mode). Its expensive too. And its DOS-only.
So here, for your coding pleasure, is NASM. At present its still in prototype stage - we dont promise that it can outperform any of these assemblers. But please, please send us bug reports, fixes, helpful information, and anything else you can get your hands on (and thanks to the many people whove done this already! You all know who you are), and well improve it out of all recognition. Again.
Installing NASM under Unix
Once youve obtained the Unix source archive for NASM, nasm-X.XX.tar.gz (where X.XX denotes the version number of NASM contained in the archive), unpack it into a directory such as /usr/local/src. The archive, when unpacked, will create its own subdirectory nasm-X.XX.
NASM is an auto-configuring package: once youve unpacked it, cd to the directory its been unpacked into and type ./configure. This shell script will find the best C compiler to use for building NASM and set up Makefiles accordingly.
Once NASM has auto-configured, you can type make to build the nasm and ndisasm binaries, and then make install to install them in /usr/local/bin and install the man pages nasm.1 and ndisasm.1 in /usr/local/man/man1. Alternatively, you can give options such as --prefix to the configure script (see the file INSTALL for more details), or install the programs yourself.
NASM also comes with a set of utilities for handling the RDOFF custom object-file format, which are in the rdoff subdirectory of the NASM archive. You can build these with make rdf and install them with make rdf_install, if you want them.
If NASM fails to auto-configure, you may still be able to make it compile by using the fall-back Unix makefile Makefile.unx. Copy or rename that file to Makefile and try typing make. There is also a Makefile.unx file in the rdoff subdirectory.
Enhancements:
- adds 64-bit support "-f macho" output format "265th extern" bug in "-f obj" fixed(?)
<<less
Download (MB)
Added: 2007-05-24 License: GMGPL (GNAT Modified GPL) Price:
921 downloads
Assembly Language Debugger 0.1.7

Assembly Language Debugger 0.1.7


Assembly Language Debugger is an assembly language debugger. more>>
The Assembly Language Debugger is a tool for debugging executable programs at the assembly level. It currently runs only on Intel x86 platforms.
Operating systems supported: Linux, FreeBSD, NetBSD, OpenBSD
Main features:
- Step into / Step over
- Breakpoints
- Powerful ELF format interpreter
- Easy memory manipulation
- Disassembler for intel x86 instructions
- Easy register manipulation
Enhancements:
- added commands: display, ldisplay, undisplay to dump specified memory locations after each single step (thanks to ziberpunk < ziberpunk =at= ziberghetto dhis org > for the suggestion and code)
- all Makefiles are now based on automake in the hopes that this will fix some of the problems integrating ald into the *BSD ports systems
- bug fix where a pointer wasnt set to NULL after clearing program arguments with the "set args" command
- this is related to the previous feature: if the effective address lies inside a symbol/function, the corresponding symbol is now displayed
- for CALL and JMP instructions, exact target/effective addresses are now computed (code for this was contributed by Samuel Falvo II < kc5tja =at= arrl net >)
- upgraded all configure scripts to autoconf v2.59
<<less
Download (0.65MB)
Added: 2005-04-18 License: GPL (GNU General Public License) Price:
1671 downloads
LDasm 0.04.53

LDasm 0.04.53


LDasm is an x86 disassembler and GUI. more>>
LDasm (Linux Disassembler) is a Perl/Tk-based GUI for objdump/binutils that tries to imitate the looknfeel of W32Dasm.
It searchs for cross-references (e.g. strings), converts the code from GAS to a MASM-like style, traces programs and much more.
Comes along with PTrace a process-flow-logger.
Enhancements:
- Fileoffset is calculated and displayed
<<less
Download (0.059MB)
Added: 2005-04-18 License: GPL (GNU General Public License) Price:
1661 downloads
Intel C++ Compiler 10.0

Intel C++ Compiler 10.0


Intel C++ Compiler application is a full fledged C/C++ compiler and debugger suite. more>>
Intel C++ Compiler application is a full fledged C/C++ compiler and debugger suite. Its aim is to provide outstanding performance for all Intel 32-bit and 64-bit processors, while not requiring the need for porting applications from other compilers.

It provides optimization technology, threaded application support, and features to take advantage of Hyper-Threading technology. It is substantially source and object code compatible with GNU C, providing fullest compatibility with GCC and G++ 3.x/4.x both in terms of code and of API. It is thereby also easy to integrate with existing development environments.

<<less
Download (MB)
Added: 2007-06-28 License: Free for non-commercial use Price:
1400 downloads
C++ MudBase 0.1

C++ MudBase 0.1


C++ MudBase project is a small embryo of basic mudrelated functions that could be extended into a fullfeatured game. more>>
C++ MudBase project is a small embryo of basic mudrelated functions that could be extended into a fullfeatured game. It contains a basic map system with editor, a character definition, and an easy to extend command parser. The source code is released under the GNU GPL license.

The Map

The map consists of different areas. Each area consists of interlinked chunks with an absolute size which is the same for all chunks in the area. Chunks can be linked in all directions as well as up and down. Different areas can be linked together using portals. The C++ MudBase contains a basic map editor.

The Character

The character class contains only the information needed to support the map and editor function. Each character must also select a Race, which will determine in-game attributes such as sight.

The command parser

Each command is a C++ class which extends the Command class. When all necessary methods are implemented and the new class added to the global commands list, all parsing and help text generation is done automatically.

The Database Support

The C++ MudBase supports sqlite through the sqlitewrapped C++ wrapper. That wrapper also exists for MySQL and ODBC. The sqlite and MySQL wrappers are cross-platform. Database access classes are generated by sql2class, a sql to C++ code generator.

Networking

All socket communication is implemented using the C++ sockets library, which also is cross-platform.

<<less
Download (0.028MB)
Added: 2006-09-28 License: GPL (GNU General Public License) Price:
1122 downloads
AspeCt-oriented C 0.7

AspeCt-oriented C 0.7


AspeCt-oriented C implements an aspect-oriented extension to C. more>>
AspeCt-oriented C project implements an aspect-oriented extension to C and offers one possible language design for an aspect-oriented C language.
Main features:
- an aspect-oriented extension to C, aspect-oriented software development for C, and an ACC language design option
- full ANSI-C compliance and gcc source-compatibility;
- compiler and generated code portability;
- seamless Linux, Solaris and Windows support;
- simple integration in existing builds and code transparency through source-to-source transformations;
- an open source license and compiler.
AspeCt-oriented C enables:
- modularization of crosscutting concerns for C-based software;
- research on concern separation tailored to C and imperative programming;
- research on aspect-orientation on C-based systems;
- development of highly customizable and easily configurable software in C;
- development of feature-rich software product lines in C.
Enhancements:
- set()/get() join point and pointcut support was added for global variables, and compiler options were added for manipulating join points.
<<less
Download (19.7MB)
Added: 2007-08-07 License: GPL (GNU General Public License) Price:
810 downloads
Udis86 1.5

Udis86 1.5


Udis86 is a binary file disassembler for x86/x86-64 with support for MMX, x87, 3Dnow! etc. more>>
Udis86/64 is (as of now) a binary file disassembler for the x86 and x86-64 (AMD64) architectures, capable of disassembling 16/32/64 bit binary files to AT&T or INTEL assembly language syntax.
[COPYRIGHt=1] Udis86 focuses on providing the basic disassembler functionality in executable format as well as a static library libudis86.a for use as the core of object/executable file diassembler programs.
Enhancements:
- Decode fixes.
- Fixed buffer overrun vulnerabilities. Input streaming is more robust now.
<<less
Download (0.10MB)
Added: 2007-07-13 License: GPL (GNU General Public License) Price:
835 downloads
Secleted [ 0 ] software to compare
  • Page: 1 of 5
  • 1
  • 2
  • 3
  • 4
  • 5