GTK+ Forums Forum Index GTK+ Forums
Discussion forum for GTK+ and Programming. Ask questions, troubleshoot problems, view and post example code, or express your opinions.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

BigHead

 
Post new topic   Reply to topic    GTK+ Forums Forum Index -> Project Showcase
Author Message
dell_boy
GTK+ Geek


Joined: 07 Dec 2008
Posts: 56

PostPosted: Tue Jan 27, 2009 12:00 am    Post subject: BigHead Reply with quote

Ok guys. I decided to show off my project that I've been working on since coming
across Micah Carrick's superb tutorial in late November 08. So it's about 7 weeks
old.

I would describe myself as a very inexperienced programmer. No knowledge of Gtk
and limited C experience. I don't really know what inspired this project to be
honest. I was experimenting with trying to learn assembly language and with
disassembly. I couldn't find a decent X window based disassembler, Lida being
the best I came across, which uses a Perl front end and C back end. I became
interested in the ELF executable file format and wanted to learn more about it.
There are a couple of terminal based applications (Binary Utils) that allow the
ELF format to be examined and disassembled. The binary code can be hex dumped
for examination but thats about it. Then there is a really good GtK based
hexadecimal editor called Bless (the opposite of Hex apparently). It is written
using C# based on the Novell Mono project. Something that it is TOO MS Windows
related in my opinion, a little like the .NET programming environment.

So here is my project. Maybe a little ambitious for a novice like myself. The
project proposes to develop an application that performs 3 functions.

1. It allows an executable, relocatable or shared object file to be easily
examined and dissected for content, in a nice Gtk windowed environment.
So it is a Binaryfile Inspector GUI (BIG).

2. The binary code is dissected and displayed in hexadecimal format in neat
sections that correspond to the file structure, that is shown in a treeview
format. The hecadecimal code can be edited.
So the application is also a Hexadecimal Editor (HE).

3. And the binary code can be Disassembled in a number of ways. Flow control
as in Lida and block control as in Objdump. The code is displayed in a nice
Source View that can be saved for further examination and editing.
So the application is a Hexadecimal Editor And Disassembler (HEAD).

And so we have the name of the application....tongue firmly in cheek.

BIGHEAD.

The project is coming on very well. Much of the binaryfile inspector is complete.
And the disassembler is functional. The hexadecimal code is available for viewing
but can't yet be edited. Just for good measure I have an embedded terminal which
is always useful for this type of application.

The application can be described as a Reverse Engineering Tool.

Back to top
Micah Carrick
Never Seen the Sunlight


Joined: 21 Sep 2005
Posts: 546
Location: Portland, OR USA

PostPosted: Tue Jan 27, 2009 12:51 pm    Post subject: Reply with quote

That's coming along nicely. Looks like a fun project.
Back to top
dell_boy
GTK+ Geek


Joined: 07 Dec 2008
Posts: 56

PostPosted: Tue Jan 27, 2009 1:15 pm    Post subject: Reply with quote

The project has become very addictive for me Micah. Like a good book, once you pick it up and start reading you can't put it back down until you have read JUST a little more.

It's a huge learning process for me. Your TextEditor tutorial was the starting point and tadeboro's help has been invaluable.
Back to top
Micah Carrick
Never Seen the Sunlight


Joined: 21 Sep 2005
Posts: 546
Location: Portland, OR USA

PostPosted: Tue Jan 27, 2009 2:19 pm    Post subject: Reply with quote

I know how it goes. I'm no stranger to choosing a project over sleep/food. Keep at it.
Back to top
JohnC
Familiar Face


Joined: 30 Sep 2008
Posts: 20

PostPosted: Sun Apr 12, 2009 8:56 pm    Post subject: A windows PE disassembler Reply with quote

Wow this is awesome!

It's also very similar to something I'm doing. I'm writing a disassembler for x86 and the PE file format (I've tried to write it so that in future it will be easy to make it disassemble other binary file formats and architectures). The projects been going since summer last year when I learned c++ and found out about gtk (on and off because of uni).

I like the way BIGHEAD gives you the data in a beautifully simple intuitive gnome-like and powerful way - opposite to lida. I havent got anything that shows you the header or the hex dump, but the one thing I do have is really really cool. The only major thing I have got is an assembly flowchart a bit like the one in IDA pro. Theres a massive scrolled window showing that flowchart, and a scaled resizable minimap of it. Both of these I've mostly made into GtkWidgets You can add comments to any of the blocks on the flowchart, or the function they are in. There is a GtkTreeView navigator which is used to move about between asm functions and executable files.

My disassembler uses the libdisasm that comes with x86dis to do the disassembly and follows the jumps and (later) calls in the same way the processor would. It can grab any complete function given an entry point and right now I'm making it follow some of the easy calls. What does BIGHEAD use to do the actual disassembly? How are you formatting the asm? Finally, how on earth did you manage to learn and code all that in 8 weeks?!? Please can we exchange some disassember/executable file format reading wisdom?

John
Back to top
Display posts from previous:   
Post new topic   Reply to topic    GTK+ Forums Forum Index -> Project Showcase All times are GMT
Page 1 of 1

 


Powered by phpBB © 2001, 2005 phpBB Group
CodeBB 1.0 Beta 2
Protected by Anti-Spam ACP