c – 如何在EXE文件中查找要挂钩/绕行的函数地址?
发布时间:2020-12-16 06:55:14 所属栏目:百科 来源:网络整理
导读:我再次开车撞墙,需要你帮助一些低级别的东西.我已经成功地通过将它们注入我的目标进程来挂钩导出的DLL函数( with this code btw.)(例如,我可以轻松地从user32.dll中绕过MessageBoxW).不幸的是,我的目标是一个不同的场景:我必须绕过我正在注入我的代码的可执
我再次开车撞墙,需要你帮助一些低级别的东西.我已经成功地通过将它们注入我的目标进程来挂钩导出的DLL函数(
with this code btw.)(例如,我可以轻松地从user32.dll中绕过MessageBoxW).不幸的是,我的目标是一个不同的场景:我必须绕过我正在注入我的代码的可执行文件中定义的函数.该应用程序是开源的,所以我知道我需要挂钩它的所有功能,但二进制文件是用证书签名的,所以我无法编译自己的版本.是否可以在运行时获取函数的地址或使用其他技术绕过它?目标是一个“正常”的32位Windows二进制文件btw.我觉得没什么特别的;)
此致, 编辑:也许是因为我的蹩脚英语我不够详细,所以这里有一些示例代码: int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd ) { foo(); } BOOL foo(char* someData) { return printf("%s",someData); } 现在我想绕开动态库中不存在的函数foo().这是我的问题.我不知道如何,我不确定这是否像我认为的那样有效. 编辑:现在我知道这是可能的,所以重要的问题改为:如何?我如何获得所需的信息;功能地址? 解决方法
当然,只需使用类似
Ollydbg的设置断点,并在可执行文件加载后编辑程序集(并完成检查其证书).永久地执行此操作会更具挑战性,但根据证书检查的复杂程度,您可能只需用NOP(无操作)替换它就可以绕过该位代码.
编辑:如果你正在运行64位Windows,你可能会有更好的运气与微软自己的Debugging Tools.我从来没有使用它们,所以我不知道他们如何与Ollydbg比较. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |