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