使用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。
我有一个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。