我正试着在吉德拉做个疯子。我已经找到了答案,但是我想知道如何“正确”地完成这个操作,因为我使用了调试器并查看了字符串。在下面的图片中,你可以很明显地看到,有很多thunk函数,但老实说,它们看起来就像printf的。我不知道如何修复它,这样我就可以得到可读的函数名称,或者如果没有方法。
当我试图分析这个文件时,我想这可能与我遇到的一个错误有关,而这个文件是关于PDB文件的一个错误。我试图重新编译msdia140.dll,因为我使用的是visual studio 2019,但是当我尝试编译时,我只得到了构建错误。
我如何制作它,使下面的图像不充满雷鸣函数,实际上是可读的方式,因为这些看起来像printf函数。


发布于 2020-08-11 06:41:07
当我试图分析文件时,我想这可能与我遇到的错误有关,因为我得到了关于PDB文件的错误。
我假设错误消息“无法找到PDB文件”.“使用匹配的GUID .”。如果是这样的话,这是因为您没有当前正在反向工程的程序的PDB文件(包含调试信息的文件)。这是正常的情况下,我会说。
我如何制作它,使下面的图像不充满雷鸣函数,实际上是可读的方式,因为这些看起来像printf函数。
这是您作为逆向工程师需要做的实际工作:开始了解这些函数所做的事情,并设置名称(和数据类型)。
除了在已编译的二进制文件中存在大量元数据的情况(如MSIL或Java )之外,Ghidra无法自动确定函数名。对于变量来说,一个稍微糟糕的语句是正确的:在许多体系结构中,机器代码中甚至没有变量的概念。
Ghidra有一些启发式方法可以帮助您进行手动处理:当它为例如前缀时,这意味着对所讨论的函数进行评估,只需将控制传递给另一个目标函数。或者对API函数system的调用已经正确命名了。
好消息是您已经开始了一些工作:基于函数参数或基于动态分析,您已经猜到thunk_FUN_00d83950可能是printf。因此,右键单击要重命名的函数,然后单击“重命名函数”。此外,请注意菜单中列出的热键--您将非常需要它。
其他功能需要更多的分析工作:双击这些功能,并试图找出它们所做的事情。或者--就像你之前做的那样--这是一种非常强大的技术--把你的静态逆向工程和动态分析结合起来。
在更正了一些函数名之后,您可能还需要更改它们的类型。右击这些,选择“编辑函数签名”,并在出现的窗口中进行调整。对于具有printf的变元论点,可能需要在右边选择"Varargs“。
https://stackoverflow.com/questions/63271946
复制相似问题