在传统的软件开发模型中,通过编译器、汇编器和链接器中的一个或几个创建可执行程序。为了回溯编程过程(对程序进行逆向工程),使用各种工具撤销汇编和编译过程,这些工具就叫做反汇编器和反编译器。反汇编器撤销汇编过程,可以得到汇编语言形式的输出结果;反编译器则以汇编语言甚至是机器语言作为输入,将高级语言结果输出。

但是反编译有几点困难至今还没有完美解决:编译过程造成损失;编译属于多对多操作;反编译非常依赖语言和库。

反汇编算法:线性扫描(linear sweep)和递归下降(recursive descent)两种主要的反汇编算法。

线性扫描:反汇编从第一个代码段的第一个字节开始,以线性模式扫描整个代码段,逐条反汇编每条指令,直到遍历全部字节。此方法对于长度固定的指令集(MIPS)反汇编会更加容易,因为可以方便的的定位到随后的指令。缺点就是无法正确的将嵌在代码中的数据分离出。

递归下降:根据一条指令是否被另一条指令引用来决定是否对其进行反汇编。

交互式反汇编器专业版,常常称其为IDA Pro,属于递归下降反汇编器。上周看书有一些心得,在这里一篇篇分享一下。

1.为了准备逆向用的实例,先用VC生成一个release版的Hello World。

#include <windows.h>
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{MessageBox(NULL, "IDA Pro", "IDADemo", MB_OK);ExitProcess(0);
}

2.打开IDA 6.1,为进入IDA界面提供三种选项,分别是New(新建),Go(运行),Previous(上一个)。

3.对于没有进行过逆向分析的,点选New,新建一个工程,进入IDA界面。

4.选择File菜单下的Open,打开想要逆向的可执行文件,会显示一个Load a new file的界面。

这里可以选择

(1).程序的类型;

(2).处理器的类型;

(3).加载的段地址和偏移量;

(4).是否允许分析;

(5.)一些加载选项;

(6).内核和处理器的一些选项;

(7).windows系统dll所在的目录。

默认选择PE文件就可以,对于一些网络数据包或者其他格式的文件,可以使用二进制加载,自己进行解析。

5.加载完毕之后就进入逆向工作界面了。

6.初始是图形视图,有一个Graph overview窗口,可以在里面用鼠标拖动定位到程序的某个位置。也可以在IDA View-A中点右键选择Text view改成文字视图,这样能看到段和偏移量,快捷切换为空格键。

7.整个界面内容很丰富,但是一开始使用不到这么多功能,把不用的子窗口关闭。

工作区有多个子窗口,IDA View-A是反汇编窗口,HexView-A是十六进制格式显示的窗口,Exports是导出表(这个程序中能让外面调用的函数),Imports是导入表(程序中调用到的外面的函数),Functions是函数表(这个程序中的函数),Structures是结构,Enums是枚举。

8.IDA很智能,鼠标移到某些标识符上会自动有适当的提示,双击还能自动跳到相应的位置。把一个函数逆向的方法很简单,只要按F5键就会出来逆向出的C语言程序了。

9.退出IDA时,会进行文件保存确认,如果需要继续进行分析,将IDA中间数据库打包,下次继续打开就可以进行分析;如果不需要继续分析,选择不要打包,不要存储数据库。

IDA打开应用程序时,会为其创建一个数据库,后缀为IDB。IDB由4个文件组成,后缀为id0的二叉树形式的数据库,后缀为id1的程序字节标识,后缀为nam的Named窗口的索引信息,后缀为til的给定数据库的本地类型定义的相关信息。

一旦IDA为某个可执行程序创建数据库,它本身就不再需要访问这个可执行文件,除非使用IDA的Debug功能。

PS:更多的内容,后续持续更新。

IDA使用初探-1.启动IDA相关推荐

  1. ida调试linux程序,[原创]IDA动态调试ELF

    0x00:环境 待调试ELF文件 IDA 7.0 主机:Windows 虚拟机:Linux 达成效果:在Window上利用IDA远程动态调试linux里的ELF文件 0x01:Unbuntu里运行ID ...

  2. 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )

    文章目录 一.使用 IDA 打开动态库文件 二.IDA 中查找指定的方法 一.使用 IDA 打开动态库文件 分析 Android SDK 中的 x86 架构的动态库 , 动态库位置 : D:\001_ ...

  3. 在Linux上安装IDA的命令,Linux安装IDA神器

    [Phylab2.0]Alpha版本项目展示 团队成员 冯炜韬(PM)http://www.cnblogs.com/toka 岳桐宇(后端)http://www.cnblogs.com/mycraft ...

  4. Linux中安装IDA

    文章目录 前言 一.安装wine 二.配置使用命令执行ida ida ida64 总结 前言 太苦了,要我搭做pwn题的环境只给我一台kali,没办法,只得学着去怎么把IDA装到Linux上 一开始尝 ...

  5. 安卓APP动态调试-IDA实用攻略

    0x00 前言 随着智能手机的普及,移动APP已经贯穿到人们生活的各个领域.越来越多的人甚至已经对这些APP应用产生了依赖,包括手机QQ.游戏.导航地图.微博.微信.手机支付等等,尤其2015年春节期 ...

  6. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

  7. IDA动态调试技术及Dump内存

    IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...

  8. 【Android 逆向】IDA 安装 ( 使用 IDA 分析 so 动态库 )

    文章目录 一.IDA 安装 二.使用 IDA 分析 so 动态库 一.IDA 安装 启动 IDA 安装程序 , 开始安装 IDA ; 同意用户协议 ; 输入密码 ; 选择安装位置 ; 创建桌面图标 ; ...

  9. ida动态调试apk(so层)

    文章目录 查看所有设备 在IDA里面找到android_server(dbgsrv目录) 提权 运行android_server服务端进行监听 端口转发 打开DDMS:观察程序的端口号 打不开moni ...

最新文章

  1. 设置python编程环境_JupyterNotebook设置Python环境的方法步骤
  2. 【我所认知的BIOS】—gt; uEFI AHCI Driver(5) — 第一个protocol最终要開始安装了
  3. ServletContextListener 解析用法
  4. 开始做在线拍照功能了
  5. perl中替换文本一例
  6. WORD如何比较原文档和别人修改过的文档?
  7. 如何用excel做正交分析_使用Excel进行有交互作用的正交设计方差分析
  8. docker安装之升级win10专业版
  9. CentOS 7 搭建邮件服务器搭建(postfix+dovecot)
  10. 心理传染与恐怖的“模仿者效应”
  11. 【双足轮机器人】Ascento技术详解--(1)摘要和引言(2)系统描述【翻译】
  12. C#_打包发布变成一个绿色版本软件——Costura.Fody合并DLL和EXE
  13. 期货开户客户经理一对一专业服务指导
  14. python pil模块
  15. 2012清明北京---泰山踏青
  16. 通过iscsi协议使用ceph rbd
  17. 大一c语言实验报告运行结果,大一c语言实验报告
  18. MIT6.830-2022-lab4实验思路详细讲解
  19. 第一代社交机器人已死:商业模式错误还是生不逢时?
  20. HybridAPP框架MUI(跨平台移动端应用开发)

热门文章

  1. 基本函数画图软件(直接下载,一元二次方程图像,幂函数图像,指数图像,三角函数图像,反三角函数图像)
  2. OpenFeign 夺命连环 9问
  3. Scrum立会报告+燃尽图(Final阶段第七次)
  4. linux 画面好 游戏,2017年13款画面最优秀的游戏!极致画面美到惊叹
  5. Tushare如何获取股票历史交易数据
  6. 【“笨办法”学Python】42.对象、类及从属关系——类即是对象
  7. 【算法基础六】敲代码遇到VScode多行与单行注释的快捷操作
  8. 动手学深度学习(三十九)——门控循环单元GRU
  9. 计算机毕业设计-校园疫情防控系统【PHP源码】
  10. 7款免费发短信软件,看看哪一款适合你