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]
#!/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学习的更多相关文章
- Immunity Debugger学习笔记
图1::Immunity主界面 注意事项:最下方的PyCommands窗格既可以执行调试命令也可以执行python脚步文件. 1.PyCommands学习 在 Immunity 中执行 Python ...
- Immunity Debugger学习 二
1.Exploit开发 发现漏洞只是一个开始,在你完成利用程序之前,还有很长一段路要走.不过Immunity专门为了这项任务做了许多专门设计,相信能帮你减少不少痛苦.接下来我们开发一些PyComman ...
- 《灰帽Python-黑客和逆向工程师的Python编程》学习记录
ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书 ...
- TLS学习总结
我们有知道 Immunity Debugger,OD 调试器,在调试程序时会设断在OEP(修改第一个字节0xcc).我在想,使用什么编程技术,代码可以在OEP前被执行.在网上找了些资料,在论坛上看到许 ...
- Windows Kernel Way 1:Windows内核调试技术
掌握Windows内核调试技术是学习与研究Windows内核的基础,调试Windows内核的方式大致分为两种: (1)通过Windbg工具在Windows系统运行之初连接到Windows内核,连接成功 ...
- Python:渗透测试开源项目
Python:渗透测试开源项目[源码值得精读] sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工 ...
- Python 黑客相关电子资源和书籍推荐
原创 2017-06-03 玄魂工作室 玄魂工作室 继续上一次的Python编程入门的资源推荐,本次为大家推荐的是Python网络安全相关的资源和书籍. 在去年的双11送书的时候,其实送过几本Pyth ...
- awesome python 中文版 相见恨晚!
awesome python 中文版 相见恨晚! https://www.zhihu.com/question/24590883 这篇知乎厉害了!一定要学习! 作者:知乎用户链接:https:// ...
- windows下简单的缓冲区溢出
缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等 ...
随机推荐
- 华东交通大学2018年ACM“双基”程序设计竞赛部分题解
链接:https://ac.nowcoder.com/acm/contest/221/C来源:牛客网 C-公式题(2) 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...
- staitc
一.static和非static变量 1. static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在.非static修饰 ...
- css 蒙层
蒙层 利用z-index: .mui-backdrop-other { position: fixed; top: 44px; right:; bottom:; left:; z-index:; ba ...
- react-native中使用滚动视图
ScrollView是一个通用的可滚动的容器,你可以在其中放入多个组件和视图,而且这些组件并不需要是同类型的. ScrollView 不仅可以垂直滚动,还能水平滚动(通过horizontal属性来设置 ...
- TreeView CheckBox勾选联动
http://www.cnblogs.com/excellently/p/TreeViewCheckBox.html 在C# Winform项目中用到了TreeView控件,并且需要勾选的功能.父子节 ...
- 第十六节,卷积神经网络之AlexNet网络实现(六)
上一节内容已经详细介绍了AlexNet的网络结构.这节主要通过Tensorflow来实现AlexNet. 这里做测试我们使用的是CIFAR-10数据集介绍数据集,关于该数据集的具体信息可以通过以下链接 ...
- poj 1523"SPF"(无向图求割点)
传送门 题意: 有一张联通网络,求出所有的割点: 对于割点 u ,求将 u 删去后,此图有多少个联通子网络: 对于含有割点的,按升序输出: 题解: DFS求割点入门题,不会的戳这里
- Jquery Mobile基本元素
移动端框架 安装: CDN: <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jq ...
- JS学习笔记Day2
一.程序的三大结构 顺序结构:从上到下,从左到右依次执行每一条语句 选择结构:根据条件判断选择要执行的语句,出口只有一个 循环结构:满足一定条件,重复执行一段代码 二.选择结构 1.三元运算符:? : ...
- Luogu P2852 [USACO06DEC]牛奶模式Milk Patterns
题目链接 \(Click\) \(Here\) 水题.利用\(Height\)的性质维护一个单调栈即可. #include <bits/stdc++.h> using namespace ...