03月22, 2018

0x08 - 动态调试

调试器让你看到程序在执行过程中做了什么,监控程序执行过程,让开发者监控程序的内部状态和运行。

从反汇编器中获得一些程序的信息, 1)反汇编在执行第一条指令前,立刻提供程序的快照,

2)程序运行时,调试器查看动态视图功能,在整个程序运行过程中,可以显示内存地址的变化,寄存器内容,每个函数的参数

3)修改程序执行的任何东西(前提是获得关于这个变量足够的信息,包括在内存中的位置)。

两个调试器,OllyDbg, WinDbg

为观察程序内部变量的状态,一次又一次的运行程序。

汇编级别调试器(底层调试器): 操作对象是汇编代码,按照一次一条指令方式运行程序,在某行汇编代码上设置断点,中断程序运行,查看内存内容。

内核模式与用户模式调试

0x01 - 内核模式: 需要连个不同的系统,一个系统运行被调试的代码,另一个运行调试器,需要配置操作系统开启内核调试功能,连通两个系统。

0x02 - 用户模式调试: 调试器和代码运行在同一个系统中,调试时,单个执行程序与其他可执行程序隔离。

WinDbg 支持内核调试, OllyDbg是恶意代码分析人员使用最多的调试器,它不支持内核调试。

iDA Pro 有个内置的调试器。

两种调试程序的方法: 1)利用调试器启动程序,启动程序后,被加载到内存,在其入口点运行之前立即停止运行, 2)附加一个调试器到已经运行的程序上,当程序的所有线程停止,你就可以调试(当已经恶意代码被感染的进程) 单步调试:看到程序发生的每一个细节,太费时间了,要关注大局,不要迷失到细节中。

调试过程中 关注数据被修改,单步调试查看代码段如何改变内存的内容。

Stepping-Over

Stepping-Into

某些函数调用永远不会返回,如果程序调用了一个没有返回的函数,你单步跳过它,那调试器将不能再次获得控制权限。

发生这种情况,需要重启程序,再次定位到这个函数,这次需要单步跳入该函数

启动 VMware record/replay功能,发生意外可以停止记录,重放到单步跳过的函数面前,然后停止重放,取得控制权。

本文链接:https://harry.ren/post/dynamicDebug.html

-- EOF --

Comments