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. docker-compose.yml(3)

    ELK:version: '2' services: elasticsearch: build: context: elasticsearch/ volumes: - ./elasticsearch/ ...

  2. 协同过滤算法 teamCF

    http://www.infoq.com/cn/articles/recommendation-algorithm-overview-part02

  3. [ZJOI2016]大森林(LCT)

    题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种 ...

  4. pandas isin

    在已知id索引的情况下,如何获取所需要的行呢?已经不止一次遇到这样的情况,经历过重重筛选,所得到的最终结果是一串满足所有条件的id列表. pandas 的isin 能很好的解决这个问题, import ...

  5. 解决忘记mysql中的root用户密码问题

    如果忘了数据库中的root密码,无法登陆mysql. 解决步骤: 1. 使用“--skip-grant-tables”启动数据库 ~]#systemctl stop mysql ~]#mysqld_s ...

  6. 杨辉三角 II

    题目描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 贴出代码 class ...

  7. deque双端队列容器

    //deque双端队列容器 //deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector不同的是, //deque采用的分块线性存储结构来存储数据,每块的大小一般为512字节 ...

  8. 【洛谷P2868】Sightseeing Cows

    题目大意:给定一个 N 个点,M 条边的有向图,点有点权,边有边权,求该有向图中的一个环,使得环上点权和与环上边权和之比最大. 题解:0/1 分数规划思想,每次二分一个 mid,在新图上跑 spfa, ...

  9. 第三十三节,目标检测之选择性搜索-Selective Search

    在基于深度学习的目标检测算法的综述 那一节中我们提到基于区域提名的目标检测中广泛使用的选择性搜索算法.并且该算法后来被应用到了R-CNN,SPP-Net,Fast R-CNN中.因此我认为还是有研究的 ...

  10. Day013--Python--内置函数一

    一.作用域相关(2) 1. globals()  查看全局空间作用域中的内容. 函数会以字典的类型返回全部全局变量. 2. locals()  查看当前空间作用域中的内容. 函数以字典的类型返回当前位 ...