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]

 #!/usr/bin/python
#coding:utf-8
from immlib import *
def main(args):
#实例化一个immlib.Debugger对象
return "[*] PyCommand Executed!"

  

PyCommand有两个必要条件:

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

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

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

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 *
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都会自动加载这些目录。

Immunity Debugger学习的更多相关文章

  1. Immunity Debugger学习笔记

    图1::Immunity主界面 注意事项:最下方的PyCommands窗格既可以执行调试命令也可以执行python脚步文件. 1.PyCommands学习 在 Immunity 中执行 Python ...

  2. Immunity Debugger学习 二

    1.Exploit开发 发现漏洞只是一个开始,在你完成利用程序之前,还有很长一段路要走.不过Immunity专门为了这项任务做了许多专门设计,相信能帮你减少不少痛苦.接下来我们开发一些PyComman ...

  3. 《灰帽Python-黑客和逆向工程师的Python编程》学习记录

    ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书 ...

  4. TLS学习总结

    我们有知道 Immunity Debugger,OD 调试器,在调试程序时会设断在OEP(修改第一个字节0xcc).我在想,使用什么编程技术,代码可以在OEP前被执行.在网上找了些资料,在论坛上看到许 ...

  5. Windows Kernel Way 1:Windows内核调试技术

    掌握Windows内核调试技术是学习与研究Windows内核的基础,调试Windows内核的方式大致分为两种: (1)通过Windbg工具在Windows系统运行之初连接到Windows内核,连接成功 ...

  6. Python:渗透测试开源项目

    Python:渗透测试开源项目[源码值得精读] sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工 ...

  7. Python 黑客相关电子资源和书籍推荐

    原创 2017-06-03 玄魂工作室 玄魂工作室 继续上一次的Python编程入门的资源推荐,本次为大家推荐的是Python网络安全相关的资源和书籍. 在去年的双11送书的时候,其实送过几本Pyth ...

  8. awesome python 中文版 相见恨晚!

    awesome python 中文版 相见恨晚!   https://www.zhihu.com/question/24590883 这篇知乎厉害了!一定要学习! 作者:知乎用户链接:https:// ...

  9. windows下简单的缓冲区溢出

    缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等 ...

随机推荐

  1. [APIO2016]烟火表演

    题目描述 https://www.lydsy.com/JudgeOnline/problem.php?id=4585 题解 这题太神了. 我们可以先列出一个dp方程,dp[x][d]表示x节点到所有叶 ...

  2. [WC2014]紫荆花之恋(动态点分治+替罪羊思想)

    题目描述 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来.仔细看看的话,这个大树实际上是一个带权树.每 ...

  3. poj 3279 Fliptile(二进制搜索)

    Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He ha ...

  4. css border 三角形

    当元素的宽高都为0时,只写border,就会发现形成的正方形有4个三角形组成. .triangle { width: 0px; height: 0px; border: 20px solid tran ...

  5. 上pixiv解决法(保存)

    C:\Windows\System32\drivers\etc\hosts 127.0.0.1 localhost 127.0.0.1 advstat.xunlei.com 127.0.0.1 cl. ...

  6. 洛谷P4175 网络管理

    题意:链上带修第k大. 这毒瘤题...别看题意只有7个字,能把我吊打死... 介绍其中两种做法好了.其实思想上是一样的. 对于每一个点,建立权值线段树,维护它到根路径上的所有权值. 一条路径上的点集就 ...

  7. bzoj3331 压力(圆方树)

    题目链接 圆方树 圆方树就是对于联通无向图中的每一个点双新建一个方点,与点双中的每个点连一条边,然后将原来的边删去.将原来的点看作圆点,新建的点看作方点.所以叫做圆方树. 性质 1.圆方树肯定是棵树( ...

  8. CF Educational Codeforces Round 57划水记

    因为是unrated于是就叫划水记了,而且本场也就用了1h左右. A.B:划水去了,没做 C:大水题,根据初三课本中圆的知识,可以把角度化成弧长,而这是正多边形,所以又可以化成边数,于是假设读入为a, ...

  9. http请求415错误Unsupported Media Type

    王子乔 每一个认真生活的人,都值得被认真对待 http请求415错误Unsupported Media Type 之前用了封装的ajax,因为请求出了点问题,我试了下jQuery的$.ajax,报出了 ...

  10. 2、编程工具IAR、烧写工具SmartRF的使用

        IAR可以生成hex文件,SmartRF烧写hex文件到CC2530单片机. [IAR] 主要步骤:创建workspace.新建工程Project.新建文件(C源件).C源件Add到Proje ...