据我所知:WinDbg使用调试信息(pdb / symbol文件)进行调试。因此,例如说我收到一个未知的exe(恶意),可以调试它,因为我没有它的.pdb。 WinDbg是否最适合仅分析内存转储和崩溃问题?

Ollydbg是Ring 3调试器,可以很好地分析/调试恶意exe,但不支持未知的dll(有loaddll,但是您必须知道dll导出哪个函数以及那里的参数)和rootkits(sys文件)。

如果我有一个dll和.sys文件,如何使用olly或winDbg调试它?

注意:我是菜鸟,我所知道的可能是错误的。我没有足够的资源购买IDAPro :-)。

#1 楼

甚至IDA Pro的免费版本也值得拥有。查找未知二进制文件的一般结构比使用其他方法容易得多。如果您有未知的DLL,它将向您显示它具有哪个导出文件,查看汇编代码可帮助您猜测参数。

在大多数情况下,要调试.dll,您需要编写一个小程序,无论如何都要依次调用其多个出口。您可以使用ollydbg或windbg加载.exe并通过.dll代码进行跟踪。

我的个人经验是,在许多情况下,最好的方法是首先使用IDA以获得有关Windows的概述。未知二进制文件,然后使用ollydbg或IDA调试器在处理器指令级别上进行跟踪,并且仅当我在源代码级上具有一些要跟踪的符号时才使用高级调试器。

我购买了IDA而且我认为调试器的当前版本比免费的5.0版本要好得多,因此您可能希望完全跳过IDA调试器,但仍将其用于静态分析。而且我倾向于使用Linux而不是Windows(如果在Windows上使用IDA或Ollydbg),因此我对gdb的使用要比对windbg有更多的经验。

仍然,每个工具都有它的优势和劣势,如果您真的想进行二元分析,从长远来看,将需要它们中的每一个。如果我是你,我会花一两天的时间。一旦对它们感到满意,就会发现将根据自己的具体情况使用它们。

评论


c:\ windows \ system32 \ rundll32.exe [入口功能] technet.microsoft.com/zh-CN/library/ee624057(v=ws.11).aspx

–卡莱布·芬顿(Caleb Fenton)
16 Jun 18'在0:55



#2 楼


WinDbg使用调试信息(pdb /符号文件)进行调试。因此,例如说我得到一个未知的exe(恶意),可以调试它,因为我没有它的.pdb


是。符号是Windbg的主要优势之一,但是它也可以调试没有符号信息的任何事物。


WinDbg是否最适合仅分析内存转储和崩溃问题?


再次可以做到这一点,但这并不是它的唯一用途。


Ollydbg作为Ring 3调试器可以很好地分析/调试恶意程序
exe的但是不支持未知的dll(有loaddll,但是您有
可以知道dll导出了哪些功能以及参数)


如果需要分析DLL,则可以您将需要一个程序来加载它,然后调试该程序,因此您无法单独调试DLL(DLL,顾名思义是主程序使用的动态库)。这是系统要求。


和rootkits(sys文件)。


是的,您需要ring0调试器。

您还可以混合使用DLL和驱动程序(* .sys)文件的静态(反汇编程序)分析和运行时(调试器)分析。十六进制射线具有IDA的免费版本。


两个调试器都可以用于Ring3(用户域)调试,只有Windbg可以进行Ring0(内核域)调试,但是它们都有它们的功能。自己的长处和短处。

(从我的角度来看,我经常使用):


OllyDbg:

优点:非常适合向最终用户显示信息;配色方案,组织良好的显示窗口。
缺点:符号信息很少;没有命令行;仅限GUI


Windbg:

优点:具有符号信息的功能非常强大; Ring0调试; Windows内部裸露的金属物
缺点:不太人性化;陡峭的学习曲线



他们都有本地插件系统(C / C ++); windbg的脚本语言是真正的PITA(但是pykd [python中的Windbg脚本]可以缓解此问题)。

请注意,windbg不能就地进行实时ring0调试(请参见Softice)或Syser),但带有“ livekd”(但只能在系统snpashot上运行,而不是实时运行):您需要一个主机系统(调试器)和另一台将作为被调试对象的计算机(虚拟机或另一台物理机)。 br />