I've successfully reverse a DLL file which uses a COM interface and found the Class ID (CLSID) and Interface ID (IID). In Visual Studio debugging memory, it shows S_OK with CoCreateInstance() and all the function pointers of that COM interface. I saw this question but that uses IDA to reverse a DLL.
I've followed an article which shows finding methods definition using Visual Studio debug mode. I've both CLSID and IID from which I get the interface pointer.
So, my question is how can I find the (undocumented) function definitions? Is there any easy general guidelines to follow? It will be easy if someone show an procedure with Visual Studio, reversing with IDA is bit more complex.
Update: According to the answer I reverse the DLL in IDA but the assembly shows the
off_180002230 dq offset off_1800023D0 ; DATA XREF: .rdata:off_180002480↓o dq offset ILxssUserSession dq offset IUnknown_QueryInterface_Proxy dq offset IUnknown_AddRef_Proxy dq offset IUnknown_Release_Proxy dq offset ObjectStublessClient3 dq offset ObjectStublessClient4 dq offset ObjectStublessClient5 dq offset ObjectStublessClient6 dq offset ObjectStublessClient7 dq offset ObjectStublessClient8 dq offset ObjectStublessClient9 dq offset ObjectStublessClient10 dq offset ObjectStublessClient11 dq offset ObjectStublessClient12 dq offset ObjectStublessClient13 dq offset ObjectStublessClient14 unk_1800022B8 db 22h ; " ; DATA XREF: .rdata:0000000180002DE0↓o How can I relate those offset to a real function pointer? The current DLL is a proxy stub DLL and the real function is implemented/defined in another DLL. I've also seen this question which shows to follow function pointers.