首页 > 解决方案 > 使用 dll 注入访问方法的参数

问题描述

我有一个 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));
}

实际装配图:单击此处

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

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

标签: c++dll-injection

解决方案


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

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

要让跳转正常工作,您需要恢复 org 代码或创建 org 方法的副本...

另一种方法是硬件断点:例如在这里阅读。


推荐阅读