Immunity Debugger学习笔记

Image_060

图1::Immunity主界面python

注意事项:最下方的PyCommands窗格既能够执行调试命令也能够执行python脚步文件。数组

一、PyCommands学习

在 Immunity 中执行 Python 的方法即便用 PyCommands。PyCommands 就是一个个 python 脚本文件,存放在 Immunity 安装目录的 PyCommands 文件夹里。每一个 python 脚本都执行一 个任务(hooking,静态分析等待),至关于一个 PyCommand。每一个 PyCommand 都有一个 特定的结构。如下就是一个基础的模型:函数

from immlib import * 
def main(args):
    # Instantiate a immlib.Debugger instance 
    imm = Debugger()
    return "[*] PyCommand Executed!"

PyCommand 有两个必备条件。一个 main()函数,只接收一个参数(由全部参数组成的 python 列表)。另外一个必备条件是在函数执行完成的时候必须返回一个字符串,最后更新在 调试器主界面的状态栏。执行命令以前必须在命令前加一个感叹号。学习

!<scriptname>

二、PyHooks

Immunity 调试器包含了 13 总不一样类型的 hook。每一种 hook 都能单独实现,或者嵌入 PyCommand。线程

BpHook/LogBpHook调试

当一个断点被触发的时候,这种 hook 就会被调用。两个 hook 很类似,除了 BpHook 被 触发的时候,会中止被调试的进程,而 LogBpHook 不会中止被调试的进程。code

AllExceptHookblog

全部的异常的都会触发这个 hook。进程

PostAnalysisHookip

在一个模块被分析完成的时候,这种 hook 就会被触发。这很是有用,当你在在模块分 析完成后须要进一步进行静态分析的时候。记住,在用 immlib 对一个模块进行函数和基础 块的解码以前必须先分析这个模块。

AccessViolationHook

这个 hook 由访问违例触发。经常使用于在 fuzz 的时候自动化捕捉信息。

LoadDLLHook/UnloadDLLHook

当一个 DLL 被加载或者卸载的时候触发。

CreateThreadHook/ExitThreadHook

当一个新线程建立或者销毁的时候触发。

CreateProcessHook/ExitProcessHook

当目标进程开始或者结束的时候触发。

FastLogHook/STDCALLFastLogHook

这两种 hook 利用一个汇编跳转,将执行权限转移到一段 hook 代码用以记录特定的寄存 器,和内存数据。当函数被频繁的调用的时候这种 hook 很是有用;第六章将详细讲解。

如下的 LogBpHook 例子代码块可以做为 PyHook 的模板。

from immlib import *
class MyHook( LogBpHook ): 
    def init ( self ):
        LogBpHook. init ( self )
    def run( regs ):
        # Executed when hook gets triggered

咱们重载了 LogBpHook 类,而且创建了 run()函数(必须)。当 hook 被触发的时候,所 有的 CPU 寄存器,以及指令都将被存入 regs,此时咱们就能够修改它们了。regs 是一个字 典,以下访问相应寄存器的值:

regs["ESP"]

hook 能够定义在 PyCommand 里,随时调用。也能够写成脚本放入 PyHooks 目录。每 次启动 Immunity 都会制动加载这些目录。接下来看些实例。

相关文章
相关标签/搜索