Alex Ionescu was born on April 26th, 1986, in the city of Bucharest, Romania. Son of a doctor and an engineer, he took up a passion with computers at the age of six, when he first hacked DOS 4.00's command line parser unsuccessfully until the age of seven, when he discovered hex editing. At that time, he was already fluent in QBASIC and was working on password protection programs and graphical shells.
First Programming Experience
At the age of eight, he emigrated to Canada with his family and has been living in Montreal, Quebec, Canada ever since. Near that time, he learned his second programming language, Visual Basic and worked for over four years on a project called WinAlOS, a replacement shell for Windows. It was during this time that he developed a passion for operating system design, and the fact that Visual Basic could only create shells frustrated him. With the advent of V2OS, a hobby Operating System, and after lecturing himself with John Fine's famous OS Design documents, Ionescu made his first contribution in an Operating System Kernel. His work on VB continued however, and by the age of 16, WinAlOS grew into an Office Suite, Programming IDE supporting over 10 scripting languages, and a full featured shell that rivaled Explorer, which included over 50 applets from games to system utilities and multimedia applications.
Beginnings of Public Appearances
After a catastrophic hard-disk failure due to a failed Linux installation that cost Ionescu all his work, he decided to work on a security suite for charity and small-business organizations, which also offered internet cafe management. Baptized Internet Control and Configuration (ICC), it was the first product of his startup company, Relsoft Technologies. The final product was submitted as a school project for the coveted International Baccalaureate Diploma, and was submitted to academic judges in Cambridge. Bored with the limitations of Visual Basic, Ionescu got to work on advanced plugins which expanded the features of the suite, as well as posting software on Planet Source Code. He made three submissions, all of which won the "Best Code of the Month" award, as well as wrote numerous articles about NT Architecture, which he had become obsessed with. He did some research on NTFS, and published a private document outlining the entire format of the on-disk structures, after which he started to work on non-malicious virus software, which eventually led him to advanced rootkit development, which hooked parts of the NT Kernel in order to hide information, or modify kernel data to fool the system itself. This work got him even deeper into the Kernel/OS Programming world, and he often thought about re-writing entire parts of the kernel in a rootkit.
Thanks to Rent A Coder, an online outsourcing site, Ionescu was able to find a more stable job for SPAMfighter ApS, a Danish company specializing in Anti-Spam products, where he was the Lead Developer of the Outlook Express plugin. This work was the culmination of his previous Visual Basic experience, as he had to develop plugins which made Visual Basic able to create standard C DLLs, as well as use Assembly code in Visual Basic. Apart from this job, he also took on over 20 other projects on Rent A Coder, where he received 10, the highest possible rating, on all of them. Additionally, he transformed one of the Visual Basic plugins into a retail product, which became Relsoft's first official public product. Over 50 copies have been sold to date.
Beginnings at ReactOS
Around this time, ReactOS reached 0.2 stage, which now included a much more stable codebase for development, as well as a GUI and some basic applications. This immediately piqued Ionescu's interest, and he joined the project during Summer 2004. His first patch added Callback support to the Kernel, which would become needed by later NT5 Drivers. He then spent the next 2 months stubbing every kernel function that was in XP but not yet exported by ReactOS. This task added about 700 new stubs to ReactOS, out of which he personally coded around 150. While his work has focused mainly on Kernel Development, he has been monumental in the creation of the Ancillary Function Driver DLL (msafd.dll/mswsock.dll) and accelerated the implementation of ReactOS's first working networking system.
His other most important contributions include the SYSENTER patch, which singlehandedly improved ReactOS System Call execution speed by 70-80%, and the FreeLoader Patch, which added dynamic loading of the Kernel using the Portable Executable (PE) format. He has also re-written the ReactOS APC and DPC implementations, making them similar to NT's.
As of November 2005, a large number of other large kernel patches can be attributed to him, including implementing Guarded Mutexes, Kernel Gates, making the Object Manager more NT compatible, rewriting parts of the Process Manager for Thread/Process Create/Kill and reviewing and fixing hundreds of bugs in the Ex and Ke modules of the kernel. He has finally also been responsible for major changes in the I/O Manager related to event synchronizations of I/O operations, as well as the IRP implementation.
As of November 2006, his work on the kernel has accelerated even further, and he is now responsible for large rewrites of the Thread Scheduler, Executive support for Objects, IRQ Handling and HAL, and hundreds of bug fixes or compatibility changes. He is singlehandedly responsible for almost the entire implementations of the Process and Object Managers, as well as LPC support and User-Mode Debugging, and is planning on implementing KD-Compatible Kernel Debugging.
Alex Ionescu currently does a variety of work in ReactOS which splits up into many directions, usually yielding results only months later. Ionescu is currently working on the ReactOS Kernel and HAL, and sometimes does work on system libraries such as ntdll and kernel32. Sometimes, he enjoys taking up smaller projects as well to clean up the air, and he has sometimes documents his plans on his blog (link available below). Some of these projects include a new Loader (rewrite of Ldr in NTDLL to match XP's new features) and a new Subsystem Manager (SMSS). Due to his unpredictable nature, Ionescu is known to stop work on a long-term project and quickly implement a completely unrelated feature. He also participates in bug bashes every once in a while, where he spends his time only doing bug fixing. Ionescu's work current work touches the Ke, Io, Lpc, Dbgk and Kd subsystems of the NT Kernel. As of June 2007, he no longer works on ReactOS, having decided that his upcoming line of work would cause conflicts of interest.
Alex Ionescu has currently been applying his experience in NT Kernel Design in the IT/Computer Security market, posting various articles on websites such as OpenRCE and giving talks at computer security conferences (Such as REcon 2006). He is also available to do private, hands-on training of employees and other members of security companies, and is planning on doing a public training course at REcon 2007. His resume is available on the site below.
Alex Ionescu will be appearing at a number of events in 2007, below is the schedule of confirmed events for 2007:
- Canadian Undergraduate Technology Conference (CUTC '2007) - Concordia University Delegate/AMD Tech Team Competitor. Toronto, Canada, Jan 11th to Jan 13th.
- Canadian University Software Engineering Conference (CUSEC '2007) - Concordia University Delegate/ReactOS Demo Speaker. Montreal, Canada, Jan 18th to Jan 20th.
- Southern California Linux Expo (SOCAL '2007) - ReactOS Exhibitor and Conference Speaker. Los Angeles, USA, Feb 11th to Feb 13th.
- 8th International Free Software Forum - Forum Lecturer. Porto Alegre, Brazil, April 12th to April 14th.
Other confirmed events will be added as they appear.
Alex Ionescu can be reached at firstname.lastname@example.org. His blog is at: Alex Ionescu