IDA理念
这是我们在开发产品时竭尽全力遵循的理念——在此过程中,我们相信我们将开发出能够为您带来所需的可靠性、便利性和易用性的软件。
没有什么能打败人脑
因为我们知道一秒钟的洞察力仍然胜过百年的处理时间,所以 IDA 反汇编器提供了尽可能多的交互性。实际上,反汇编中的任何内容都可以修改、操作、重新排列或重新定义。
静态拆解受限
仅仅静态反汇编并不能说明全部情况。加密或混淆代码经常出现在当今的恶意代码中;代码和数据之间的确切区别是一门艺术而不是一门科学。 IDA 反汇编器的交互性得到了内部脚本语言、Windows 应用程序/内核调试器、Linux 应用程序调试器、80×86 Mac OS X 应用程序调试器(支持 32 位和 64 位)等等的补充……
必须珍惜创新
作为为我们的产品创建新插件的额外奖励,我们举办了一年一度的插件竞赛。有用的公共插件的创建者可以获得现金奖励。我们还在名人堂页面上公布了这些名字。
时间是本质
汇编语言向导只看几个操作码就知道程序目的的日子已经一去不复返了。今天的病毒和蠕虫通常是用高级语言编写的。由于我们独特的 FLIRT 技术和我们先进的堆栈跟踪功能,IDA 反汇编器的工作方式尽可能接近原始源代码。
你最清楚
我们是反汇编器和调试器专家,但您才是真正工作的人。您比我们更了解您需要什么。这就是 IDA SDK 允许您根据您的特定需求扩展和定制 IDA 的原因。
安全是我们的重中之重
我们希望我们的用户在使用我们的工具时是安全的。这就是为什么除了内部测试、代码审查和安全编码实践之外,我们还引入了错误赏金计划。报告我们软件中严重错误的报告者可以获得现金奖励。这样,我们软件中的漏洞就会直接报告给我们。当然,我们会立即做出反应并尽快发布热修复。
解决方案
Hex-Rays 工具用于解决软件行业中的关键问题。
我们的旗舰产品 IDA Pro 是一款流行但复杂的软件。 我们经常被问到,IDA 到底是干什么用的? 这是一个公平的问题,并不容易回答。 IDA 拥有非常广泛的复杂用例,这些用例无法用一个引人入胜的单行代码来概括。
因此,与其提出描述 IDA 的销售宣传,我们决定让我们的用户来说话。 以下是来自各种安全专家、恶意软件分析师和软件工程师的示例,他们使用 IDA 解决工作流程中的一个关键问题,并决定发布他们的结果。 我们收集了此类出版物的各种链接,并将它们归入软件行业的各个细分领域。 希望这可以让您更轻松地了解 IDA 如何应用于该领域的实际解决方案。
数字取证
挑战
当系统被恶意软件破坏时,就会进行数字取证调查。如果发生基于软件的攻击,公司通常会派遣专门的计算机应急响应小组 (CERT) 来消除威胁、评估损害程度并了解攻击是如何实施的,以防止将来发生类似事件。这些团队必须从计算机、移动设备、网络设备甚至分布式系统中收集数字证据。因此,它们必须能够处理多种二进制代码格式。在许多情况下,代码被混淆,目的是使调查更难、更耗时。法医调查人员需要精确且多功能的工具来帮助他们完成这些任务。
方法
IDA Pro 可以分析在取证调查期间收集的二进制代码。它几乎可以处理在现代处理器上运行的任何代码,并且可以使用自定义脚本和插件扩展其功能。这使得它在分析严重混淆的代码时特别有用。 IDA 已经在现场针对真实世界的恶意软件进行了无情的实战测试,这使其成为许多 CERT 组织的首选工具。
渗透测试
挑战
为了加强安全性,软件开发人员有强烈的动机攻击他们自己的软件。一般的理念是,最好自己主动发现安全漏洞 - 在其他人发现并恶意使用它来对付您的客户之前。安全审计可以由公司内的专业团队或第三方顾问执行,但它们几乎总是需要像 IDA 这样的工具的精确性。
方法
可以更主动地使用 IDA 来检测关键任务软件中的可利用漏洞。通常这涉及识别负责处理用户输入的逻辑,然后积极分析逻辑错误。通常,从原始机器代码反编译软件时更容易发现此类错误,因为在编写原始源代码时,它没有懒惰的程序员所做的任何偏见或假设。安全审计员知道要寻找什么样的错误,它们可能是极其有害的。
知识产权
挑战
知识产权是许多公司的重要资产。 虽然是无形的,但它通常代表公司最重要的财产。 知识产权可以有多种形式,包括版权、专利、商标和商业秘密。 任何侵犯或侵犯知识产权的行为都对许多公司的生存构成严重威胁。 对于软件 IP,发现和证明此类违规的任务是一项挑战。 我们的社会不仅需要手动工具,还需要自动工具来完成这项任务。
方法
IDA Pro 非常适合这项任务,因为它可以用作开发自动系统以查找侵犯版权、知识产权盗窃和专利侵权的基础。 手动检查也仍然可用。
动态分析与调试
挑战
反汇编计算机程序可以揭示其行为的大量信息,但有许多方法可以限制原始反汇编的有用性。 恶意软件作者积极尝试使他们的可执行文件在被分析时看起来无害,然后在实际执行时表现得大不相同。 由于不可预见的情况,即使是精心设计的非恶意程序也可能在运行时出现故障。 分析师和工程师依赖于允许他们在代码运行时观察代码的工具。 很多时候,这是理解和解决问题的唯一方法。
方法
IDA Pro 可以调试所有主要桌面平台(Windows、Linux、Mac)、移动平台(iPhone、Android)和模拟器(QEMU、Bochs)上的应用程序。 即使是鲜为人知的基于 MIPS 或其他处理器的嵌入式系统,我们的调试器也可以处理它。 IDA Pro 自带十种不同的调试器。 当然,它们都是可配置的、可编程的和可扩展的。
汽车安全
挑战
现代汽车正在滚动软件生态系统。他们现在更依赖于在微控制器上运行的固件,而不是像过去那样的纯硬件。汽车现在可以包含 70 多个电子控制单元 (ECU),每个电子控制单元都有自己的专用固件。 ECU 可以负责发动机、驾驶控制、信息娱乐、导航和跟踪系统——其中一些可能连接到蜂窝网络。所有这些代码都有潜在的错误、漏洞或隐藏/不需要的功能。所以“智能汽车”的概念是个好主意,但对某些人来说,“智能”只是意味着“可破解”。汽车行业必须对驱动其车辆的软件(字面意思)具有可见性,尽管其日益复杂。被忽视的缺陷可能会产生严重的后果。
方法
IDA 可以作为现代车辆逻辑基础设施的入口点。在许多情况下,可以对原始 ECU 固件进行逆向工程,例如确定传感器的读取方式或发动机的控制方式。 IDA 是执行此任务的最佳工具,因为它支持 ECU 中使用的所有主要处理器系列。即使没有完整的文档、源代码或调试符号,IDA 也可以逐步了解固件行为。
互操作性
挑战
信息很少在应用程序内部严格生成和使用。 现代计算机与其他计算机交换信息,将信息存储在磁盘或云中。 通常,使用的数据格式是未记录的,但可能需要与应用程序交互或提取其数据。 例如,要从过时的软件中提取数据,我们需要知道使用的格式。 或者要取下僵尸网络,我们可能需要知道它的网络协议,以便向它感染的僵尸计算机发送命令。
方法
为了处理异国情调的文件格式,IDA Pro 可以使用定制的“加载器”轻松扩展,并使数据从 UI 中可用。 当谈到逆向工程网络协议时,人们通常会将 IDA Pro 与数据包捕获工具(例如 Wireshark)配对。 由于分析流量并匹配其在客户端或服务器端代码中的使用,协议的发现将加快。
软件评估
挑战
非恶意软件的内部运作有时值得研究。 分析师需要清楚了解日常使用的软件(操作系统、驱动程序、第三方应用程序等)。 通常,商业软件的内部细节没有记录在案,但有正当理由对其进行检查。
方法
IDA 支持桌面、移动和嵌入式设备中使用的所有主要架构。 它可用于反汇编带有或不带有调试信息的二进制文件。 使用 FLIRT 和 Lumina 等内置功能,可以识别众所周知的或库函数。 BinDiff 或 Diaphora 等第三方插件允许查找二进制版本之间的差异以识别更改、修复甚至后门。
教育
挑战
逆向工程需要大量的经验、培训甚至直觉。 但是如果没有合适的工具,即使是最熟练的逆向工程师也会花费大量时间来执行最乏味的任务,甚至无法发现关键的信息位。
方法
IDA Pro 是教授二进制分析的完美工具:它速度快、功能强大且易于使用,支持开箱即用的大多数处理器和文件格式,甚至可以作为教育免费许可证供机构使用。 发现 IDA Pro 被世界各地的大学、在线或离线课程、培训和研讨会等使用也就不足为奇了。
支持的处理器
支持的处理器/操作系统/文件格式组合的列表非常大,很难一一列举。 请查看我们的图库,其中包含大量处理器的反汇编示例。
IDA 家庭版
IDA Home 有 5 个版本,每个版本都支持常见的处理器系列之一:
x86/x64
ARM/ARM64
MIPS/MIPS64
PowerPC/PPC64
Motorola 68K/Coldfire
IDA专业版
IDA 专业版支持下列处理器。 我们的免费 SDK 中提供了一些处理器模块的源代码。
?AMD K6-2 3D-Now! extensions
?32-bit ARM Architecture versions from v3 to v8 including Thumb, Thumb-2, DSP instructions and NEON Advanced SIMD instructions.
oARMv4 / ARMv4T: ARM7 cores (ARM7TDMI / ARM710T / ARM720T / ARM740T), ARM9 cores (ARM9TDMI / ARM920T / ARM922T / ARM940T)
oARMv5 / ARMv5TE / ARMv5TEJ: ARM9 cores (ARM946E-S/ ARM966E-S/ ARM968E-S/ ARM926EJ-S/ ARM996HS), ARM10E (ARM1020E / ARM1022E / ARM1026EJ-S)
oARMv6 / ARMv6T2 / ARMv6Z / ARMv6K: ARM11 cores (ARM1136J(F)-S / ARM1156T2(F)-S / ARM1176JZ(F)-S / ARM11 MPCore)
oARMv6-M: Cortex-M0 / Cortex-M0+ / Cortex-M1 (e.g. NXP LPC800/LPC1xxx, Freescale Kinetis L and M series, STM32 F0 series etc.)
oARMv7-M: Cortex-M3 (e.g. NXP LPC17xx/18xx/13xx, STM32 F1/F2/L1 series, TI Stellaris, Toshiba TX03 / TMPM3xx etc.)
oARMv7E-M: Cortex-M4 (e.g. NXP LPC43xx, STM32 F3/F4 series, TI Stellaris LM4F, Freescale Kinetis K series and W series, Atmel AT91SAM4 etc.)
oARMv7-R: Cortex-R4(F)/Cortex-R5/Cortex-R7 (e.g. TI TMS570LS etc.)
oARMv7-A: Cortex-A5 / Cortex-A7 / Cortex-A8 / Cortex-A9 / Cortex-A12 / Cortex-A15 (e.g. TI Sitara, TI OMAP series, Samsung S5PC100 and Exynos, Nvidia Tegra, Freescale i.MX, Allwinner A-Series and many others)
oARMv7 (custom): Apple A4/A5/A5X/A6/A6X (Swift microarchitecture, used in Apple’s iPhone/iPod/iPad/AppleTV), Qualcomm Snapdragon [Note: this list is incomplete; code for any ARM-compliant core can be disassembled]
?ARC (Argonaut RISC Core)
?ATMEL AVR (comes with source code)
?DEC PDP-11(comes with source code)
?Fujitsu FR (comes with source code)
?GameBoy
?Hitachi/Renesas H8/300, H8/300L, H8/300H, H8S/2000, H8S/2600, H8SX (comes with source code)
H8/330, H8/322, H8/323, H8/325, H8/326-329, H8/336-338, H8/350, H8/3048F, H8/3202, H8/3212, H8/3214, H8/3216, H8/3217, H8/3256, H8/3257, H8/3292, H8/3294, H8/3296, H8/3297, H8/3315, H8/3318, H8/3334Y, H8/3336Y, H8/3337Y, H8/3337YF, H8/3394, H8/3396, H8/3397, H8/3534, H8/3434, H8/3434F, H8/3436, H8/3437, H8/3437F, H8/3522
H8/3612, H8/3613, H8/3614, H8/3712, H8/3713, H8/3714, H8/3723, H8/3724, H8/3725, H8/3726, H8/3812, H8/3813, H8/3814, H8/3833-37, H8/3875, H8/3876, H8/3877, H8/3924, H8/3925, H8/3926, H8/3927, H8/3945-47
H8/3002, H8/3040-3042, H8/3003, H8/3030-32, H8/3048, H8/3070, H8/3071, H8/3072
H8S/2246, H8S/2245, H8S/2244, H8S/2243, H8S/2242, H8S/2241, H8S/2133, H8S/2144F, H8S/2357F, H8S/2143, H8S/2142F, H8S/2345F, H8S/2343, H8S/2341, H8S/2237, H8S/2235, H8S/2233, H8S/2227, H8S/2225, H8S/2223, H8S/2240, H8S/2242, H8S/2350, H8S/2352, H8S/2340, H8S/2355, H8S/2353, H8S/2351, H8S/2134F, H8S/2132F
H8S/2655R, H8S/2653R, H8S/2655
?Hitachi H8/500 (comes with source code)
?Hitachi HD 6301, HD 6303, Hitachi HD 64180
?INTEL 8080
?INTEL 8085
?INTEL 80196 (comes with source code)
?INTEL 8051 (comes with source code)
?INTEL 860XR (comes with source code)
?INTEL 960 (comes with source code)
?INTEL 80×86 and 80×87
?INTEL Pentium family, including SSE, SSE2, SSE3, SSE4
?Java Virtual Machine (comes with source code)
?KR1878 (comes with source code)
?Microsoft .NET (Common Language Infrastructure bytecode)
?Mitsubishi MELPS740 or Renesas 740 (comes with source code)
?Hitachi/Renesas M16C
?MN102 (comes only with source code)
?MOS Technologies 6502 (comes with source code)
?Motorola/Freescale MC680xx, CPU32 (68330), MC6301, MC6303, MC6800, MC6801, MC6803, MC6805, MC6808, HCS08, MC6809, MC6811, M68H12C, ColdFire
?Motorola MC6812/MC68HC12/CPU12
?Freescale HCS12, HCS12X (including XGATE coprocessor)
?NSC CR16 (comes only with source code)
?NEC V850 series (including V850E1, V850E1F, V850ES, V850E2, V850E2M) (comes with source code)
?Renesas RH850 series (RH850G3K, RH850G3M, RH850G3KH, RH850G3MH) (comes with source code)
?EFI Byte Code (EBC) (comes with source code)
?SPU (Synergistic Processing Unit of the Cell BE) (comes with source code)
?MSP430, MSP430X (comes with source code)
?PIC 12XX, PIC 14XX, PIC 18XX, PIC 16XXX (comes with source code)
?Rockwell C39 (comes only with source code)
?SAM8 (comes with source code)
?SGS Thomson ST-7, and ST-20 (comes with source code)
?TLCS900 (comes only with source code)
?unSP from SunPlus
?Sony SPC700
?Philips XA series (51XA G3)(comes with source code)
?Intel xScale
?Z80, Zilog Z8, Zilog Z180, Zilog Z380 (comes with source code)
?x64 architecture (Intel x64 and AMD64)
?ARM64 Architecture (aka AArch64)
oARMv8-A: Cortex-A50/Cortex-A53/Cortex-A57
oARMv8 (custom): Apple A7 (Cyclone microarchitecture, used in iPhone 5s)
?Analog Devices AD218x series (ADSP-2181, ADSP-2183, ADSP-2184(L/N), ADSP-2185(L/M/N), ADSP-2186(L/M/N), ADSP-2187(L/N), ADSP-2188M/N, ADSP-2189M/N)
?Dalvik (Android bytecode, DEX)
?DEC Alpha
?DSP563xx, DSP566xx, DSP561XX (comes with source code)
?TI TMS320C2X, TMS320C5X, TMS320C6X, TMS320C64X, TMS 320C54xx, TMS320C55xx, TMS320C3 (comes with source code)
?TI TMS320C27x/TMS320C28x
?Hewlett-Packard HP-PA (comes with source code)
?Hitachi/Renesas SuperH series: SH1, SH2, SH3, Hitachi SH4 (Dreamcast), SH-4A, SH-2A, SH2A-FPU
?IBM/Motorola PowerPC/POWER architecture, including Power ISA extensions:
oBook E (Embedded Controller Instructions)
oFreescale ISA extentions (isel etc.)
oSPE (Signal Processing Engine) instructions
oAltiVec (SIMD) instructions
oHypervisor and virtualization instructions
oAll instructions from the Power ISA 2.06 specification (Vector, Decimal Floating Point, Integer Multiply-Accumulate, VSX etc.)
oCell BE (Broadband Engine) instructions (used in PlayStation 3)
oVLE (Variable Length Encoding) compressed instruction set
oXenon (Xbox 360) instructions, including VMX128 extension
oPaired Single SIMD instructions (PowerPC 750CL/Gekko/Broadway/Espresso, used in Nintendo Wii and WiiU)
?Motorola/Freescale PowerPC-based cores and processors, including (but not limited to):
oMPC5xx series: MPC533 / MPC535 / MPC555 / MPC556 / MPC561 / MPC562 / MPC563 / MPC564 / MPC566 Note: code compression features of MPC534/MPC564/MPC556/MPC566 (Burst Buffer Controller) are currently not supported
oMPC8xx series (PowerQUICC): MPC821/MPC850/MPC860
oMPC8xxx series (PowerQUICC II, PowerQUICC II Pro, PowerQUICC III): MPC82xx / MPC83xx / MPC85xx / MPC87xx
oMPC5xxx series (Qorivva): MPC55xx, MPC56xx, MPC57xx
oPower PC 4xx, 6xx, 74xx, e200 (including e200z0 with VLE), e500 (including e500v1, e500v2 and e500mc), e600, e700, e5500, e6500 cores
oQorIQ series: P1, P2, P3, P4, P5 and T1, T2, T4 families
?Infineon Tricore architecture (up to architecture v1.6.2 (AURIX))
?Intel IA-64 Architecture – Itanium.
?Motorola DSP 56K
?Motorola MC6816
?MIPS
oMIPS Mark I (R2000)
oMIPS Mark II (R3000)
oMIPS Mark III: (R4000, R4200, R4300, R4400, and R4600)
oMIPS Mark IV: R8000, R10000, R5900 (Playstation 2)
oMIPS32, MIPS32r2, MIPS32r3 and MIPS64, MIPS64r2, MIPS64r3
oAllegrex CPU (Playstation Portable), including VFPU instructions
oCavium Octeon ISA extensions
oMIPS16 (MIPS16e) Application Specific Extension
oMIPS-MT, MIPS-3D, smartMIPS Application Specific Extensions
oToshiba TX19/TX19A Family Application Specific Extension (MIPS16e+ aka MIPS16e-TX)
?Mitsubishi M32R(comes with source code)
?Mitsubishi M7700 (comes with source code)
?Mitsubishi M7900 (comes with source code)
?Nec 78K0 and Nec 78K0S (comes with source code)
?STMicroelectronics ST9+, ST-10 (comes with source code)
?SPARCII, ULTRASPARC
?Siemens C166 (flow)
?Fujitsu F2MC-16L, Fujitsu F2MC-LC (comes with source code)
?16-bit Microchip PIC series (PIC24, dsPIC: PIC24XX, PIC30XX, PIC33XX)
调试器模块
在 IDA Pro 中,所有调试器模块都可用。
不支持的处理器
如果您的目标处理器未包含在上面的列表中,您有两个选择:
要求我们在将来的某个时候添加对处理器的支持:我们欢迎您提供有关应将哪些处理器添加到 IDA Pro 的反馈。
使用我们的 SDK 并开发您自己的 SDK(对所有人免费,但不受支持)。
支持的文件类型
IDA Pro 可以反汇编所有流行的文件格式。 该列表包含一些(但不是全部)IDA Pro 处理的文件类型。
?MS DOS
?EXE File
?MS DOS COM File
?MS DOS Driver
?New Executable (NE)
?Linear Executable (LX)
?Linear Executable (LE)
?Portable Executable (PE) (x86, x64, ARM, etc)
?Windows CE PE (ARM, SH-3, SH-4, MIPS)
?Mach-O for OS X and iOS (x86, x64, ARM and PPC)
?Dalvik Executable (DEX)
?EPOC (Symbian OS executable)
?Windows Crash Dump (DMP)
?XBOX Executable (XBE)
?Intel Hex Object File
?MOS Technology Hex Object File
?Netware Loadable Module (NLM)
?Common Object File Format (COFF)
?Binary File
?Object Module Format (OMF)
?OMF library
?S-record format
?ZIP archive
?JAR archive
?Executable and Linkable Format (ELF)
?Watcom DOS32 Extender (W32RUN)
?Linux a.out (AOUT)
?PalmPilot program file
?AIX ar library (AIAFF)
?PEF (Mac OS or Be OS executable)
?QNX 16 and 32-bits
?Nintendo (N64)
?SNES ROM file (SMC)
?Motorola DSP56000 .LOD
?Sony Playstation PSX executable files,
?object (psyq) files
?library (psyq) files
在图库中查看支持的处理器列表和许多处理器拆解的屏幕截图。
公司名称:上海道宁信息科技有限公司
地 址:上海浦东新区金桥路1399号(福建天安大厦)2105室
总 机::021-50318395,021-58995797,021-58996110