IDA动态调试

举报
御麟 发表于 2023/04/25 22:18:05 2023/04/25
【摘要】 ​ 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);

可以执行四次




​

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。