10. windows.com
- Component Object Model¶
A module to call COM interfaces from Python or COM vtable in python.
This code is only used in windows.winobject.wmi
and windows.winobject.network
for the firewall.
The ability to create COM vtable is used in the LKD project .
10.1. Using a COM interface¶
It’s possible to directly call COM interface from python. All you need is the definition of the COM interface.
There are three ways to get the definition of the code interface:
By using it from
windows.generated_def.interfaces
By writing it yourself : https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/dbginterface/remote.py#L56
By generating it.
To generate a COM interface you need its definition from the “.c” file.
Then add thisit to PythonForWindows\ctypes_generation\com\MyInterface.txt
.
Finally re-generate the interface using generate.py
.
When you have the COM interface defintion you can create an instance of it.
Then you need to retrieve the interface by using an API returning an object or window.com.create_instance()
.
You can then use the instance to call whatever method you need.
Note
see samples windows.com
10.2. Implementing a COM interface¶
To create COM object you need to:
Note
see samples ICallInterceptor
10.3. API¶
- windows.com.create_instance(clsiid, targetinterface, custom_iid=None, context=5)[source]¶
A simple wrapper around
CoCreateInstance <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686615(v=vs.85).aspx>