• [IDA教程]01-从零开始用IDA做逆向-判断PE文件是32位还是64位、选项卡介绍


    0x01、IDA是什么

    交互式反汇编器专业版(Interactive Disassembler Professional)简称为IDA。IDA Pro是一款支持交互、可编程的、扩展插件、支持多种处理器的逆向工程利器。

    0x02、为什么要用IDA Pro?

    为什么要用IDA?因为OD是一个只能调试32位程序的调试器。而IDA Pro可以调试32位、64位的程序。除了可以静态反汇编程序,还支持作为调试器对程序调试。

    中国人逆向喜欢用OllyDbg:https://ti.360.net/blog/articles/suspected-molerats-new-attack-in-the-middle-east-en/

    国外专家Vitali Kremez喜欢用OllyDbg+IDA:https://www.vkremez.com/2018/12/lets-learn-dissecting-apt28-zebrocy.html

    IDA支持不同的操作系统环境(例如Windows,Linux或Mac OS X)上运行,也支持远程调试:

    IDA支持的微处理器体系结构列表:

    0x03、判断程序是32位还是64位

    因为crackme.exe是一个32位可执行文件,所以要使用32位IDA版本打开。判断EXE文件是32位还是64位,有很多方法。

    PE文件里的NT头->FileHeader->machine这个字段声明PE是哪个平台下运行的,比如32位程序内容是I386 (14Ch)。

    struct IMAGE_NT_HEADERS NtHeader
    struct IMAGE_FILE_HEADER FileHeader
    enum IMAGE_MACHINE Machine
    

    识别比较快的方法是看PE字段后面跟着的值,以PE后面跟着的字母为例:PE..d†字样后的符号是一个64位文件。而crackme.exe的PE之后是:PE..L,所以这是一个32位文件:

    0x04、IDA逆向程序-选项卡介绍

    打开Crackme。选择“ new”打开一个新文件,会自动识别PE文件的类型:

    默认设置单击 “OK”,如果同意显示 ”Proximity View”模式会显示出图形化的界面,在树形模型下显示出Crackme里的函数信息,可以很直观的看出来程序跳转的关系。:

    • 使用快捷键(空格键),可以在图形模式(*Graph*)或普通文本模式之间切换。
    • 在“ Options(选项) - General(常规)”,选中“ Line prefixes(行前缀)”可以显示跟内存地址有关的更多信息。选中“Number of opcode bytes(操作码字节数)”,可以显示操作码。

    • 访问View-Open Subview,可以打开特定功能的选项卡。

    在IDA的图形屏幕上会看到许多具有相同地址的位置。例如在开始(start)函数,地址会重复很多次。因为这条地址的信息很多,多到同一条地址上显示不完。

    找到重复的同一地址结尾。在这种情况下对应地址00401000的反汇编指令为push 0

    通过“Windows-Save Desktop"设置了常用的窗口和选项卡:转到Windows-Save Desktop,然后选择“ Default ”保存默认配置。

    在IDA选项卡上,例如FunctionStringsNames等。可以用快捷键按CTRL + F搜索。View-Open Subview-Strings中,IDA会根据搜索关键字显示出有“ try”的字符串,如下图所示:

    • 选择View-Open Subview-Disassembly,可以打开第二个反汇编窗口,之后还可以使用第一个反汇编窗口访问其他功能,让分析人员方便分析程序的其他功能。与OllyDbg / x64dbg相比起来,这是IDA的优势:

    IDA还提供类似于OllyDBG / x64dbg的“Dump”(十六进制显示窗口)。在IDA中这样的窗口称为“ Hex View”。可以通过View(视图)-Open Subview(打开子视图)-Hex dump(十六进制转储)显示:

    Open Subview中,还可以通过Imports选项卡访问跟程序导入函数有关的信息,如下所示:

    左下角看到另一个叫“ Graph overview”的小屏幕(如果没有可以通过“View(视图)-> Graph Overview(图形概述)”的位置打开)。这个窗口显示了正在分析的功能代码块,可以让分析人员快速地在代码块之间来回移动。

    IDA还其他很有用的选项卡,例如“ Structures”,“ Exports”,“ Names”,“Segments ”等。顶部导航栏(navigator)用不同的颜色显示出文件的不同部分。

    描述性信息每种颜色都有含义,例如,灰色是.data部分,粉红色对应外部符号idata部分和蓝色字体对应在代码部分检测到的功能。

    0x05、参考

  • 相关阅读:
    Vue 环境配置
    Vue-think脚手架
    搭建vue环境网站
    数组 还是 字符串
    javascript jquery console调试方法说明
    获取 stoken 或者id MVC写法
    它山之石
    Android学习笔记_44_apk安装、反编译及防治反编译
    (转)超级实用且不花哨的js代码大全
    Android学习笔记_43_网络通信之文件断点上传
  • 原文地址:https://www.cnblogs.com/17bdw/p/12239505.html
Copyright © 2020-2023  润新知