使用dll注入访问方法的参数

Access method's parameter with dll injection

我有一个64位的进程,我想出了一个静态链接库的方法。

该方法来源:

int SSL_connect(SSL *s)
{
    if (s->handshake_func == 0)
        /* Not properly initialized yet */
        SSL_set_connect_state(s);

    return (s->method->ssl_connect(s));
}

实际装配图像:click here

我想做的是使用 dll 注入来访问 SSL 参数。我正在使用 x64dbg + ScyllaHide 插件来注入 dll,因此不需要任何自定义注入工具。我成功地在这个过程中注入了一个简单的dll,所以我认为这对这个案例来说已经足够了。

是否有机会在不修改程序集的情况下从这里访问变量? 谁能给我扔点骨头好吗? (我不要求代码,我只需要一些提示,因为我是 C++ 和 dll 注入世界的新手,而不是专家)。

如果你能找到 SSL_connect 函数的地址,你就可以 detour 它。这意味着您可以在 patched 方法的方法开头编写 JMP 指令。

如果您的 jumped-to 方法具有相同的调用约定和签名,您可以简单地访问 SSL* 并在之后用它做任何您想做的事您可以跳回...

要让跳回工作,您需要恢复组织代码或创建组织方法的副本...

另一种方法是硬件断点:例如阅读 here