黑客之瞳——调试器(一)

前言

调试程序不管对于工程师这样的开发人员还是黑客这样的安全人员都十分重要,能快速在大篇幅的代码中找到bug并采取修补或者利用的手段,而本系列博文是围绕安全方面的调试进行撰写的,不过技能总是相同原理只是使用不同罢了。

概念

调试器使得调试者能够跟踪一个进程的运行时状态,被称为动态分析技术,在Justin的《Gray Hat Python》书中列举了需要此技术的的应用场合,如开发基于安全漏洞实施攻击的exploit程序,或者作为fuzzing测试框架进行漏洞挖掘时的辅助工具,以及恶意软件分析等。
同时在安全工作方面,调试器为软件缺陷审计提供了一组极为有用的特性和功能,而大多数调试器是具有以下的基本功能的:运行、暂停执行和单步执行、设置断点、修改寄存器和内存数据值以及捕获发生在目标进程中的异常事件。

区分白盒调试器和黑盒调试器

大多数开发平台以及IDE都有自带一个内建的调试器,用于帮助开发人员对程序进行源码级别的跟踪和调试,这种源码级别的调试方式可以使用户对被调试的进程获取较高级别的控制能力,而这类调试器被称为“白盒调试器”,通常用于软件的开发阶段。
以上是Justin在书中的描述,而通俗的讲便是可见源码的调试便是白盒调试。
而对于逆向工程师或者漏洞挖掘者而言,很难有机会拿到源码,因而便需要利用黑盒调试器对目标程序进行追踪。黑盒调试器的设计基于一个假设,便是需要被分析的目标软件对于黑客而言是一个完全不透明的黑盒,黑客唯一获得信息的来源就是以汇编代码形式呈现的反汇编结果,而通过这种方式来发现软件漏洞和缺陷是具有挑战性以及耗时的过程,但也是一名优秀的逆向工程师需要驾驭的。

黑盒调试器

黑盒调试器分为两类:用户态调试器,内核调试器。
用户态(ring3)是指cpu处理器在执行应用程序代码时所处于的一种特定状态,用户态下的应用程序是以最低权限运行的。
内核态(ring0)代表了最高级别的权限,操作系统的内核代码连同驱动程序等这类底层组件正是运行在内核态下,例如使用wireshark进行网络嗅探抓包时就是和一个正在内核态下的网卡驱动程序进行交互。

逆向工程师常用用户态调试器

WinDbg,是微软推出的调试器;
OllyDbg,是Oleh Yuschuk开发并免费公布的调试器;
GNU调试器(gdb),是在linux环境下的调试工具。
PyDbg,由纯Python实现的调试器,只要通过Python脚本的编写与调试器插件接口便能实现自动化进程控制;
Immunity Debugger,风格类似OllyDbg的图形化界面调试器,支持Python等编写的脚本插件,拥有一套强大的Python调试库。

小结

关于调试器的一些基本了解以及在安全工作中常用的调试器都进行了认识和基本了解,之后会对调试的原理进行深入学习。

————————————
参考:

  • Justin《Gray Hat Python》
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ollydbg2.01(alpha4)是一个由Oleh Yuschuk发布的32位汇编级调试器,Ollydbg2.01(alpha4)汉化版由正思软件工作室汉化发布。 OllyDbg的是一个32位汇编级Microsoft的Windows的分析调试器。二进制代码分析的重点,特别是在源代码不可用的情况下非常有用。 OLLYDBG v2.01d 汉化版更新内容: 特别亮点: 直观的用户界面,没有隐藏的命令. 代码分析 - 跟踪寄存器,确认过程,循环,API调用,分支,表,常量和字符串 直接运行和调试的DLL 对象文件扫描 - 从对象文件和库位于例程 允许用户定义的标签,备注和功能描述 识别在Borland ®格式的调试信息 会话之间保存的补丁程序,并将其写入可执行文件,并更新链接地址 开放式架构 - 支持许多第三方插件 无需安装 - 没有注册表或系统目录中的垃圾 调试多线程应用程序 附加到正在运行的程序 配置反汇编器,支持MASM的和IDEAL的格式 MMX,3DNOW!和SSE数据类型和说明,包括速龙Athlon扩展 完整的Unicode支持 动态识别ASCII和Unicode字符串 - 在Delphi格式! 识别复杂的代码结构,如呼叫跳转到程序 解码1900多个标准的API和400 C函数调用 提供来自外部的帮助文件的API函数的上下文敏感的帮助 设置条件,日志记录,内存和硬件断点 跟踪程序的执行,记录已知函数的参数 显示调整信息 动态跟踪堆栈帧 搜索不精确的命令和摸糊的二进制序列 搜索整个分配的内存 查找引用常量或地址范围 审查和修改内存,设置断点和暂停运行方案 组装成二进制形式的最短的命令 从软盘启动 很多,很多!
成为一名超级黑客需要广泛的知识和技能,以下是零基础自学成为黑客的一般路径: 1. 计算机基础知识:了解计算机的基本原理、操作系统和网络基础知识。学习计算机科学的基础概念、术语和操作系统的工作原理。 2. 编程语言:学习编程语言,如 Python、C++ 或 Java。掌握基本的编程语法和控制结构,并逐渐深入学习高级特性和数据结构。 3. 网络和网络安全:深入了解网络协议、网络拓扑、IP 地址和端口等基本概念。学习网络安全的基础知识,如常见的攻击类型、漏洞利用和防御技术。 4. 渗透测试:学习渗透测试技术,掌握常见的漏洞扫描和渗透测试工具,如Metasploit、Nmap 和 Wireshark。了解常见的漏洞类型和渗透测试方法。 5. 密码学:学习密码学的基础知识,包括对称加密、非对称加密、哈希函数等。了解常见的密码算法和攻击手段。 6. 社会工程学:研究社会工程学的原理和技巧,了解如何利用人类心理和社交工具进行攻击和欺骗。 7. 安全工具和技术:学习使用安全工具,如网络扫描器、漏洞利用工具、数据包分析工具等。了解防火墙、入侵检测系统和反病毒软件等常见安全技术。 8. 法律和道德:了解相关的法律和道德准则,明确合法和道德的边界,遵守法律规定并保护个人隐私。 请注意,黑客行为是非法的,违法使用这些技术可能会导致严重的法律后果。在学习过程中,请始终遵守法律和道德,将技术用于合法和道德的目的,例如网络安全职业或白帽黑客

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值