【发布时间】:2010-11-30 19:06:37
【问题描述】:
我又撞墙了,需要你帮忙处理一些低级的事情。通过将导出的 DLL-Functions (with this code btw.) 注入到我的目标进程中,我已经成功地挂钩了它们(例如,我可以轻松地从 user32.dll 中绕过 MessageBoxW)。不幸的是,我的目标是不同的场景:我必须绕过一个在可执行文件中定义的函数,我将代码注入其中。该应用程序是开源的,所以我知道挂钩它所需的所有功能,但是二进制文件是用证书签名的,所以我无法编译我自己的版本。是否可以在运行时获取函数的地址或使用其他技术绕过它?目标是“普通”的 32 位 Windows 二进制文件。我觉得没什么特别的;)
你的, 奈法瑞斯
编辑:可能是因为我蹩脚的英语我不够详细,所以这里有一点示例代码:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
foo();
}
BOOL foo(char* someData)
{
return printf("%s", someData);
}
现在我想绕过动态库中不存在的函数foo()。这是我的问题。我不知道怎么做,我不确定这是否像我认为的那样有效。
编辑:现在我知道这是可能的,所以重要的问题变成了:如何?我如何获得我需要的信息;函数地址?
【问题讨论】:
-
不要将 [tags] 放在主题行中,尤其是当您也将它们放在标签区域时。