IDA调试

简介: IDA调试

IDA动态调试

有时候程序在运行过程中会生成一些关键的数值,而人力通过静态分析的结果模拟程序的运行来推出这些中间的数值可能很麻烦。简单重复的工作是计算机所擅长的而不是人,所以我们可以让这个程序运行起来,得到这些中间过程的数值。这就是动态调试。

调试器通常用于执行以下两种任务(大概了解)

分析与已崩溃进程有关的内存映像,以一种完全受控的方式执行进程

调试会话以一个接受调试的进程为起点

大多数调试器能够依附在一个正在进行的进程上

选择一个进程之后,调试器将捕获该进程的内存快照,以此创建一个临时数据库。除这个正在运行进程的内存映像之外,临时数据库中还包含该进程加载的所有共享库,这使得这个数据库比我们常见的数据库要复杂得多

开始动态调试

1.Debugger->Select Debugger    或按快捷键F9

使用EXE文件可以使用Local Windows Debugger

如果是ELF文件应该放在Linux上用远程调试IDA动态调试ELF文件_光无影的博客-CSDN博客

2.Debuugger->Start Process 或者F9开始调试

3.IDA将显示警告信息

选择Yes,选择No会退出

进程控制

调试器的功能是能严密监控并修改它所调试的进程的行为

所以有一些调试的命令

Continue 继续执行一个暂停的进程。执行将继续,直到遇到一个断点暂停 F9

Pause 暂停一个正在运行的进程  使用工具栏按钮

Terminate  终止一个正在运行的进程

Step into 执行下一条指令,如果下一条是函数调用,就进入函数第一条 F7

Step over 执行下一条指令 如果下一条是一个函数调用,会跨过 F8

Run Until Return 执行当前函数到返回 Ctrl+F7

Run to  Cursor 执行进程,直到执行到达当前的光标位置 F9

断点

软件断点

调试时候执行到设置断点的位置会中断

指定位置F2快捷键设置断点

断点处红色显示

IDA调试器支持硬件断点和条件断点

硬件断点

在一个选定的断点处右击

选Hareware,按照需求选择读写或者执行断点,一般打在数据区域

跟踪

Debugger->Tracing->Tracing Options

寄存器变量

提供了一些特殊的寄存器,用于直接访问断点表达式中寄存器的内容

只有在调试器激活的时候才能使用寄存器变量

监视

可以持续监视一个或几个变量的值,不需要每次进程暂停后导航到相关内存的位置

显示监视列表

调试器任务自动化

IDC脚本关于调试器自动化的函数

注意:

每一个进程执行函数返回后,必须调用GetDebugger-Event,如果不这样做,随后单步执行或运行进程的尝试将会失败

例如

StepOver();
StepOver();
StepOver();
StepOver();

StepOver();只执行了一次,后面的都失败了

StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);
StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);
StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);
StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);

可以执行四次

相关文章
|
监控 NoSQL
JLink + GDB 调试方法
本节主要介绍嵌入式开发中常用的JLink+GDB调试方法。 调试所需软件 J-link,可以从https://www.segger.com下载对应操作系统的软件包,然后安装(注意:segger是仿真器的名字,相当常用的一款,仿真器的接口也是固定的,一般开发版上都会带有这个调试接口,如图) 运行JLinkGDBServer 按照上图中的配置,配置GDBServer,然后点击OK,进入下一个界面 注意,如果硬件连接没有问题,那么上图中的J-Link和 Device栏中显示绿色,GDB显示为红色,因为我们还没有运行GDB软件。
7053 46
|
Windows
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
4952 0
【Windows 逆向】OD 调试器工具 ( 推荐汉化版的 OD 调试工具 | 吾爱破解专用版Ollydbg | 备选工具 )
驱动开发:WinDBG 常用调试命令总结
Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。结合Microsoft的Symbol Server,可以获取系统符号文件,便于应用程序和内核的调试。Windbg支持的平台包括X86、IA64、AMD64。
456 0
|
算法 关系型数据库 芯片
MDK 用Jlink调试无法使用断点
MDK 用Jlink调试无法使用断点
675 0
MDK 用Jlink调试无法使用断点
|
iOS开发
LLDB调试iOS应用程序
如何利用LLDB调试iOS应用程序?本文为您揭晓。
434 1
LLDB调试iOS应用程序
|
C# C++ Windows
WinDbg 调试工具的使用
概述 项目接近尾声了,可是在运行时会有memory leak(内存泄露) bug.产品在运行一天后,内存增长致1.4G,而我们产品的初始内存才有70M,问题很严重,决定采用WinDbg工具来分析代码问题有原因到底在哪里. WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
862 0
|
安全 测试技术 数据安全/隐私保护
逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe
本文讲的是逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe,2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具体介绍勒索软件的实际运行流程,所以我写了这篇面向初学者的教程,希望帮助大家。
2815 0
|
NoSQL Linux C++
使用Nemiver调试器来调试 C/C++ 程序
使用Nemiver调试器来调试 C/C++ 程序 如果你读过我写的使用GDB命令行调试器调试C/C++程序,你就会明白一个调试器对一段C/C++程序来说有多么的重要和有用。然而,如果一个像GDB这样的命令行对你而言听起来更像一个问题而不是一个解决方案的话,那么你也许会对Nemiver更感兴趣。
2042 0