Disassembling
DATA
We using a lot of data from datasheets, tech specs, and manuals. Mostly this is an usual registers description. As now we have more than one processor core, we now moving to the new format of registers info storage: XML definitions
We not yet converted our data to the new format, bit this will be very soon.
Here you can read specsification, see examples and code of library: Nouveau envytools
<?xml version="1.0" encoding="UTF-8"?> <database xmlns="http://nouveau.freedesktop.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> <import file="copyright.xml"/> <domain name="NV_MMIO" size="0x1000000" bare="yes" prefix="chipset"> <reg32 offset="0" name="PMC_BOOT_0" /> <reg32 offset="4" name="PMC_BOOT_1" varset="chipset" variants="NV10-" /> <reg32 offset="0x100" name="PMC_INTR" /> </domain> <domain name="NV50_PFB_VM_TRAP" width="32" size="6"> <reg32 offset="0" name="STATUS" /> <reg32 offset="1" name="CHANNEL" /> <reg32 offset="2" name="UNK2" /> <reg32 offset="3" name="ADDRLOW" /> <reg32 offset="4" name="ADDRMID" /> <reg32 offset="5" name="ADDRHIGH" /> </domain> <domain name="EXAMPLE1" bare="yes"> <reg32 offset="0x400784" name="PGRAPH_CTXCTL_SWAP" shr="12" /> <reg32 offset="0x0600" name="NV50_COMPUTE_USER_PARAM" length="64" /> </domain>
ARM disassembly
The guys at the CHDK project have a nice collection of tutorials related to reverse engineering ARM code. For example, see:
- an introduction related to recognizing ARM code functions
- disassembling with GPL tools
- debugging ARM code with QEMU
- loading a code dump into IDA
IDA Pro 5.5 is the suggested tools since OMAP3430 is armv7-a architecture that older versions may not be able to disassemble some instructions.
This is a very useful tutorials for IDA Pro: IDA Pro Book, File:Reverse Engineering Code with IDA.pdf, IDA Pro disassembly
Also you can use Beye
For more efficient work you can use CollabREate server for collaborative work CollabREate
Also you can use scripts and plugins for IDA:
- Scriptable Processor Modules
- Scriptable Plugins
- Custom Data Types and Formats
- Using Custom Viewers with Python
- Implementing command completion for IDAPython
- Extending IDC and IDAPython
- Using the command line with idascript
An ARM Decompiler is in the works too.
Automation in the IDA
IDAPython: http://code.google.com/p/idapython/
IDA API docs: http://www.hex-rays.com/idapro/idapython_docs/