📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

 Forums >>  IDA Pro  >>  C++ VTable IDC Reconstruction Script

Topic created on: July 20, 2006 14:29 CDT by Sirmabus .

I cranked out this quick script today to reconstruct a vtable dump in IDA back into a useful class definition.



It works particularly well in this example because most of the functions are defined and thus have pretty names, it could at least be used as a starting point for creating the vtable then RE'ing the method(s) of interest.

To be used in an injected DLL, etc., where you can get the THIS for the object(s) you want and then cast it using these reconstructed  classes. And yes they don't have class data, you still have to RE that.

You can download the script from http://openrce.org/downloads/details/223/VTableRec

Some other idea's are changing the output format to create just indexes as an enum or #defines where one can make an asm stub to call the methods from straight C, etc.

Developed on 4.7 but should work on any version.

-Sirmabus

  Sirmabus     June 3, 2007 10:05.43 CDT
gruba points out, a problem I found after uploaded it last year.  If a name doesn't exist you want to make one from the index/offset it's self. Else you will be missing an entry in the reconstructed class/table.

"
You might want to fix a line that is preventing the idc script to work.

Here its the unified diff

--- VTableRec.idc 2007-05-10 11:11:04.968750000 -0300
+++ c:\Archivos de programa\IDA\idc\VTableRec.idc 2007-05-10 11:49:42.640625000 -0300
@@ -110,7 +110,7 @@
if(szFuncName == "")
{
// Create one based on index then
- szFuncName = format("Func%04d", iIndex);
+ szFuncName = form("Func%04d", iIndex);
}

// Place holder for missing definition
"

Thanks gruba

Note: Registration is required to post to the forums.

There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06
Question about memor...
Dec/12


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit