ZC: 我的IDA:Version 6.8.150423 (32-bit) 英文版
ZC: 如何找 加载进IDA的程序的入口???如 WinMain / main / dllmain 之类的??
ZC: IDA 反汇编窗口"Text view" 里面显示的地址,是 文件对齐的地址,还是 内存对齐的地址?偏移地址?虚拟地址?
1、反汇编简介
【1888】拖入驱动直接保持 默认选项即可:
(核心选项一般不要乱动)
【2050】导入符号表,选择"YES" (一般需要反汇编的代码应该都不会有pdb文件提供的吧... 这里载入了符号表,是不是能提高 IDA的分析效率??)
【2090】视频中,加载 .sys后 直接在 "IDA View-A"界面 中显示的是流程图形式,而非汇编代码形式,我查到 这两种形式的切换快捷键是 空格(Space)
【2630】各个颜色 所表示的 段 (ZC; 貌似 和我现在的IDA中的不同...)
【2780】↓ / ↑ 的箭头,是 跳转 的意思 (ZC: 我怎么觉得是 表示 此处是从哪里跳转来的...)
【3155】一般 代码段的开始,".exe"是0x004?????,".sys"是0x0001????,".dll"是 70开头的
【3260】IDA的一个好处,一改 全部 都改。【3270】演示 重命名 函数名
【3700】IDA的一个强大的功能,两种反汇编分析的方法:线性扫描,递归下降
【完毕】
2、
分类工具
【188】Fi
【480】PETools (ZC: 这个没接触过...)【515】也可以 查看PE文件信息 (ZC: 看起来 好像LoadPE)【600】PETools插件
【640】LoadPE
【745】peid 【832】PEID的插件"Ktypto ANALyzer" 可以查它的算法
摘要工具
【910】NM、ldd、(ZC: id算不算?)、objdump 以后再讲,这些工具 都要结合代码来讲 不然都是白说
深度检测工具
【1000】string、反汇编器 nasm/masm 中自带的反汇编工具 ndisasm/distorm
【1450】IDA就是集这些工具于一体。 只有代码段 才能转换为 视图模式 来查看
【1655】将数据段里面的信息 转换成 C语言风格的字符串 【1725】选中 字符串,再把它变回去【1770】ZC: 转成了unicode风格了...貌似没有变回去啊
【1790】"Save database" 【1950】选择"Don't pack database"和"DON'T SAVE the database" 【2000】不保存的话,IDA生成的 ?.id0和?.id1和?.nam和?.til 会消失(确实消失了)
【完毕】
3、
【377】讲解“欢迎使用 IDA”界面:"新建"、"运行"、"载入"、"下次启动不再显示这个对话框(D)"
【450】点击"新建" 里面的内容
【690】点击"运行" 里面的内容
【800】点击"载入",选取 以前的工程 进行载入
【940】"载入一个新文件"
【2060】"运行" --> "打开" 之前的驱动文件,产生4个文件:
【2240】?.id0:二叉树形式的数据库
【2260】?.id1:包含描述每个程序字节的标记
【2580】?.nam:包含"IDA NAME"窗口的数据库("IDA NAME"窗口 显示的是 给定程序的位置 和索引信息)
【2680】?.til:本地数据库有关信息
用于 关闭IDA时,保存信息
【3130】Program DataBase :?.pdb文件
【3555】关闭IDA时,弹出的窗口
【4100】"Pack database(Deflate)"+"Collect garbage" ==> 尽可能创建一个小的 ??.idb文件(不仅要将文件压缩,还要将垃圾删掉),一般在 磁盘空间不足的情况下才这么用
【4158】一般直接选择 "Pack database(Store)"即可(ZC: 其它都不要勾选)
【4280】打开IDA -->"运行" --> "打开"--> 直接选择刚才生成的 sys.idb(或者 直接将 sys.idb拖到IDA界面中)
【4460】"IDA has found unpacked version of database C:\DriverTest\sys\XXXXX\XXXX.idb on disk . Plese choose
restore continue cancel"
【4870】选择恢复数据(restore) 又会弹出:
“
Data for file C:\xxxxx\xxxxx\xxx.id0 isn't closed, do you want IDA repair it ?
Pleae note that repaired database may still have problem .
”
【5470】远控编程
【5580】“The best solution is to use packed database or a bakup
yes no cancel help”
【完毕】
4、
【333】工具栏
【750】IDA状况 导航栏(ZC: 彩色的那一条),又叫做 导航带:是被加载的文件的空间的一个线性视图,默认情况下 它会呈现出 二进制整个的地址的范围(段)
【960】有缩放功能
【1088】IDA-->Options -->Colors... --> "Navigation band"(导航栏) 可以调整颜色,默认就可以
ZC: 在我现在用的IDA里面,下面这些 标签栏都可以通过 IDA--> View --> "Open subviews" 来打开
【1175】标签栏
【1640】反汇编视图 ("IDA View-A"、"IDA View-B"、...)
【1850】IDA-->Option-->General...(常规) --> Graph选项卡 --> "Use graph view by default"(默认使用图形查看方式)
【2165】消息窗口
【2310】IDA还有另外两种数据窗口 Names & Strings
【2490】重新打开IDA,看看 它在分析文件时 会有一些什么动作
【2560】Loading
【2665】You may start to explore the input file right now.
【2800】The initial autoanalysis has been finished.
【3190】IDA-->Windows -->"Reset desktop"
【3240】IDA-->Windows -->"Save desktop..."
【3420】IDA-->Font... (默认的信息为:Font:Fixedsys ; Style:Normal ; Size:10)
【3490】IDA的Bug
【完毕】
5、
【55】ZC: 视频中显示,当前时间 20100609
【848】交叉引用的概念 【870】XREF 这个就是交叉引用,双击"↑"会跳转
【990】IDA不提供 撤销功能 (ZC: 还是 备份一个,再弄 比较放心)
【1720】立即窗口
【1880】IDA中 非常好用的键 ESC键. 【1930】ESC键 在反汇编窗口 和 浏览器的后退键 有点相似
【2080】ZC: 在 反汇编窗口的"Text view"中,ESC键 功能使用成功。貌似 只有跳转后 再按EAC键才有用?
【2150】它在 导航反汇编的时候是非常有用的,在其他窗口中 很有可能是用于关闭窗口
【2805】基本块,不包含分支,执行大量的指令(序列),都具有唯一的入口点
【3050】IDA在 反汇编窗口("Graph view"和"Text view"中都有) 使用不同颜色的箭头,指向 各个块 流动的方向
【3280】跳转 一般2种颜色:绿色、红色。绿色 箭头 --> Yes,红色 箭头--> No
【3390】蓝色 箭头。
【3435】IDA(反汇编窗口) 每次显示一个函数
【3480】IDA(反汇编窗口),滚轮 --> 滚动,Ctrl+滚轮 --> 调整视图大小
【3540】Ctrl和"+",Ctrl和"-" --> 调整视图大小 (ZC: 是指小键盘的"+"&"-"??我试了下笔记本上的,把代码弄没了,还好重开IDA代码还在...这个还是不要乱按的好...)
【3740】IDA使用一种术语 "流"(也叫做"正常流"/"普通流"),表示 指令默认持续执行
【3785】跳转表(流?) 用来表示 (极有可能)跳转到的非连续性的位置。【3820】跳转流 会调用子例程
【3900】IDA 也支持 改变流程 【3920】(反汇编窗口"Graph view")用鼠标拖动箭头,用它来 改变流程方向
【4020】在按住shift键,在任何地方双击鼠标 就可以在这个地方增加一个其他连接点
【4180】在 连接点 这个地方,可以任意增加 接点
ZC: 上面 "流" 开始的 他的演示,都没有成功...
【4280】希望还原(反汇编窗口"Graph view")的默认图形,右击图形--> 布局图(ZC: 英文是"Layout graph")
【4580】折叠标签栏,右击 标签栏"IDA View-A"。ZC: 貌似我的IDA 没有这个
【4750】打开另一个 反汇编窗口:IDA-->View -->"Open subviews..." --> Disassembly
【5130】(反汇编窗口"Text view") 有虚线和(红色)实线,【5240】和 反汇编窗口"Grpah view" 中的跳转的箭头 是一一对应的 【5485】用于表示 代码中的非线性跳转/非线性流程
【5355】通常虚拟地址 就是 区域名(ZC: 区段名 吧?)+冒号+地址
【5560】注释 ZC: IDA的注释能跳转,我能添加的注释能跳转吗?
【5570】我们添加注释,按住shift + 冒号
【5910】Names 窗口,枚举所有 程序里面的函数。
【5940】图标"F":常规函数
【5947】图标"A":字符串
【5960】图标"I"(ZC: 大写字母I):导入函数(导入表)
【6030】有的 图标"F"(常规函数) 它是来自于库(库函数)
【6050】图标"L":库函数 动态链接库函数(比如NtDll.dll里面的)
【6085】图标"D":全局的命名代码
【6200】双击 可跳转
【6600】IDA 起的函数名 不在 Names窗口 中显示
【6930】消息窗口
【7100】这种操作,一般使用在 开发脚本/插件 时
【7230】Strings窗口
【7490】选中一个字符串-->右击-->"Setup..." (设置)
【7850】选项"Display only defined strings"
【7955】选项"Ignore instructions/data definitions"
【完毕】
ZZ