summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2012-01-07 05:32:34 +0100
committerTreeki <treeki@gmail.com>2012-01-07 05:32:34 +0100
commita1f4b6b06cf1459557ad662fc643eac3d35c085d (patch)
tree2882b6c43301dc0df2a1f6d3c7cfa9e036d5d7e4 /README
downloadclassy-a1f4b6b06cf1459557ad662fc643eac3d35c085d.tar.gz
classy-a1f4b6b06cf1459557ad662fc643eac3d35c085d.zip
initial commit
Diffstat (limited to 'README')
-rw-r--r--README75
1 files changed, 75 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..39b7b88
--- /dev/null
+++ b/README
@@ -0,0 +1,75 @@
+Classy!
+
+IDA script for keeping track of RE info related to C++ classes (specifically,
+ CodeWarrior PPC) and keeping things consistent throughout the database.
+
+That's what makes IDA better than objdump anyway, right? :p
+
+Started by Treeki: 16th October 2011
+Developed using Python 2.6 and IDA 6.1.
+
+
+
+Supported so far:
+- Save and reset database
+- Classes:
+ - Create a class using an IDA struct
+ - Base classes are handled using a struct field named _
+ - Struct is automatically created if one is not chosen - if this is used,
+ Classy adds the _ field for you
+- Virtual Tables:
+ - Set a VTable for a class. End is automatically detected
+ - If the auto detection fails (pure virtuals, for example) you can
+ manually override it
+- CTors/DTors:
+ - Set a ctor and dtor for a class (TODO: Multiple ctors)
+ - Dtors automatically become virtual if a pointer to them is found in the
+ vtable, even if the dtor was registered before the vtable was set
+- Methods:
+ - Register regular and virtual methods
+ - Mark virtual calls by highlighting the "lwz r12, ..." line, pressing
+ Shift+C and choosing a class
+ - Xrefs to each virtual method are shown at the top of the method body
+ - Set method arguments including pointers, arrays, refs and consts
+ - Arguments are automatically mangled so they are shown in IDA names
+ - Shift+V automatically detects whether a method is a new virtual one or
+ an override
+ - Overrides are shown at the top of the original method body
+ - Renames and argument list changes are propagated from original methods
+ to overrides (Though not vice versa yet)
+
+That's all for now, I think...
+
+
+
+
+Current Todo:
+- Only show classes that fit the criteria in the chooser for Shift+C
+- Support PTMFs, too
+- Automatically create virtual methods using the vtable.
+- Named arguments to methods
+- Return types for methods
+- Const methods
+- Improve vtable end detection heuristics
+- Support pure virtuals.
+- Handle IDA chooser history/defaults correctly everywhere
+- Better keybindings
+- Rename class menu item
+- Netnodes
+- Override dtors
+- Sanity check to see if a virtual method might exist in a base class
+- Confirm unlinking of methods
+- Don't let you create more than one method with the same name
+- choose_class differentiation between "no class" and Cancel
+- Auto usage of struct if a named one exists
+- Remove virtual xrefs
+
+Caveats:
+- Multiple inheritance will not be supported in the near future.
+- Probably won't work as well with non-CodeWarrior stuff.
+
+Notes:
+- When autocreating virtual methods, start with the base class!!
+ Otherwise, you might end up defining an override as a virtual
+ method. And that would be bad.
+