ida使用技巧之动态调试

这篇具有很好参考价值的文章主要介绍了ida使用技巧之动态调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ida动态调试

1、介绍

众所周知,ida是一款非常优秀的反编译软件,在静态逆向中是属于屠龙宝刀一般的存在,他不仅仅有着优秀的静态分析能力,同时还有着极其优秀的动态调试能力,甚至可以直接对生成的伪代码进行调试,这一点远超其他只能在汇编层进行调试的动态调试器,极大的增加了动态调试程序的可读性,能够节省很多精力。甚至可以以远程调试的方式,将程序部署在linux或安卓端上,实现elf文件和so文件等的动态调试。

2、本地调试(Windows)

首先从本地动态调试开始

加载目标文件

万年第一步,使用ida打开目标文件,然后点击菜单项中的“Debugger”
ida使用技巧之动态调试
选择select debugger
ida使用技巧之动态调试本地调试Windows文件,所以这里选择local Windows debugger。
ida使用技巧之动态调试点击ok之后,再看debugger菜单发现此时菜单以新的形式展开

ida使用技巧之动态调试此时再点击带有绿色三角符号的“Start process”即可开始调试程序

ida还支持另一种调试方式,即将目标文件附加到一个正在运行的进程上,以调试某些无法独立运行的文件,如果想以这种方式进行调试,则在选好调试器后点击“Attach to process”后即可选择附加进程
ida使用技巧之动态调试

调试器界面

经过一段时间的加载之后,进入了调试器界面
ida使用技巧之动态调试“IDA-view-eip”界面是反汇编窗口,在这里点击f5,可以进入伪代码调试
ida使用技巧之动态调试

可以说是非常的好用
下面的“hex view”顾名思义,右边从上到下分别是级寄存器/标志寄存,加载到进程内存空间中的可执行文件和共享库,双击模块名称可打开该模块输出的符号表,再向下看就是栈窗口

调试命令
ida快捷键 功能
F7 单步步进
F8 单步步过
F9 继续运行程序
F4 运行到光标所在行
Ctrl + F7 直到该函数返回时才停止
Ctrl + F2 终止一个正在运行的进程
F2 设置断点
断点

ida的动态调试同样支持设置条件断点
ida使用技巧之动态调试
设置好断点后,右键断点,点击第二行“Edit breakpoint”即可打开断点设置菜单
ida使用技巧之动态调试
location栏是断点地址,condition栏则是条件断点的表达式
例:EAX == 12
指当EAX的值为12时中断,同时,因为condition栏由IDC表达式支持,所以可以使用一些IDC的函数。
比如:GetRegValue(“ZF”)
指当ZF的值不为0时中断

监视窗口

ida同样也支持对数据的监视,需要监视的数据一般在栈或者数据块中,进入栈或者数据,点击右键打开菜单,选择“Add watch”
ida使用技巧之动态调试即可在窗口“watch list”中显示,如果需要删除,则按“Delete”键
ida使用技巧之动态调试

3、远程调试

ida支持远程调试Windows、linux、Android、Mac OS的二进制文件,将文件放在远程的对应系统服务器上,ida远程连接服务器,在服务器上运行、调试程序,并在本地客户端显示调试界面。界面视图上和本地调试并没有区别。
如果需要远程调试,首先需要将ida的服务端部署在远程服务器上,ida的服务端存储在ida目录中的dbgsrv文件中
ida使用技巧之动态调试将需要调试的文件和服务端版本放入服务器中,然后运行服务端,会默认在23946端口启动ida服务端程序,以linux为例
被调试程序是64位elf文件,所以在linux端运行linux_server64,然后回到客户端
ida使用技巧之动态调试
客户端的第一步没什么变化,在菜单选择debugger栏,在选择debugger时,选择Remote Linux debugger
ida使用技巧之动态调试然后在菜单中先选择“Process option”进行设置
ida使用技巧之动态调试
打开后页面如下
ida使用技巧之动态调试第一行application和input file选择被调试文件在服务端中的存储路径。下面第三行的directory是存储路径,直接选被调试文件所在目录就行。再下面第四行的是程序启动时传入的参数,可以为空。第五行则“Hostname”则填服务端的ip和端口号,我这里选的服务端是虚拟机。最后一行的password是linux_server启动时设置的密码,如果没有设置,则为空即可。全部设置正确之后就可以开始调试了
点击“start process”开始调试程序

ida使用技巧之动态调试可以看到在服务端程序已经成功启动
ida使用技巧之动态调试

接下来的步骤和本地调试并没有什么区别不再赘述。其他安卓和Mac的文件远程调试也是大同小异,也不再多说了。文章来源地址https://www.toymoban.com/news/detail-455384.html

到了这里,关于ida使用技巧之动态调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Quartus 软件界面介绍与部分使用技巧

    内容太多,只能慢慢补充完善了~ 对一个软件的熟练掌握,不仅在于完成项目工程,还在于对一个软件的各个功能的位置与使用要熟稔于心(个人看法)。 默认打开的软件界面如下: 关掉所有能关闭的窗口,剩下的就是一个软件最基本的结构                       

    2024年01月17日
    浏览(35)
  • ida动态调试dll

    有时候会发现有的dll都是动态获取API,IDA静态分析看不了,因此利用IDA动态调试dll,当API获取完毕后保存,便于分析。 在debug窗口选定windows debug后,在Debugger菜单栏下的Process options里填写参数 第一行填写加载dll的exe路径,除了rundll32.exe,有文章说od下的loaddll.exe也是可以的,但

    2024年02月04日
    浏览(37)
  • IDA动态调试ELF文件

    IDA附带一些组件

    2024年02月14日
    浏览(38)
  • 使用接口调试软件(PostMan和APIPost)的技巧和注意事项(附加Get和Post请求区别)

    看完这篇文章,不仅能学会使用接口调试软件,还能 高效 的生成接口说明文档 首先,先来告诉各位Get请求和Post请求的区别 (记住:除了标注是Post的请求,其他都是Get请求) Get请求有: (1). form标签method=get (2). a标签 (3). Iink标签引入css (4). Script标签引入js文件 (5). img标签引入

    2024年04月12日
    浏览(47)
  • 【unity小技巧】委托(Delegate)的基础使用和介绍

    在Unity中,委托( Delegate )是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法,并在需要时调用这些方法。 委托在游戏开发中非常有用࿰

    2024年02月15日
    浏览(47)
  • 微服务服务间调用组件Feign使用介绍、原理、优化技巧

    Feign是一个声明式的Web Service客户端。它让微服务之间的调用变得更简单。Feign具有可插拔式的注解支持,包括Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注解的支持,并且也支持Spring WebFlux。 Feign可以与Eureka和Ribbon组合使用以支持负载均

    2024年02月06日
    浏览(77)
  • 异或运算的基本介绍以及使用技巧,剖析常见的异或题目

    异或运算,符号为‘^’,直接对底层二进制串进行运算,比算术运算快得多,规则为:相同为0,不同为1。 假设N为任意实数 性质1:0 ^ N = N 性质2:N ^ N = 0 性质3:异或运算满足交换律与结合律 重点:我们可以将异或运算理解为二进制的无进位相加!也就是说,当两个数异或

    2024年02月08日
    浏览(50)
  • 【一些随笔】浅析 Linux和Windows:系统介绍、操作差异与使用技巧解析

    Linux和Windows系统的操作差异; Linux系统介绍、系统监控和优化技巧、Shell脚本编程技巧、一些命令使用技巧; Windows系统介绍、优化和加速技巧、一些在Windows系统下常用的快捷键; 在使用Linux和Windows时,有一些事情可能在Linux上较为顺理成章,而在Windows上可能令人费解。比如

    2024年02月13日
    浏览(48)
  • Cisco使用技巧 路由器RIP协议用动态路由配网实例 计网知识_cisco rip配置

    Trunk 模式: Trunk 模式用于连接两个交换机或交换机与路由器之间的端口。Trunk 允许通过同一物理链路传输来自不同 VLAN 的数据帧。 Trunk 端口上的数据帧通常包含 VLAN 标签,以便在传输过程中区分不同 VLAN 的流量。 Trunk 允许更大的灵活性,因为它允许在同一链路上传输多个

    2024年04月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包