知识就像一个圆,知道的越多,不知道的也越多.如果对于初学者来说IDA有什么困难的地方,那就是它的默认界面,按钮太多,给人一种很复杂的感觉。

 

点一下上图中的Main。恩,现在简单多了。一个软件可以流行起来,绝对不是因为它的高深,而是简单易用。如果你只想给人一种很专业的感觉, OD就足够了,如果你想把事情变得简单。那么请往下看。
  
首先让我们来回顾各小节隐藏的信息,我以为猜测每个功能存在的理由,是一件有趣的事。

引用:
3.2.5交叉参考:  程序各部分存在联系,而只要定位到其中一部分,便可以顺藤摸瓜找到关键代码.
3.2.6参考重命名、3.2.7标签用法:记录分析结果,备忘之用
3.2.8 进制的转换:为满足不同人理解数字的习惯服务。
3.2.9代码和数据转换、3.2.10字符串:现在,即使IDA不能很好处理,我们也可以自己处理了。 
3.2.11数组、3.2.12结构体、3.2.13枚举类型、3.2.14堆栈变量和3.2.16 FLIRT:程序由高级语言编译而来,自然保留着某种高级语言的特性。更细致的分析记录功能,更可读的汇编代码。
3.2.15 IDC脚本:可编程的,自动完成任务的接口。更高的自由度,使自动解决重复劳动变成可能
什么时候使用IDA?

引用:
更细致的备忘功能,意味着可以应付耗时更长的程序分析任务。例如你希望得到杀软客户端的反病毒技术细节,IDA会是你最好的选择。
更自由的交互功能,意味着用户可以完成更复杂的分析任务。例如你希望得到某网游保护系统的技术细节,IDA会是你最好的选择。
现在让我们忘记书中低级功能到高级功能的介绍顺序,看看一般静态分析流程:

引用:
1.  使用PEID或FILEINFO识别出程序所使用的高级语言
2.  按照3.2.16 FLIRT的介绍,选择对应的高级语言函数识别库
3.  按照3.4.2逆向工程初步中介绍的方法使用3.2.5交叉参考功能
4.  找到关键代码之后尝试使用3.2.17介绍的Hex-Rays Decompiler,通过F5取得更易于阅读的源代码
5.  为了应付复杂的情况,可能需要3.2.9代码和数据转换3.2.10字符串,甚至自由度更高的3.2.15 IDC脚本
6.  通过3.2.6参考重命名3.2.7标签的用法3.2.11数组3.2.12结构体3.2.13枚据类型,记录分析结果,作备忘之用。
7.  使用3.3可执行文件的修改介绍的方法完成任务
给没有编程经验读者的阅读建议:

引用:
你可能需要一本系统的书(如《Windows编程循序渐进》)补充相关知识。再回头看这一章的内容,由于篇幅限制。书中第一章的内容只能供有基础的人作回顾之用。
给希望了解IDA更多细节的读者一点额外的阅读资料:

引用:
首先你可以在IDA的安装目录下找到idahelp.chm。下面URL则是来自官方网站的资料:

http://www.hex-rays.com/idapro/idasupport.htm

或许你也对本论坛的这些资源有兴趣:

http://bbs.pediy.com/showthread.php?t=40765 
IDA逆向工程入门

http://bbs.pediy.com/showthread.php?t=52445
【翻译】翻译的几篇IDA小教程

http://bbs.pediy.com/showthread.php?t=63292
关于FLIRT制作的文章

http://bbs.pediy.com/showthread.php?t=7244
【翻译】IDA数据分析简易教程

http://bbs.pediy.com/showthread.php?t=31023
IDA相关文章的翻译主题集合
如果你关注IDA的高级应用,你或许会对下面资料感兴趣:

引用:
http://bbs.pediy.com/showthread.php?t=31441
IDA Pro的插件开发SDK,及其教程等相关资料

http://bbs.pediy.com/showthread.php?t=38900 
[翻译]IDA Plugin 编写基础

http://bbs.pediy.com/showthread.php?t=51278
从不同的需求出发,将IDA的另一面呈现给你。文中使用IDC脱壳的示例会给你另一种脱壳体验

http://www.openrce.org/articles/full_view/28
编写IDA Processor模块,反编译分析受虚拟机保护的程序。