恶意代码分析-第八章-动态调试

内核模式/用户模式

用户模式:调试的程序会与其他程序隔离

内核模式:会需要两个系统,一个运行被调试的代码,另一个运行调试器,还有须配置操作系统使得开启内核调试功能,并将两个系统连通。

windbag--支持内核调试和用户调试

Ollydbg--支持用户模式

单步跳过--某些函数调用永远不会返回,如果跳过此类函数,调试器将不能再次获得控制权。

异常

调试器通常有两次机会来处理同一个异常:首次处理异常和二次处理异常。调试器第一次附加到进程时,会发生一个异常,然后被调试的程序停止执行,此时调试器开始获得控制权。调试器可以自己处理异常,也可以将异常转给被调试的应用程序处理。

如果程序注册了一个异常处理函数,他会在调试器处理异常后,获取处理异常的权限。例如 除0操作,如果应用程序没有处理异常,调试器将获得另一个调试的机会——二次处理异常。调试器接受到一个二次处理异常后,意味着如果程序没有附加到调试器就会崩溃,为了让应用程序正常运行,调试器必须处理异常。对于恶意代码分析,首次异常可以忽略,二次异常不能忽略。

使用调试修改执行文件:

避免一个函数不被调用,可以通过改变指针指令,阻止调用的发生。

了解一个函数的调用情况,但不知道调用的位置。可以改变指针指令,使这个函数执行。

实验

猜你喜欢

转载自blog.csdn.net/m0_37809075/article/details/81316231
今日推荐