It is not a mistery that Hex-Rays is preparing for the IDA 6.0 beta program. In this post I’ll write a bit about my personal, behind the scenes, experience with the project.
It took me 7 months to port/rewrite the old VCL GUI of IDA Pro. The new GUI, as it had been already anticipated months ago on the official blog, is Qt based.
The main difficulties I have faced were mostly not of technical nature, although it was a complex task, but psychological ones. It took a lot of patience and it was very difficult every morning to go to work and to have to see an unfinished product with the old GUI reminding myself how much was still to do.
What follows is a rough roadmap of my work, I’ll mention only the milestones and not the hundreds of smaller parts. It has to be noted that at least for what concerns the docking I wrote most of it before joining Hex-Rays to accelerate the development of the actual GUI once in the company. While Qt has a docking system, it is not as advanced as the one used by the VCL GUI, which is a commercial control. So, I wrote a docking system myself in order to offer all the advanced features the old GUI had.
January: first impact with the code. Took me a week to grasp the initial concepts to start. Basically at the end of the month I could display disassembly and graph mode of a file. Also, hints, graph overview and disassembly arrows were implemented.
February: implemented chooser and forms (which I actually completely changed internally, that’s why I had to improve them again later on to obtain better backwards compatibility).
March: marathon month. Implemented every day one or more dialogs/views such as: hex view, cpu regs view, enum view, struct view, options, navigation band, colors, etc. etc. More than 30, some very easy, some advanced controls such as the hex view or the cpu regs view.
April: two weeks to finish the docking and smaller things.
May: two weeks to implement the desktop part (the ability to save/restore layouts and options) and smaller things.
June: fixes, help system and improved the forms implementation.
July: Hundreds of fixes for the beta.
While there will be still bugs to fix, I consider the project as completed and I wrote this post to close a chapter for myself.
well done ๐
isn’t working for hex-rays a good job?
It is a very good job, yes. The chapter closed was intended towards the project itself. Not my working for Hex-Rays.
Well, you did an excellent job. I can imagine the translation aspect sucked; i.e. not creating any new functionality, just translating vcl calls to equivalent qt code. I bet it felt good once you were finished with the land of lpsz’s, HRESULTS and all that crap ๐
Hey Joshua,
thanks. Don’t tell me about it. I always shiver when I have to modify the MFC source of the CFF Explorer. ๐