首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ghidra充满了thunk函数

ghidra充满了thunk函数
EN

Stack Overflow用户
提问于 2020-08-05 19:05:38
回答 1查看 4.7K关注 0票数 2

我正试着在吉德拉做个疯子。我已经找到了答案,但是我想知道如何“正确”地完成这个操作,因为我使用了调试器并查看了字符串。在下面的图片中,你可以很明显地看到,有很多thunk函数,但老实说,它们看起来就像printf的。我不知道如何修复它,这样我就可以得到可读的函数名称,或者如果没有方法。

当我试图分析这个文件时,我想这可能与我遇到的一个错误有关,而这个文件是关于PDB文件的一个错误。我试图重新编译msdia140.dll,因为我使用的是visual studio 2019,但是当我尝试编译时,我只得到了构建错误。

我如何制作它,使下面的图像不充满雷鸣函数,实际上是可读的方式,因为这些看起来像printf函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 06:41:07

当我试图分析文件时,我想这可能与我遇到的错误有关,因为我得到了关于PDB文件的错误。

我假设错误消息“无法找到PDB文件”.“使用匹配的GUID .”。如果是这样的话,这是因为您没有当前正在反向工程的程序的PDB文件(包含调试信息的文件)。这是正常的情况下,我会说。

我如何制作它,使下面的图像不充满雷鸣函数,实际上是可读的方式,因为这些看起来像printf函数。

这是您作为逆向工程师需要做的实际工作:开始了解这些函数所做的事情,并设置名称(和数据类型)。

除了在已编译的二进制文件中存在大量元数据的情况(如MSIL或Java )之外,Ghidra无法自动确定函数名。对于变量来说,一个稍微糟糕的语句是正确的:在许多体系结构中,机器代码中甚至没有变量的概念。

Ghidra有一些启发式方法可以帮助您进行手动处理:当它为例如前缀时,这意味着对所讨论的函数进行评估,只需将控制传递给另一个目标函数。或者对API函数system的调用已经正确命名了。

好消息是您已经开始了一些工作:基于函数参数或基于动态分析,您已经猜到thunk_FUN_00d83950可能是printf。因此,右键单击要重命名的函数,然后单击“重命名函数”。此外,请注意菜单中列出的热键--您将非常需要它。

其他功能需要更多的分析工作:双击这些功能,并试图找出它们所做的事情。或者--就像你之前做的那样--这是一种非常强大的技术--把你的静态逆向工程和动态分析结合起来。

在更正了一些函数名之后,您可能还需要更改它们的类型。右击这些,选择“编辑函数签名”,并在出现的窗口中进行调整。对于具有printf变元论点,可能需要在右边选择"Varargs“。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63271946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档