Today I took a break from the larger article I’m currently writing. To relax, I wrote a smaller article about the Qt framework. I hope you enjoy.
Half of the text of this article comes from my larger paper “Dynamic C++ Proposal”. I decided that it was useful to take the part about Qt internals, put it into another article and extend it by adding a reversing part. Because of its nature, this is not the usual kind of article I write. In fact, I wrote the reversing part in less than a day. So, this is a very easy one. However, I think it is useful for people who need to reverse a Qt application and certainly wouldn’t consider reading my other paper about Dynamic C++, which doesn’t sound like a paper about Qt and, in fact, isn’t a paper about Qt: the paragraph about Qt is only one among many others. Moreover, I haven’t seen serious articles about this subject.
The first thing which needs to be considered when reversing Qt applications is what Qt brought to the C++ language. Events (inside the Qt framework) are just virtual functions, so nothing new there. This is not a C++ reversing guide. What is new in Qt are signals and slots, which rely on the dynamism of the Qt framework.
So, first thing I’m going to show how this dynamism works. The second part focus on reversing and, at that point, I will show how to obtain all the metadata one needs when disassembling a “Q_OBJECT” class.
4 thoughts on “Qt Internals & Reversing”
Nice to hear back from you. There is really few articles on Reversing Qt, so thanks ;). What is your big article about?
Thanks. Yes, I found only 2 articles about Qt rev, but they weren’t really in depth and they focused more on C++ rev. Whereas in my article I focused on the internals of the framework and how to retrieve the metadata from binary files. Again, it’s simple, I wrote it in a day, but there isn’t any other article on the subject and it covers what a reverser needs to know about Qt.
And yes, indeed I have been busy doing lots of things, mainly development and studying. The big article is a proposal to extend significantly the C++ language. It’s quite an extensive paper, since it covers the internals of the suggestions as well.
Extending C++, that’s a controversial task. So many opinions, and the current state is not my favourite :s
Did you try D from Digital Mars? I like what they’ve done there.
D lacks dynamism just like C++ does. Surely, it’s a controversial task and I may get criticized. But frankly I don’t care, I don’t get paid for writing articles and so I write about things I’m interested in or care about. I care about the future of C++ since it’s my favourite programming language. In my paper I’m going to show that C++ could have all the capabilities other languages such as objc have and many more.