python调试工具 immunity_Immunity Debugger学习

1、Immunity Debugger简介

Immunity Debugger软件专门用于加速漏洞利用程序的开发,辅助漏洞挖掘以及恶意软件分析。它具备一个完整的图形用户界面,同时还配备了迄今为止最为强的Python安全工具库。它巧妙的将动态调试功能与一个强大的静态分析引擎融合于一体,它还附带了一套高度可定制的纯pythont图形算法,可用于帮助我们绘制出直观的函数体控制流以及函数中的各个基本块。

2、软件介绍

2.1、主界面:

调试器界面被分成5个主要的块。

左上角的CPU窗口------显示了正在处理的代码的反汇编指令。

右上角是寄存器窗口------显示所有通用寄存器。

左下角是内存窗口---------以十六进制的形式显示任何被选中的内存块。

右下角是堆栈窗口---------显示调用的堆栈和解码后的函数参数(任何原生的API调用)。

最底下白色的窗口是命令栏-----能够像windbg一样使用命令控制调试器,或者执行PyCommands。

2.2、PyCommands命令

pycomands是我们在Immunity Debugger中执行Python代码扩展的主要途径。存放在Immunity安装目录的pyCommand文件夹里。

是为了帮助用户在调试器内执行各种任务(如设立钩子函数、静态分析等)而特意编写的python脚本。

任何一个PyCommand命令都必须遵循一定结构规范:1、必须定义一个main函数,并接受一个Python列表作为参数;2、必须返回一个字符串:将被显示在调试器界面的状态栏。

按要求编写一个py脚本:

[demo.py]

1 #!/usr/bin/python

2 #coding:utf-8

3 from immlib import *

4 defmain(args):5 #实例化一个immlib.Debugger对象

6 return "[*] PyCommand Executed!"

PyCommand有两个必要条件:

一个main函数,只接受一个参数(由所有参数组成的python列表)。

另一个是在函数执行完成的时候必须返回一个字符串,最后更新在调试器主界面的状态栏。

执行命令之前在命令前加一个感叹号。---------- !

2.3、PyHooks

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

BpHook/LogBpHook

当一个断点被触发的时候,这种hook就会被调用。两个hook很相似,

除了BpHook被触发的时候,会停止被调试的进程,而LogBpHook不会停止被调试的进程。

AllExceptHook

所有的异常的都会触发这个Hook.

PostAnalysisHook

在一个模块被分析完成的时候,这种hook就会被触发。这非常有用,当你在

模块分析完成后需要进一步进行静态分析的时候。

记住:在用immlib对一个模块进行函数和基础块的解码之前必须先分析这个模块。

AccessViolationHook

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

LoadDLLHook/UnloadDLLHook

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

CreateThreadHook/ExitThreadHook

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

CreateProcessHook/ExitProcessHook

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

FastLogHook/STDCALLFastLogHook

这两种hook利用一个汇编跳转,将执行权限转移到一段hook代码用以记录特定的

寄存器和内存数据。

当函数被频繁的调用的时候,这种hook非常有用。

例子:以下的logBpHook例子代码块能够作为PyHook的模板:

from immlib import *

classMyHook(LogBpHook):def __init__(self):

LogBpHook.__init__(self)defrun(regs):#Executed when hook gets triggered

重载了LogBpHook类,并且必须建立了run()函数。当hook被触发的时候,所有的CPU寄存器,以及指令都将被

存入regs,此时我们就可以修改它们了。regs是一个字典。如下访问相应寄存器的值:regs["ESP"]。

hook可以定义在PyCommand里,随时调用。也可以写成脚本放入PyHooks目录下。每次启动immunity都会自动加载这些目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值