View Single Post
  #2  
Old 09-09-2020, 01:09
chants chants is offline
VIP
 
Join Date: Jul 2016
Posts: 836
Rept. Given: 47
Rept. Rcvd 52 Times in 32 Posts
Thanks Given: 742
Thanks Rcvd at 1,148 Times in 531 Posts
chants Reputation: 52
I imagine only pretty trivial STL functions would be inlined. Especially in modern variants the library gets quite complicated especially in debug builds. But iterators and such are almost surely inlined in release builds. But there is hardly anything to recognize there just pointers being incremented or dereferenced.

Inherently, the basic task of a decompiler is to deal with the control flow and data flow and produce some exact proper representation in C code. Everything and I mean everything C++ related can be done merely by pattern recognition algorithms. Its basically just a code cleanup phase. Of course pattern recognition may not always be the ideal or least complex approach but theoretically it should work. Practically speaking, simply reversing the way the compiler translate C++ code into C code in a more algorithmic way would also be a good idea.

In the context of IDA, dealing with anything C++ ideally you would look for plugins or write your own which does some sort of pattern matching or algorithmic identification. If going the algorithm route, it would really help to be an expert in some open source compiler frameworks like LLVM or GCC or something to know how and why those algorithms work, so as to have a hope of reversing them.
Reply With Quote