


You can learn more about reverse engineering Microsoft binaries in our "Finding Secret RDP Registry Keys Using IDA Free" blog post. It's closed-source, right? So that not only means no documentation, but no source code to dig through. Not all functions can easily be hooked: some are more subject to change than others, or simply out-of-reach. In other words, you can "lie" to the application by altering what the function actually does. For instance, by hooking the LoadLibrary function, it is possible to tweak its behaviour such that loading "mstscax.dll" loads "MsRdpEx.dll" instead. What's API Hooking?ĪPI hooking is scarier than it sounds: it modifies a program in-memory to intercept a function call and redirect it to a "hook" function which you control. An early RDP API Hooking feature is already available in RDM 2022.2. It builds on top of the public RDP ActiveX interface to expose internal components and properties not accessible otherwise. This is what we've been working on with the Devolutions MsRdpEx project: a set of new "doors" we've opened using the Microsoft Detours Library for API hooking. When hitting a wall, one can choose to stop, or try building new doors in places that didn't have them. While the Microsoft RDP client is great, it does not expose everything required to implement all the feature requests that we have. The reality is that in order to deliver features customers want, we need the flexibility of FreeRDP (open-source), but inside the Microsoft RDP client (closed-source). FreeRDP is the only suitable cross-platform RDP client, but it will never be on par with the official Windows RDP client ( MSTSC). While Microsoft offers their official remote desktop client on all platforms except Linux, the only RDP client interface exposed for third-party integration is on Windows. Out of all the protocols and platforms supported by Remote Desktop Manager, RDP on Windows is by far the most popular.
