加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.我觉得没什么特别的;)

此致,
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比较.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读