From:通过一个例子介绍IDA pro的简单使用 - 知乎

IDA pro 7.6 绿色便携版:http://www.ddooo.com/softdown/215615.htm

配置IDA使用Anaconda环境解决Please run idapyswitch to confirm or change the used Python runtime:https://www.pythonheidong.com/blog/article/1034670/2ecf46d7e5bc0c54991b/

通过一个简单的题来了解一下IDA的基本操作,题目是bugku的一个简单的逆向,Easy_re。

将题目下载下来,发现是一个exe可执行文件,先运行一下看看

有一些字符串提示,让你输入一个字符串,提示输入flag,随便输入几个字符,看一下有什么提示。

然后开始进入分析阶段,首先通过Detect It Easy这个软件查看一下程序的基本信息。

这一步我们主要想看一下程序时32位还是64位的,通过上图可以看到程序属于32位程序。然后我们通过IDA对程序进行分析,IDA是一个静态反编译软件,用来静态的分析软件,我们在32位的IDA中打开re1.exe(如果程序时64位的需要用64位的IDA打开),他会弹出弹窗,这里不用管,一路点“是(或者ok)”就行了,然后界面如下。

一进来,最大的那片区域为反汇编窗口,左边为函数窗口,在反汇编窗口按空格键,会在图形视图和列表视图之间切换。然后分析程序一般先从字符串入手,打开字符串窗口,View --> open subviews --> Strings,或者快捷键shift+F12

程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,可以看到运行程序时出现过的“DUTCTF”字符串,双击它找到他的位置

可以看到aDutctf字符串周围还有很多字符串,我们把它们都变成可显示字符,结果如下,由于本题比较简单,所以直接出现了flag。

当然,本文是为了介绍IDA的使用,所以我们继续往下分析,找到关键的字符串后,在字符串的位置,按快捷键x,查看程序在哪里引用了它,比如这道题没有给出flag,我们需要在提示信息处(也就是aDutctf的位置)按快捷键x,可以看到只有一处引用了它。

我们跟进去看一下,找到了引用它的位置,这一步是为了找到程序的主要逻辑在哪,因为有时候IDA可能分析不出函数名来,你就没办法通过左边的函数窗口定位程序的主要逻辑位置,也有可能程序的主要逻辑不在main函数里,在一个其他的函数里。

所以说,先运行程序,找到程序运行时出现的提示字符,然后定位提示字符出现的位置,用这样的方法来找程序的主要逻辑比较靠谱一些。

找到了关键位置后,发现是一堆汇编代码,看不懂怎么办?IDA的强大之处还在于他可以将分析的程序以伪代码的形式给出,快捷键为F5(不是所有程序都能以伪代码的形式显示,也不是所有函数都能以伪代码的形式显示,如果没办法显示伪代码,那只能刚汇编了),下一步就是分析程序的逻辑了,至于怎么分析,这里就不多赘述了。

在关闭IDA的时候他会提示你是否保存database,你可以选择保存,下次用IDA打开这个程序的时候可以加载这个数据库,里面保存了你上次的操作。

下面给出了一些常用的快捷键

参考:IDA Pro权威指南 (第2版)

加入极客方舟逆向新手群(365990646)

通过一个例子介绍 IDA pro 的简单使用相关推荐

  1. 通过一个例子来介绍OD的简单使用

    OllyDbg是一个32位的动态调试器,在平常做逆向的题中用的比较多,下面用bugku一个简单的例子Eazy-Re来介绍一下OllyDbg的使用. 首先打开程序,看一下是干什么的,他提示你输入flag ...

  2. 案例一: 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程。 首先用文本编辑器写一个C++源程序名为StackFrame.cpp ,代码如下:

    案例一: 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程. 首先用文本编辑器写一个C++源程序名为StackFrame.cpp ,代码如下: 1 ...

  3. Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

  4. 趣味python教程_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...

    原标题:Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 人生苦短,编程苦手,不妨学起Python, ...

  5. linux运行qt桌面生成pro怎么写,把桌面qt代码编译运行到qpe上的一个例子

    qt-x11版本是2.3.2 qt core版本是2.3.2 qtopia版本是2.2.x qt-x11版本安装目录下的tutorial目录下有一些例子.我把其中的t7目录下的程序(这是一个lcd数值 ...

  6. IDA Pro直接修改指令 ---以将jnz修改为jz为例子

    IDA Pro直接修改指令 ---以将jnz修改为jz为例子 理清程序的逻辑后,采用最简单的办法控制程序的执行路径--修改指令. 首先,通过菜单栏中Options/General/Disassembl ...

  7. 一个小例子介绍Obj-C的函数命名方式

    对于以前做C#或者JAVA开发的朋友而言,初次接触iOS开发,Obj-C的函数命名方式可能会感觉非常不习惯. 尤其是打开AppDelegate.m,映入眼帘的代码竟然是: - (BOOL)applic ...

  8. 交互式反汇编器专业版IDA Pro的一点介绍

    1.IDA的安装和版本 什么是IDA? IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以 ...

  9. 通过QEMU 和 IDA Pro远程调试设备固件

    0x00 背景与简介 这篇文章主要讲了如何在模拟环境下调试设备固件. 作者:Zach Cutlip 原文链接:http://shadow-file.blogspot.gr/2015/01/dynami ...

最新文章

  1. 数据派翻译组招募 | 寻找最志同道合的你!
  2. Spring Boot 2.0.5 配置Druid数据库连接池
  3. Android的ClassLoader知多少
  4. bzoj1045 糖果传递
  5. C++后端向JS前端转换
  6. zTree 优秀的jquery树插件
  7. 收藏 | 个人深度学习工作站配置指南
  8. MathType 在Word中的应用
  9. deepin linux 命令行_5 个面向新手的 Linux 发行版
  10. 思维导图软件列表(mind mapping software list)
  11. 三星android se,安卓小钢炮小米8 SE初体验!华为三星靠边站
  12. 【JavaWeb】(血泪踩雷史...)Token登录前后端交互及跨域问题
  13. NEFU锐格实验一[字符串]
  14. ZZULIOJ 1919 D
  15. bim翻模教程:如何控制revit中的填充图案和构件显示隐藏
  16. 证书颁发机构+NPS
  17. 前端引用高德地图SDK
  18. [差分 上下界最大流] SRM 694 div1 SRMDiv0Easy
  19. 【原创】机器学习一般流程总结
  20. 【第4期-智能驾驶汽车系列术语概念解析】第5节:龙格现象

热门文章

  1. 在Pivotal Web Service上发布Spring Boot应用
  2. Spring Cloud Zuul重试机制探秘
  3. 领域应用 | 美团商品知识图谱的构建及应用
  4. 腾讯-视频打标签算法探讨
  5. 百度作业帮-产品分析
  6. 一类新算法研究智能飞行器航迹规划问题
  7. jdk+Tomcat环境搭建
  8. VisualVM远程监控Java
  9. codeforces 264 B. Good Sequences(dp+数学的一点思想)
  10. spirng mvc 中使用验证码