从零开始的IDA逆向之路(一)

  • A+
所属分类:安全资讯
摘要

这个系列,是以Windows为主,而且主要的操作的平台是在win64上进行的。

从零开始的IDA逆向之路(一)

在开始文章之前呢,得先声明一下,这个文章是一个系列的,是从零基础开始介绍的,所以刚开始肯定是非常的基础,建议有过一些逆向经验的师傅们呢,可以跳过前面部分。为什么我会写这样一个系列的文章呢?这个系列的文章是我在学习了一些国外大佬的文章之后产生的想法。
一、是把国外的一些好的文章结合自己的理解和实际操作分享给大家
二、是分享一些我个人学习逆向和打比赛的经验吧
三、是想在这个暑假做一些有意义的事情,因为一些原因没去公司实习。
废话不多说,进入正题。
这个系列呢,是以Windows为主,而且主要的操作的平台是在win64上进行的。

 

为什么要学IDA呢?

相信大家对Windows下的OllyDBG已经不陌生了吧,功能本身就十分强大,再加之国内国外大佬对其修改和完善,酷炫的界面和牛逼的插件把它打造成了屠龙刀。但是它还是有很多局限性的。就其所支持的平台而言,它仅仅是一个Windows下的32位调试器。但是IDA就不一样了,多平台多架构的支持,它可以运行在 Windows, Linux or Mac OS X,而且支持32位或64位下的静态分析和动态调试,甚至可以远程调试。IDA可支持的远程调试器列表如下:

从零开始的IDA逆向之路(一)

可支持的处理器列表如下:
从零开始的IDA逆向之路(一)

既然IDA这么强大,为什么不好好学习一波呢?
文章会涉及到:用IDA进行静态分析和动态调试、破解、漏洞利用、脱壳、以及IDAPython、IDC脚本相关

 

了解IDA基本界面

跟大家学习OD的时候一样,要先基本了解下IDA的基本界面。
有一件事情非常重要:首先你得要有IDA! 你得要有IDA! 你得要有IDA! 重要的事情说三遍!虽然IDA是商用的软件,但是网络上有泄露出来的可用版本,最新的是IDA7.0 没有的话可以去吾爱或者看雪论坛下载。
我个人使用的是IDA7.0
IDA怎么安装的我就不多说了。
PS:安装IDA的时候会安装对应的IDAPython,当然你也可以自己装python但是请注意一定要安装IDA所对应版本的。不然以后想要安装一些扩展库的时候,会折腾死你的

从零开始的IDA逆向之路(一)

装好了IDA之后,拖一个Crackme,尝尝鲜。

在这之前先教大家怎样判断可执行文件的位数

  • 试运行,看任务管理器,可以得到位数
    从零开始的IDA逆向之路(一)
  • 通过十六进制编辑器看PE标识后的字符
    32位程序:
    从零开始的IDA逆向之路(一)

    64位程序:
    从零开始的IDA逆向之路(一)

    这个小技巧其实是PE结构的东西。
  • 直接使用IDA进行判断
    因为ida有自动识别可执行文件平台和位数的模块。后面再讲。

事先知道程序的位数的话,选择对应的IDA版本,然后才可以反编译,可以在一定程度上减轻我们的工作量

用IDA加载程序

由于这个CrackMe是32的所以选择32位版本的进行加载。

从零开始的IDA逆向之路(一)

打开之后回来到这样的欢迎界面:
从零开始的IDA逆向之路(一)

你可以new后选择文件,也可以go后直接把要逆向的文件拖到窗口里
然后ida自动调用对应的分析模块进行分析显示出结果:
从零开始的IDA逆向之路(一)

386就代表的是32位,x64就代表的是64位,可以通过这样一种方式去判断自己的位数是否设置正确。
然后一路默认ok就行。
加载后,会显示这样的界面:
从零开始的IDA逆向之路(一)
这个界面叫做Graph模式可以清晰的看到程序的执行流。
如果想转换到文本模式可以按空格
还可以在 OPTIONS – DEBUGGING OPTIONS -LINE PREFIXES中把每个指令的地址给加载上去:
从零开始的IDA逆向之路(一)
然后可以看到地址
从零开始的IDA逆向之路(一)

加载完程序之后默认打开的是反汇编的界面,IDA加载器只是分析了可执行程序之后,生成了idb的数据库文件而已

如果要调试的话,必须得指定好对应的调试器,然后运行在调试模式下,这个后面的文章会介绍的

IDA有十分多的窗口和选项,你比如说:VIEW-OPEN SUBVIEW 这个东西可以控制我们想要显示那些窗口。

在一开始使用IDA的时候,我们可能不太适应在打开了graph模式下显示地址后,有一部分内容的地址是一样的:

从零开始的IDA逆向之路(一)
处理的技巧就是只看最后一个就行,也就是说0x40100处的push 0才是程序真正的开始
在IDA当中,你甚至可以个性化你自己的加载器或者调试器的界面。
比如说,你在设定好了直接的一些个性界面之后,就可以通过:
WINDOWS-SAVE DESKTOP 选项将它保存并设置为默认的选项。
从零开始的IDA逆向之路(一)
调试器的设置也类似。

在IDA当中也有很多的各种列表和窗口,比如函数、字符串、结构体等等

从零开始的IDA逆向之路(一)
我们可以在这些列表当中使用CTR +L进行搜索,在逆向的过程中去搜索我们想要的东西
在VIEW- OPEN SUBVIEW-STRINGS的窗口中我们可以看到这个程序使用的所有字符串,相当于OD的字符串参考
从零开始的IDA逆向之路(一)
当我们在逆向的时候我们可能要同时看多个部分的汇编代码,这个时候我们可以通过:VIEW-OPEN SUBVIEW-DISASSEMBLY来打开多个反汇编的窗口,也就不会很麻烦的一上一下的去看了。
从零开始的IDA逆向之路(一)
在OPEN-SUBVIEW里边还有一个常用的hexdump窗口,一般情况下都是默认打开的,相当于把可执行文件以16进制的形式打开:
从零开始的IDA逆向之路(一)

在OPEN—SUBVIEW中我们可以打开导入表,来查看这个可执行文件导入的函数:

从零开始的IDA逆向之路(一)
一般情况下也是默认打开的,只要在那个标题栏的都是默认打开的。

左下角还有一个Graph view的窗口这个窗口相当于一个图形界面的文件浏览器,只不过是用于IDA Graph的。通过它我们可以控制graph模式窗口显示的位置,在分析大程序流的程序时这个窗口也十分的有用。

从零开始的IDA逆向之路(一)
当然还有一些窗口没有给大家介绍到,比如说:Segments、String、Structs窗口等因为上面所说的十分很重要,所以在此先介绍,后续我会在用到他们的时候再给大家做介绍。

从零开始的IDA逆向之路(一)
顶部的有不同颜色的状态栏也是导航用的。
因为他下面的反汇编界面中,不同的颜色,也代表着不同的含义,绿色代表:.data section
从零开始的IDA逆向之路(一)
通过鼠标点击我上面介绍的颜色状态栏的对应颜色部分,就可以导航到对应的部分去。
粉色的是:External Symbol idata section
蓝色的是:code section

本系列的第一篇就这样吧,后续的会逐步讲解更多的东西

参考:《IDA权威指南》

CrackMe:下载链接

本文来源于360安全客,原文地址:https://www.anquanke.com/post/id/152610

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 匿名 0