c – 如何在EXE文件中查找要挂钩绕行的函数地址?

c – 如何在EXE文件中查找要挂钩绕行的函数地址?,第1张

概述我再次开车撞墙,需要你帮助一些低级别的东西.我已经成功地通过将它们注入我的目标进程来挂钩导出的DLL函数( with this code btw.)(例如,我可以轻松地从user32.dll中绕过MessageBoxW).不幸的是,我的目标是一个不同的场景:我必须绕过我正在注入我的代码的可执行文件中定义的函数.该应用程序是开源的,所以我知道我需要挂钩它的所有功能,但二进制文件是用证书签名的,所以我 我再次开车撞墙,需要你帮助一些低级别的东西.我已经成功地通过将它们注入我的目标进程来挂钩导出的DLL函数( with this code btw.)(例如,我可以轻松地从user32.dll中绕过MessageBoxW).不幸的是,我的目标是一个不同的场景:我必须绕过我正在注入我的代码的可执行文件中定义的函数.该应用程序是开源的,所以我知道我需要挂钩它的所有功能,但二进制文件是用证书签名的,所以我无法编译自己的版本.是否可以在运行时获取函数的地址或使用其他技术绕过它?目标是一个“正常”的32位windows二进制文件btw.我觉得没什么特别的;)

此致,
Nefarius

编辑:也许是因为我的蹩脚英语我不够详细,所以这里有一些示例代码:

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比较.

总结

以上是内存溢出为你收集整理的c – 如何在EXE文件中查找要挂钩/绕行的函数地址?全部内容,希望文章能够帮你解决c – 如何在EXE文件中查找要挂钩/绕行的函数地址?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1225299.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存