Hi folks,
Attached below is one way of attacking WinRT Objects. These are essentially COM objects, however they don't have an IDispatch interface so ObjCreate() cannot be used. It is possible to expose them using ObjCreateInterface though. Alternately, DllCallAddress() may be used to access an object's functions directly from memory.
I'm using the latter mainly because that's the path I started down first!
To make sense of whats in the attachment...
WinRT.au3 - Core high level functions that sit on top of interface libraries
Includes Async and Collection implementations etc. So basic high level functionality.
WinRTCore.au3 - Internal helper functions for interface libraries
Interface Folder - Interface libraries (there are over 850 of these!). Essentially these wrap the functions in an interface's vtable
Includes tags which may be used with ObjCreateInterface
Enums Folder - Contains map datatypes that can be used to convert enumeration strings to their numeric type, or vice versa
Classes Folder - doesn't actually contain code - A class file includes interface and enum files that belong to a class.
Namespaces Folder - doesn't actually contain code - A namespace file includes classes that are related.
Bonus: I've also uploaded a rudimentary WinRT Class Explorer if it happens to be useful to anyone.
Bonus2: I've added a tool that installs/removes calltips for interface libraries.
Original post:
WinRT Libraries - Latest ClassExplorer.zip