我已经成功地反转了一个使用 COM 接口的 DLL 文件,并找到了类 ID (CLSID) 和接口 ID (IID)。在 Visual Studio 调试内存中,它显示S_OK了CoCreateInstance()该 COM 接口的所有函数指针。我看到了这个问题,但它使用 IDA 来反转 DLL。
我关注了一篇文章,该文章显示了使用 Visual Studio 调试模式查找方法定义。我有 CLSID 和 IID,从中我可以得到接口指针。
所以,我的问题是如何找到(未记录的)函数定义?是否有任何简单的通用指南可以遵循?如果有人使用 Visual Studio 展示一个过程会很容易,而使用 IDA 进行逆向则要复杂一些。
更新:根据答案,我在 IDA 中反转了 DLL,但程序集显示了
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
如何将这些偏移量与实际函数指针相关联?当前 DLL 是代理存根 DLL,实际功能在另一个 DLL 中实现/定义。我也看到了这个问题,它表明要遵循函数指针。