I have managed assembly that calls COM interface methods. I am interested in IManager interface, here is the code from NET Reflector:

namespace Lib
     [ComImport, CompilerGenerated, CoClass(typeof(object)), Guid("5D3D2B5F-1AD8-48F7-BC63-DFF7E6BED182"), TypeIdentifier]
    public interface Service : IService

     [ComImport, CompilerGenerated, Guid("1A5BCF9B-039D-4422-9380-274D98D27265"), TypeIdentifier]
    public interface IManager

    // another interfaces...

As I understand assembly should contain reference to another assembly that contains metadata required to call COM interface methods at runtime. However there is no referenced assembly with name that would indicate possible COM metadata.

I already have interface GUID, now I believe I need to obtain GUID for COM object itself and code small C++ program that will use CoCreateInstance and QueryInterface. After that I will be able to make call trough virtual table without providing full interface definition. Than we load our program in IDA and follow the call.

I am not very familiar with COM, is it technically possible to achieve? How can I get GUID for COM object itself? (I will use it in CoCreateInstance) Thank you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.