fixed 
its only 1 gb dl , and 4 gb recompiled with Qt Namespace . Also in ida sdk there are prebuild libs with QT namespace.I wanted to build the plugin myself, but relies on QT, which is a 20 GB download!
version 2.1 i have not seen.
Anyway Just download http://sourceforge.net/projects/classinformer/
the 6.7 one works on 6.7 and 6.8 , and @Sirmabus made one also for 6.9 also.
its only 1 gb dl , and 4 gb recompiled with Qt Namespace . Also in ida sdk there are prebuild libs with QT namespace.
@Sirmabus is a member here but also have he own forum, http://www.macromonkey.com/bb/index.php/topic,13.0.html.
what error are you getting when you start ida ? if you get a error.
>> Class Informer: v: 2.0, built: May 5 2015, By SirmabusWorking..
Processing C/C++ ctor & dtor tables.
0043886E I: "_initterm", 6 bytes.
0044C25C import: "__imp__initterm".
0043886E processInitterm: "_initterm"
004383A8 "_initterm" xref.
0043839E Two instruction pattern match #0
0045924C to 00459250 CTOR table.
004383F7 "_initterm" xref.
004383ED Two instruction pattern match #0
00459000 to 00459248 CTOR table.
0044C25C processInitterm: "__imp__initterm"
Processing time: 0.02 seconds.
Scanning for for RTTI Complete Object Locators.
N: ".rdata", A: 0044C5D4 - 00459000, S: 50.5 KB.
N: ".data", A: 00459000 - 00462000, S: 36 KB.
Total COL: 0
Scanning for vftables.
N: ".rdata", A: 0044C5D4-00459000, S: 50.5 KB.
N: ".data", A: 00459000-00462000, S: 36 KB.
=========== Stats ===========
RTTI vftables: 0
Functions fixed: 0
Processing time: 0.07 seconds
Done.
>> Class Informer: v: 2.0, built: May 5 2015, By Sirmabus
Working..
Processing C/C++ ctor & dtor tables.
0043886E I: "_initterm", 6 bytes.
0044C25C import: "__imp__initterm".
0043886E processInitterm: "_initterm"
004383A8 "_initterm" xref.
0043839E Two instruction pattern match #0
0045924C to 00459250 CTOR table.
004383F7 "_initterm" xref.
004383ED Two instruction pattern match #0
00459000 to 00459248 CTOR table.
0044C25C processInitterm: "__imp__initterm"
Processing time: 8.03 milliseconds.
Scanning for for RTTI Complete Object Locators.
N: ".rdata", A: 0044C5D4 - 00459000, S: 50.5 KB.
N: ".data", A: 00459000 - 00462000, S: 36 KB.
Total COL: 0
Scanning for vftables.
N: ".rdata", A: 0044C5D4-00459000, S: 50.5 KB.
N: ".data", A: 00459000-00462000, S: 36 KB.
=========== Stats ===========
RTTI vftables: 0
Functions fixed: 0
Processing time: 0.02 seconds
Done.
RTTI vftables: 1F
unctions fixed: 0
Processing time: 0.06 seconds
IDA updating, please wait..
Done.
svn checkout svn://svn.code.sf.net/p/classinformer/code/ classinformer-code
else
// IDA demangler for everything else
{
int result = demangle_name(outStr, (MAXSTR - 1), mangled, (MT_MSCOMP | MNG_NODEFINIT));
if (result < 0)
{
//msg("** getPlainClassName:demangle_name() failed to unmangle! result: %d, input: \"%s\"\n", result, mangled);
return(FALSE);
}
// No inhibit flags will drop this
if (LPSTR ending = strstr(outStr, "::`vftable'"))
*ending = 0;
}
return(TRUE);
}
#ifndef NO_OBSOLETE_FUNCS
idaman DEPRECATED char *ida_export validate_name(char *name); // use validate_name3()
idaman DEPRECATED char *ida_export validate_name2(char *name, size_t bufsize);
idaman DEPRECATED char *ida_export get_true_name(ea_t from, ea_t ea, char *buf, size_t bufsize);
idaman DEPRECATED char *ida_export get_name(ea_t from, ea_t ea, char *buf, size_t bufsize);
idaman DEPRECATED char *ida_export get_colored_name(ea_t from, ea_t ea, char *buf, size_t bufsize);
idaman DEPRECATED int32 ida_export demangle_name(char *buf, size_t bufsize, const char *name, uint32 disable_mask);
Could you give me some sample, I could testYes, the plugin also reports zero RTTI, but I had checked it manually after the fact to be sure.
The thing here is that version 1.0 reconstructed a fair amount of data without RTTI, so it seemed from a design perspective, that the plugin will do what it can to reconstruct data with or without whatever data is available. Newer versions seem to not really be helpful without the RTTI.
I either want to modify the plugin or find a new one that seems to be more suited for what I am trying to do.
problem is that mentioned in post #35You could test my build of v2.0 for IDA 6.8. As I compared the version 2.0 vs 2.2, there not much difference, it only modify some to support IDA 6.9, so couldn't need to rebuild
static UINT doInittermTable(func_t *func, ea_t start, ea_t end, LPCTSTR name)
{
UINT found = FALSE;
if ((start != BADADDR) && (end != BADADDR))
{
// Should be in the same segment
if (getseg(start) == getseg(end))
{
if (start > end)
swap_t(start, end);
// Try to determine if we are in dtor or ctor section
if (func)
{
char funcName[MAXSTR]; funcName[SIZESTR(funcName)] = 0;
if (get_long_name(BADADDR, func->startEA, funcName, SIZESTR(funcName)))
{
_strlwr(funcName);
// Start/ctor?
if (strstr(funcName, "cinit") || strstr(funcName, "tmaincrtstartup") || strstr(funcName, "start"))
{
msg(" "EAFORMAT" to "EAFORMAT" CTOR table.\n", start, end);
setIntializerTable(start, end, TRUE);
found = TRUE;
}
else
// Exit/dtor function?
if (strstr(funcName, "exit"))
{
msg(" "EAFORMAT" to "EAFORMAT" DTOR table.\n", start, end);
setTerminatorTable(start, end);
found = TRUE;
}
}
}
if (!found)
{
// Fall back to generic assumption
msg(" "EAFORMAT" to "EAFORMAT" CTOR/DTOR table.\n", start, end);
setCtorDtorTable(start, end);
found = TRUE;
}
}
else
msg(" ** Miss matched segment table addresses "EAFORMAT", "EAFORMAT" for \"%s\" type **\n", start, end, name);
}
else
msg(" ** Bad input address range of "EAFORMAT", "EAFORMAT" for \"%s\" type **\n", start, end, name);
return(found);
}
#include <QtGui/QDialogButtonBox> //Qt4
#include <QtWidgets/QDialogButtonBox> //Qt5
1073F5E4 2 ??** MAXSTR overflow! Fn::Functor1<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::CalleeRef<std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >,std::pair<std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > >,bool> (__thiscall std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std