c++ - 使用 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 注入世界的新手,而不是专家)。
解决方案
如果你能找到 SSL_connect 函数的地址,你就可以detour
了。这意味着您可以JMP
在方法的开头写一条指令到您的patched
-method。
如果您的jumped-to
方法具有相同的调用约定和签名,您可以简单地访问 SSL* 并在之后使用它做您想做的事情,您可以跳回......
要让跳转正常工作,您需要恢复 org 代码或创建 org 方法的副本...
另一种方法是硬件断点:例如在这里阅读。
推荐阅读
- wpf - LayoutRounding 属性未定义
- javascript - 如何将属性与对象数组中的值进行比较?
- sql - 获取包含特定列字段的数据库表列表?
- vba - 自动过滤后的Excel VBA单元格引用
- java - groovy grails 异步承诺立即执行
- android - 如何实现多选的按住和拖动功能?
- android - 在使用 Picasso 显示的 ImageView 上方放置一个稀松布
- angular - 如何在angular4中创建像angularjs这样的对象
- javascript - Laravel 发布请求没有返回正确的数据
- javascript - JS和JQuery延迟事件