Log in

View Full Version : Qt Internals & Reversing


Daniel Pistelli
November 27th, 2008, 20:17
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.

Qt Internals & Reversing

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.

http://ntcore.com/Files/qtrev.htm

dELTA
November 28th, 2008, 08:25
Another unique and informative article Daniel, thanks for sharing as usual!

deroko
November 28th, 2008, 09:11
very nice, tnx for share

GEEK
November 28th, 2008, 09:51
Hey Daniel,

nice indeed
what are you covering in "Dynamic C++ Proposal"

Daniel Pistelli
November 28th, 2008, 10:43
Thanks delta, deroko & GEEK.

GEEK: I answer your question by quoting two answers I gave on my ntcore blog:

Quote:
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.


Quote:
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.


I think I'll post that article on RCE Forums as well, since it has much to do with c++ internals.

GEEK
November 28th, 2008, 12:23
and when can we expect it

anom
November 28th, 2008, 12:50
Daniel, nice to see you still around here. Will you also cover new syntax elements introduced with C++0x in your paper?

Daniel Pistelli
November 28th, 2008, 13:09
GEEK: 10 days, I guess

anom: thanks =). Honestly no, because C++0x doesn't have much to do with my suggestions. I think that many of the new elements are good, but my effort focuses on dynamism and related to that there's nothing new in C++0x.

It may be the most useless and extensive paper I have written.

Externalist
November 29th, 2008, 05:48
Solid and Unique material. You really know your stuff. Thanks!

Daniel Pistelli
November 29th, 2008, 16:25
Thanks Externalist. As said, this is a little article, but it can be useful since Qt applications will grow in number if I'm right in my thinking.

evilcry
December 5th, 2008, 02:41
Surgery precision Paper as usual Daniel!

This paper will come really handy for Qt RCE

Regards,
Giuseppe

Daniel Pistelli
December 5th, 2008, 04:12
Thanks =)