使用x64dbg调试dll程序

使用x64dbg调试dll程序

这篇笔记是根据Lab16使用x64dbg调试带参数程序新增加的,记录了如何调试一个dll文件。

在很多时候一些程序会将核心功能放在dll文件内来完成,这样避免程序被查杀或者被逆向分析,主要手段是通过LoadLibrayA函数来加载一个dll文件,同时这个dllDllMain函数会被调用以此来达到执行dll的程序。

Windows上要独立执行一个dll程序,那么需要用到rundl32.exe来完成,因此可以借助这个程序来达到调试dll的目的。

分析dll程序的启动方式

这个样本使用的是《恶意代码分析实战》第三章的Lab03-02.dll,查看这个dll的导出符号

在这里插入图片描述

这个dll的启动方式可以使用rundll32.exe dllname,ExportName arguments的格式来启动,启动如下

rundll32.exe Lab03-02.dll,installA

下面用调试器来加载调试。

调试方式加载dll

为了能调试成功,先检查一下调试器的配置,开启system breakpoints Entry point的选项

在这里插入图片描述

如果不开启程序不能被正确中断下来,接着开始调试dll

  • 打开rundll32.exe

在这里插入图片描述

  • 配置调试参数

    将要调试的dll和dll要使用的参数配置并启动,在启动参数的后面配置常规的rundll32.exe dllname,exportName argumetns的格式即可

在这里插入图片描述

接着打开断点窗口右键选择Add Dll breakpoint然后输入要调试的dll名称,如下

在这里插入图片描述

设置好断点后如下

在这里插入图片描述

接着按下F9逐个加载dll,观察好加载的状态,当被调试的dll执行到入口处就表示程序已经启动成功

在这里插入图片描述

如果没有提示来到入口就一次一次的按下F9,接着就能正确调试了。

注意

这里加载的dll最好放在C:\myDir等这样的目录,例如我这里的是

在这里插入图片描述

加载的参数也要写对同样的路径

在这里插入图片描述

程序中断下来后,接着在关键位置设置断点分析,例如这里要观察dll的程序在入口的睡眠时间是否一致,

在这里插入图片描述
在调试器内设置这个断点并运行查看

在这里插入图片描述
这样就能正确调试dll程序了,后续有别的再继续补充。

总结

调试dll程序的步骤是

  • 使用x64dbg打开rundll32.exe

  • 接着设置命令行参数为

    C:\WINDOWS\system32\rundll32.exe C:\malwaredll\dllName,exportDllFunctionName arg1 arg2,...,argn
    
  • 设置好命令参数之后,打开断点窗口,右键Add Dll breakpoint写入要调试的dll的名称

    这里需要注意的是这个dll最好在C:\malwaredll这个目录下

  • 最后按下F9运行观察加载的dll,当加载到目标的dll的入口时就表示程序加载成功并且可以正常调试

  • 最后按照正常的调试思路进行即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章