了解 IE11 通过 COM 的进程间通信

逆向工程 艾达 拆卸 视窗 电脑 虚函数
2021-06-15 07:30:31

我对 COM 对象反转(Windows 平台)很陌生。我正在尝试在 Windows 8.1 上反转 Internet Explorer,其中子 IE 进程通过 com 与父 IE 进程通信(由于保护模式)。

这是来自 ieframe.dll (类 CShellUIHelper 的一部分)的虚函数的 ASM 片段,它负责 COM 操作(我有 MS 公共符号。)

CShellUIHelper::XX_XX{

..
..
    mov     eax, [ebp+var_2BC]
    lea     edx, [ebp+Filename]
    mov     edi, esp
    push    edx
    push    [ebp+var_2AC]
    mov     esi, [eax]
    push    ecx             ; _DWORD
    push    eax             ; _DWORD
    mov     esi, [esi+25Ch]
    mov     ecx, esi        ; _DWORD
    call    ds:___guard_check_icall_fptr
    call    esi             ; call {combase!ObjectStublessClient30+0x5c0

}

这里它使用call esi指令在最后一行调用 COM 接口方法,实际上是call [esi+025Ch]. 运行时我发现它实际上调用了 combase!ObjectStublessClient30(x,x)

在这里,我想使用 combase!ObjectStublessClient30() 找到其调用的接口方法名称。

为了找到方法名称,我正在关注这个RE.SE 答案,它看起来非常相似。

但问题是,在这个答案中,接口名称是已知的,即 IShellWindows,但在我的情况下,我不知道接口名称。

我被困在这一点上。所以我的问题是我应该遵循什么路径来找出接口名称和方法名称。?

0个回答
没有发现任何回复~