View Full Version : IDA Disassembler
bippym
10 July 2008, 13:45
Has anyone got experience of this?
What can it do, and how is it comparable to resource (Resource can insert lib offsets, hardware offsets etc)
StingRay
10 July 2008, 14:26
IDA is quite powerful, you can f.e. code your own plugins for it if you need a disassembler for an unknown/exotic CPU. However, for Amiga stuff I still prefer ReSource as it's a native Amiga disassembler and thus features many Amiga specific things not found in IDA.
zenox98
10 July 2008, 14:39
I've used IDA quite extensively in combination with w32dasm to reverse certain protections - for educational purposes you understand - all of which were Windoze based. I did try an amiga file, but found Resource more suitable because of it's built-in library offset functions.
Regardless of which one you choose, they both require a lot of time, effort and considerable patience.
I use it for both platform win and amiga exe.
very good. (old version a little bit buggy with information window :( )
hitchhikr
11 July 2008, 10:54
As i already said here (http://eab.abime.net/showthread.php?t=36130) for executable files, resource have an edge, for absolute addresses files IDA may be more suited.
Also IDA reports how some data are referenced (by data or by code) so it helps to determine what's what during disassembling and the navigation is generally easier than with resource.
Edit: and Resource have troubles disassembling anything than plain 68000 instructions.
crabfists
11 July 2008, 22:51
Well I may not have a very balanced opinion because I have used IDA pro heavily and ReSource not so much but what I can tell is that IDA is very easy to use compared to ReSource and has some nice features such as a graph view (can visualise routines and the flow of execution with a graphical "node view"). Having multiple windows onto the disassembly is nice too. Windows can show hex data, which other routines call current routine, strings etc.
As has already been mentioned, if you are working with some code which uses a lot of custom chips or library routines then I would recommend using ReSource as it much better at giving meaningful disassembly as it knows about library offsets and custom chip flags etc.
One thing which I like is the way you can create memory segments in IDA. For the disassembly of Ruff'n'Tumble I create one big memory segment which starts at address 0 (start of chipram) and ends at address $1000000 (end of rom). Then I load in a memory dump from WinUae of the chipram to location 0 and the slowram to location $c00000 and then disassemble. This gives me a nice big picture of what is going on and any memory locations referenced outside of the chipram and slowram will be marked and given an auto generated name. These can be renamed to something meaningful. Eg $df000 == custom_base etc. One thing I find frustrating about IDA is if you have something like this... :
lea (custom_base).l, a5
move $7C7F, $96(a5)... I haven't figured out how to make it substitute the $96(a5) with the name set for memory location custom_base+$96 (which I have named as dmacon in IDA).
hitchhikr
12 July 2008, 10:22
On the other hand Resource provides ways to handle word sized jump tables and base registers relative variables (x(ax)) quite efficiently.
crabfists
20 July 2008, 11:19
I've been mucking about figuring out how to write IDA plugins over the past few days and I've worked it out now - it's quite straight forward really. Somehow I thought there would be more of a learning curve but it's really not too bad. As something easy to start with I've written a "Copper list annotater" which, if you tell it where a copper list starts, will "disassemble" the copper list and add comments telling you what each copper instruction does (exactly the same as if you use the "o" command in the WinUAE debugger). I actually based it on the code from WinUAE to save re-inventing the wheel. :)
I'll post a link to it including source code when I get a chance as I think somebody might find it useful. I was thinking it would hopefully not be a huge job to write a plugin which filled in custom chip names or names of library calls. I may do the custom chip one as a next step perhaps depending on my motivation and interest from others. The library routine name one wouldn't be that useful at the moment to me so I may not look at that. Be quite easy for someone else to do though. Would be great if we could get to the stage where we've got a nice suite of Amiga plugins for IDA Pro. :)
nice. or post it in the zone
crabfists
22 July 2008, 00:19
Here is the IDA plugin (http://www.skratchy.co.uk/ida_amiga/AmigaCopperIDAPlugin.zip) and source code (http://www.skratchy.co.uk/ida_amiga/AmigaCopperIDAPlugin_Src.zip) for disassembling copper lists. Attached is a screen shot of what it does.
Instructions:
1 - Copy this plw file to the "plugin" directory of your IDA install directory - (C:\Program Files\IDA\plugins) by default.
2 - Start IDA.
3 - Move cursor to start of where you think the copper list is located.
4 - Run plugin by selecting "Edit->Plugins->Annotate copper list".
Any comments, suggestions or bug reports welcome!
Useful links...
pdf book on IDA Plugin writing (http://binarypool.org/idapluginwriting/idapw.pdf) - useful for getting started with plugins.
Wizard for writing plugins in Visual Studio (http://jeru.ringzero.net/?page_id=4).
zenox98
22 July 2008, 09:16
Nice, crabfists. I'll try it out later :)
vBulletin® v3.7.0, Copyright ©2000-2013, Jelsoft Enterprises Ltd.