Git Product home page Git Product logo

ida_classinformer_modified's Introduction

WIP Modified version of IDA ClassInformer

original readme:
================

Class Informer:
=========================================================
IDA Pro class vftable finder, namer, fixer, lister plug-in.
Version 2.0, May 2015
By Sirmabus

https://sourceforge.net/projects/classinformer/
http://www.macromonkey.com/bb/index.php/topic,13.0.html

See Plugin\Class_Informer.txt for more..

end of original readme.
=======================

Changes to MSVC vftables in Class Informer Modified:
====================================================
	Compiled with the 6.9 SDK.
	Implemented virtual functions naming (as ClassName::FuncXXXX) (Name propagated through comments when needed)
		Note: manually naming a parent or a child virtual function should propagate on next run of the plugin.
		Functions used in multiple unrelated classes are not renamed.

	Virtual function table discovery split in two passes so detailed discovery can be done in "inheritance order"
	Non RTTI classes referenced in inheritance or template are created as empty struct.
	Templates are tentatively processed.
	All invalid characters in classes names are replaced by underscore when used in IDA names.

	Known issue:
		Anything related to templates is very bad and unfinished at the moment.
		Multiple naming convention and logic may have left useless code :)
		The automated process is far from perfect so review should be done (and use a copy of your database :)).
		Classes whose name is too long are "renamed" arbitrarily and can interrupt the process while renaming functions.
			Just ignore the duplicate name warning. 

	TBD:
		Using relative offsets in exported data rather than absolute to ease comparisons between patches.

	Attempt at :
		Discovering use of the vfTable address in constructor (and destructor).
			Inlined constructor discovery is poor and almost need case by case tailoring.
		Using discovered constructors usage to calculate classes size.
		Using classes size to prototype classes as local type struct with inheritance.

	Exported data:
		All exported files goes into a subdirectory in the same directory as the IDA database and using the same name.
		CSV exports: Classes, Class hierachy and Class virtual members at the moment.
		C header file dumping the known classes struct. 
			Purpose is to iterate:
				Run IDA_ClassInformer_Modified and export
				Edit manually to a new file.
				Import (all or a part of the new file) and run IDA_ClassInformer_Modified to propagate.
		C++ header file dumping the known classes and virtual functions.
			Purpose is to copy and paste into a related project.
		Include file dumping known information about constructor, destructor and classes size.
		List of RTTI Type Descriptor (??_R0?AV...) for DynamicCast
		And currently useless text file used as a scratch pad.

ida_classinformer_modified's People

Contributors

hugues92 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.