The only one worth it is named BASTARD, which you can download from here:
Download The Bastard from SourceForge.net
I linked to the binary because the source seems to not play well, but you can download it if it doesn't try, you may need to do some symlinking in order for it to work.
I tested it for you, with this command on the
linked ELF binary:
/bin/bastard -- < ./helloworld
Which outputs the following after preprocessor garbage:
Section: .text Start Address: 08048080 End Address: 0804809C
-------------------------------------------------------------------------
; -------------------------- Subroutine _start
_start:
08048080 B8 04 00 00 00 mov eax , 0x4
08048085 31 DB xor ebx , ebx
08048087 B9 9C 90 04 08 mov ecx , 0x804909C
0804808C BA 0E 00 00 00 mov edx , 0xE
08048091 CD 80 int 0x80 ;write()
08048093 B8 01 00 00 00 mov eax , 0x1
08048098 31 DB xor ebx , ebx
0804809A CD 80 int 0x80 ;exit()
Section: .data Start Address: 0804909C End Address: 080490AA
-------------------------------------------------------------------------
STRING:
0804909C 48 65 6C 6C 6F 20 57 6F + ;(Addr of 14 bytes) ; String: "Hello World!\n"
As you're learning, remember: Machine code is simply a long string of hex, and disassemblers cannot distinguish
code from
strings. Assembly mnemonics can be mapped to processor opcodes (operands), and be translated back and forth. What the disassembler does not know, is what a string is, so it incorrectly translates the string into an improper assembly product. An interactive disassembler attempts to distinguish the strings and omit them to better produce something more relevant to your original source, so what I just showed you is the best you'll get.
Be sure to read the updated
FAQ! || Health is achieved through the same 10,000 steps.
If a suggested code/method fails, informing us is less important than telling us
why or
what errors occurred.