idc腳本編寫
『壹』 詳細比較在ASP中通過ADO介面實現對資料庫訪問的三種不同格式的特點
在ASP腳本中可以通過三種方式訪問資料庫:
● IDC(Internet Database Connector)方式
● ADO(ActiveX Data Objects)方式
● RDS(Remote Data Service)方式
從概念上來講,這三種訪問方式對資料庫的訪問是由Internet Information Server來完成的。Web瀏覽器用HTTP協議向Internet信息伺服器(IIS)遞交請求。Internet信息伺服器執行訪問資料庫的操作,並以一個HTML格式的文檔作為回答。
1.Internet資料庫介面(IDC)
IDC是一個傳統的資料庫查詢工具,用來定義和執行資料庫查詢的SQL命令,並向瀏覽器返回一個指定數據格式的頁面。使用IDC訪問資料庫最大的特點是簡單,幾乎不需要編程就能實現對資料庫的訪問。
2.ActiveX數據對象(ADO)
與IDC不同,用ADO訪問資料庫更類似於編寫資料庫應用程序,ADO把絕大部分的資料庫操作封裝在七個對象中,在ASP頁面中編程調用這些對象執行相應的資料庫操作。ADO是ASP技術的核心之一,它集中體現了ASP技術豐富而靈活的資料庫訪問功能。ADO建立了基於Web方式訪問資料庫的腳本編寫模型,它不僅支持任何大型資料庫的核心功能,而且支持許多資料庫所專有的特性。ADO使用本機數據源,通過ODBC訪問資料庫。這些資料庫可以是關系型資料庫、文本型資料庫、層次型資料庫或者任何支持ODBC的資料庫。ADO的主要優點是易用、高速、佔用內存和磁碟空間少,所以非常適合於作為伺服器端的資料庫訪問技術。相對於訪問資料庫的CGI程序而言,它是多線程的,在出現大量並發請求時,也同樣可以保持伺服器的運行效率,並且通過連接池(Connection Pool)技術以及對資料庫連接資源的完全控制,提供與遠程資料庫的高效連接與訪問,同時它還支持事務處理(Transaction),以開發高效率、高可靠性的資料庫應用程序。
正是因為使用ADO需要編寫腳本程序,所以ADO能夠實現更復雜、更靈活的資料庫訪問邏輯。目前,ADO包括Command、Connection、Recordset等七個對象和一個動態的Properties集合,絕大部分的資料庫訪問任務都可以通過它們的組合來完成。
1.3 ODBC與ADO對象
1.3.1 ASP訪問資料庫的幾種方式
3.遠程數據服務(RDS)
RDS是IIS 1.0中新提出的概念,它是由ASP中原來的Advanced Data Connector(ADC)發展而來的。在IIS 1.0中,RDS與ADO集成到一起,使用同樣的編程模型,提供訪問遠程資料庫的功能。
ADO雖然能夠提供非常強大的資料庫訪問功能,但是它不支持數據遠程操作(DataRemoting)。換句話說,ADO只能執行查詢並返回資料庫查詢的結果,這種結果是靜態的,伺服器上的資料庫與客戶端看到的數據沒有「活的連接關系」。假如,客戶端需要修改資料庫中的數據,就必須構造修改數據的SQL語句,執行相應的查詢動作。而RDS就比ADO更進一步,它支持數據遠程操作。它不僅能執行查詢並返回資料庫查詢結果,而且這種結果是「動態的」, 伺服器上的資料庫與客戶端看到的數據保持「活的連接關系」。即把伺服器端的數據搬到客戶端,在客戶端修改數據後,調用一個資料庫更新命令,就可以將客戶端對數據的修改寫回資料庫,就象使用本地資料庫一樣。
由於RDS與ADO集成,RDS的底層是調用ADO來完成的,所以也可以將RDS理解為ADO的RDS,即ActiveX數據對象的遠程數據服務。RDS在ADO的基礎上通過綁定的數據顯示和操作控制項,提供給客戶端更強的數據表現力和遠程數據操縱功能。可以說RDS是目前基於Web的最好的遠程資料庫訪問方式。
以上就是ASP訪問資料庫的三種方式,它們三者各有各的特色。IDC十分簡單,使用.idc文件和.htx文件分別完成資料庫的訪問與輸出任務,但是使用起來不靈活。ADO是ASP中推薦使用的方式,它功能強大,使用方便,是ASP的核心技術之一,但是它在提供用戶遠程操作資料庫的功能時,比較復雜,實現起來有一定的難度。而RDS是基於ADO的,並提供遠程操作資料庫的強大工具。所以在需要提供高性能、高可靠性的遠程數據操作功能時,RDS是更為理想的選擇。
『貳』 IDA Pro代碼破解揭秘的編輯推薦
《IDA Pro代碼破解揭秘》:如果你想掌握IDA Pro,如果你想掌握逆向工程編碼的科學和藝術,如果你想進行更高效的安全研發和軟體調試,《IDA Pro代碼破解揭秘》正適合你!
《IDA Pro代碼破解揭秘》是安全領域內的權威著作,也是少有的一本面向逆向工程編碼的書籍!
書中闡述了IDA Pro逆向工程代碼破解的精髓,細致而全面地講述了利用IDA Pro挖掘並分析軟體中的漏洞、逆向工程惡意代碼、使用IDC腳本語言自動執行各項任務,指導讀者在理解PE文件和ELF文件的基礎上分析逆向工程的基本組件,使用IDA Pro調試軟體和修改堆和棧的數據,利用反逆向功能終止他人對應用的逆向,還介紹了如何跟蹤執行流、確定協議結構、分析協議中是否仍有未文檔化的消息,以及如何編寫IDC腳本和插件來自動執行復雜任務等內容。《IDA Pro代碼破解揭秘》注重實踐,提供了大量圖示和示例代碼供大家參考使用,可讀性和可操作性極強。
安全編程修煉之道!看雪學院等著名安全論壇強烈推薦,安全專家兼IOActive公司滲透測試總監Dan Kaminsky經典力作。
『叄』 idc和ida python的區別
idc 腳本 是ida 自帶,相對簡陋
idapython 是插件實現腳本功能,因為用python,更全面強大
『肆』 IDA Pro權威指南的目錄
第一部分IDA簡介
第1章反匯編簡介 2
1.1反匯編理論2
1.2何為反匯編3
1.3為何反匯編3
1.3.1分析惡意軟體 4
1.3.2漏洞分析4
1.3.3軟體互操作性 4
1.3.4編譯器驗證 4
1.3.5顯示調試信息 5
1.4如何反匯編5
1.4.1基本的反匯編演算法5
1.4.2線性掃描反匯編6
1.4.3遞歸下降反匯編7
1.5小結 10
第2章逆向與反匯編工具 11
2.1分類工具 11
2.1.1file 11
2.1.2PE Tools 13
2.1.3PEiD 14
2.2摘要工具 14
2.2.1nm 15
2.2.2ldd 16
2.2.3objmp 17
2.2.4otool 18
2.2.5mpbin 18
2.2.6c++filt 19
2.3深度檢測工具 20
2.3.1strings 20
2.3.2反匯編器 21
2.4小結 22
第3章IDA Pro背景知識 23
3.1Hex-Rays公司的反盜版策略 23
3.2獲取IDA Pro 24
3.2.1IDA版本 24
3.2.2IDA許可證 24
3.2.3購買IDA 25
3.2.4升級IDA 25
3.3IDA支持資源 25
3.4安裝IDA 26
3.4.1Windows安裝 26
3.4.2OS X和Linux安裝 27
3.4.3IDA目錄的結構 28
3.5IDA用戶界面 29
3.6小結 29
第二部分IDA基本用法
第4章IDA入門 32
4.1啟動IDA 32
4.1.1IDA文件載入 34
4.1.2使用二進制文件載入器 35
4.2IDA資料庫文件 37
4.2.1創建IDA資料庫 38
4.2.2關閉IDA資料庫 38
4.2.3重新打開資料庫 39
4.3IDA桌面簡介 40
4.4初始分析時的桌面行為 42
4.5IDA桌面提示和技巧 43
4.6報告bug 44
4.7小結 44
第5章IDA數據顯示窗口 45
5.1IDA主要的數據顯示窗口 45
5.1.1反匯編窗口 45
5.1.2Names窗口 50
5.1.3消息窗口 51
5.1.4Strings窗口 52
5.2次要的IDA顯示窗口 53
5.2.1十六進制窗口 53
5.2.2導出窗口 54
5.2.3導入窗口 54
5.2.4函數窗口 55
5.2.5結構體窗口 55
5.2.6枚舉窗口 56
5.3其他IDA顯示窗口 56
5.3.1段窗口 56
5.3.2簽名窗口 57
5.3.3類型庫窗口 58
5.3.4函數調用窗口 58
5.3.5問題窗口 59
5.4小結 59
第6章反匯編導航 60
6.1基本IDA導航 60
6.1.1雙擊導航60
6.1.2跳轉到地址 62
6.1.3導航歷史記錄 62
6.2棧幀 63
6.2.1調用約定64
6.2.2局部變數布局 67
6.2.3棧幀示例67
6.2.4IDA棧視圖 70
6.3搜索資料庫74
6.3.1文本搜索75
6.3.2二進制搜索 75
6.4小結 76
第7章反匯編操作 77
7.1名稱與命名77
7.1.1參數和局部變數 77
7.1.2已命名的位置 79
7.1.3寄存器名稱 80
7.2IDA中的注釋 80
7.2.1常規注釋82
7.2.2可重復注釋 82
7.2.3在前注釋和在後注釋 82
7.2.4函數注釋82
7.3基本代碼轉換 83
7.3.1代碼顯示選項 83
7.3.2格式化指令操作數 85
7.3.3操縱函數86
7.3.4數據與代碼互相轉換 91
7.4基本數據轉換 91
7.4.1指定數據大小 92
7.4.2處理字元串 93
7.4.3指定數組 94
7.5小結 96
第8章數據類型與數據結構 97
8.1識別數據結構的使用 98
8.1.1數組成員訪問 98
8.1.2結構體成員訪問 102
8.2創建IDA結構體 107
8.3使用結構體模板 111
8.4導入新的結構體 114
8.4.1解析C結構體聲明 114
8.4.2解析C頭文件 115
8.5使用標准結構體 115
8.6IDA TIL文件 118
8.6.1載入新的TIL文件 118
8.6.2共享TIL文件 118
8.7C++逆向工程基礎 119
8.7.1this指針 119
8.7.2虛函數和虛表 120
8.7.3對象生命周期 122
8.7.4名稱改編 124
8.7.5運行時類型識別 125
8.7.6繼承關系 126
8.7.7C++逆向工程參考文獻 127
8.8小結 127
第9章交叉引用與繪圖功能 128
9.1交叉引用 128
9.1.1代碼交叉引用 129
9.1.2數據交叉引用 131
9.1.3交叉引用列表 133
9.1.4函數調用 134
9.2IDA繪圖 135
9.2.1IDA的遺留繪圖功能 135
9.2.2IDA的集成圖形視圖 141
9.3小結 143
第10章IDA的多種面孔 144
10.1控制台模式IDA 144
10.1.1控制台模式的共同特性 144
10.1.2Windows控制台 145
10.1.3Linux控制台 146
10.1.4OS X控制台 148
10.2使用IDA的批量模式 150
10.3非Windows平台上的GUI IDA 151
10.4小結 152
第三部分IDA高級應用
第11章定製IDA 154
11.1配置文件 154
11.1.1主配置文件:ida.cfg 154
11.1.2GUI配置文件:idagui.cfg 155
11.1.3控制台配置文件:idatui.cfg 157
11.2其他IDA配置選項 158
11.2.1IDA顏色 159
11.2.2定製IDA工具欄 159
11.3小結 161
第12章使用FLIRT簽名來識別庫 162
12.1快速庫識別和鑒定技術 162
12.2應用FLIRT簽名 163
12.3創建FLIRT簽名文件 166
12.3.1創建簽名概述 166
12.3.2識別和獲取靜態庫 167
12.3.3創建模式文件 168
12.3.4創建簽名文件 169
12.3.5啟動簽名 171
12.4小結 172
第13章擴展IDA的知識 173
13.1擴充函數信息 173
13.1.1IDS文件 175
13.1.2創建IDS文件 176
13.2使用loadint擴充預定義注釋 178
13.3小結 179
第14章修補二進制文件及其他IDA 限制 180
14.1隱藏的補丁程序菜單 180
14.1.1更改資料庫位元組 181
14.1.2更改資料庫中的字 181
14.1.3使用「匯編」對話框 182
14.2IDA輸出文件與補丁生成 183
14.2.1IDA生成的MAP文件 183
14.2.2IDA生成的ASM文件 184
14.2.3IDA生成的INC文件 184
14.2.4IDA生成的LST文件 185
14.2.5IDA生成的EXE文件 185
14.2.6IDA生成的DIF文件 185
14.2.7IDA生成的HTML文件 186
14.3小結 186
第四部分擴展IDA的功能
第15章編寫IDC腳本 188
15.1執行腳本的基礎知識 188
15.2IDC語言 189
15.2.1IDC變數 190
15.2.2IDC表達式 190
15.2.3IDC語句 190
15.2.4IDC函數 191
15.2.5IDC程序 192
15.2.6IDC錯誤處理 192
15.2.7IDC永久數據存儲 193
15.3關聯IDC腳本與熱鍵 194
15.4有用的IDC函數 195
15.4.1讀取和修改數據的函數 196
15.4.2用戶交互函數 196
15.4.3字元串操縱函數 197
15.4.4文件輸入/輸出函數 197
15.4.5操縱資料庫名稱 198
15.4.6處理函數的函數 199
15.4.7代碼交叉引用函數 199
15.4.8數據交叉引用函數 200
15.4.9資料庫操縱函數 200
15.4.10資料庫搜索函數 201
15.4.11反匯編行組件 201
15.5IDC腳本示例 202
15.5.1枚舉函數 202
15.5.2枚舉指令 202
15.5.3枚舉交叉引用 203
15.5.4枚舉導出的函數 205
15.5.5查找和標記函數參數 206
15.5.6模擬匯編語言行為 208
15.6小結 209
第16章IDA軟體開發工具包 211
16.1SDK簡介 212
16.1.1安裝SDK 212
16.1.2SDK的布局 212
16.1.3配置構建環境 213
16.2IDA應用編程介面 214
16.2.1頭文件概述 214
16.2.2網路節點 217
16.2.3有用的SDK數據類型 223
16.2.4常用的SDK函數 224
16.2.5IDA API迭代技巧 229
16.3小結 232
第17章IDA插件體系結構 233
17.1編寫插件 233
17.1.1插件生命周期 235
17.1.2插件初始化 236
17.1.3事件通知 237
17.1.4插件執行 238
17.2構建插件 239
17.3插件安裝 243
17.4插件配置 244
17.5擴展IDC 244
17.6插件用戶界面選項 247
17.7小結 254
第18章二進制文件與IDA載入器模塊 255
18.1未知文件分析 256
18.2手動載入一個Windows PE文件 256
18.3IDA載入器模塊 263
18.4編寫IDA載入器 263
18.4.1「傻瓜式」載入器 265
18.4.2構建IDA載入器模塊 269
18.4.3IDA pcap載入器 269
18.5其他載入器策略 274
18.6小結 275
第19章IDA處理器模塊 276
19.1Python位元組碼 277
19.2Python解釋器 277
19.3編寫處理器模塊 277
19.3.1processor_t結構體 278
19.3.2LPH結構體的基本初始化 278
19.3.3分析器 282
19.3.4模擬器 286
19.3.5輸出器 288
19.3.6處理器通知 293
19.3.7其他processor_t成員 294
19.4構建處理器模塊 296
19.5定製現有的處理器 299
19.6處理器模塊體系結構 301
19.7小結 302
第五部分實際應用
第20章編譯器變體 304
20.1跳轉表與分支語句 304
20.2RTTI實現 308
20.3定位main函數 308
20.4調試版與發行版二進制文件 315
20.5其他調用約定 317
20.6小結 317
第21章模糊代碼分析 319
21.1反靜態分析技巧 319
21.1.1反匯編去同步 319
21.1.2動態計算目標地址 322
21.1.3導入的函數模糊 327
21.1.4有針對性地攻擊分析工具 331
21.2反動態分析技巧 331
21.2.1檢測虛擬化 331
21.2.2檢測「檢測工具」 333
21.2.3檢測調試器 333
21.2.4防止調試 334
21.3使用IDA對二進制文件進行「靜態去模糊」 335
21.3.1面向腳本的去模糊 335
21.3.2面向模擬的去模糊 339
21.4小結 349
第22章漏洞分析 350
22.1使用IDA發現新的漏洞 351
22.2使用IDA在事後發現漏洞 356
22.3IDA與破解程序開發過程 359
22.3.1棧幀細目 360
22.3.2定位指令序列 362
22.3.3查找有用的虛擬地址 363
22.4分析shellcode 364
22.5小結 366
第23章實用IDA插件 367
23.1Hex-Rays 367
23.2IDAPython 368
23.3IDARub 371
23.4IDA Sync 371
23.5collabREate 374
23.6ida-x86emu 377
23.7mIDA 377
23.8小結 379
第六部分IDA調試器
第24章IDA調試器 382
24.1啟動調試器 382
24.2調試器的基本顯示 384
24.3進程式控制制 387
24.3.1斷點 388
24.3.2跟蹤 390
24.3.3棧跟蹤 393
24.3.4監視 393
24.4調試器任務自動化 393
24.4.1使用IDC為調試器操作編寫 腳本 394
24.4.2使用IDA插件實現調試器操 作自動化 398
24.5小結 400
第25章反匯編器/調試器集成 401
25.1背景知識 401
25.2IDA資料庫與IDA調試器 402
25.3調試模糊代碼 404
25.3.1簡單的解密和解壓循環 404
25.3.2導入表重建 407
25.3.3隱藏調試器 410
25.3.4處理異常 414
25.4小結 418
第26章Linux、OS X平台的IDA和 遠程調試 419
26.1控制台模式的調試 419
26.2使用IDA進行遠程調試 420
26.2.1遠程調試中的異常處理 422
26.2.2在遠程調試中使用腳本和 插件 423
26.3小結 423
附錄A使用IDA 4.9免費版 424
附錄BIDC/SDK交叉引用 426
附錄CIDA 5.3的新功能 444
『伍』 反匯編和二進制分析工具清單
反匯編和二進制分析工具清單
在二進制分析的世界裡,有多種工具可供選擇,涵蓋了反匯編、調試器、反匯編框架和二進制分析框架。以下是其中的一些核心工具:
反匯編工具
- IDA Pro(Windows、Linux、macOS):作為行業標准,IDA Pro是強大且互動式的,支持Python和IDC腳本,但價格較高(最低700美元)。舊版雖免費,但功能有限。
- Hopper(Linux、macOS):價格較低,易用且具備部分IDA功能,尤其是Python腳本和反編譯功能。
- ODA(所有操作系統):免費且輕便,適用於快速實驗,支持在線上傳和二進制文件輸入。
- Binary Ninja(Windows、Linux、macOS):前景廣闊,互動式且支持多體系結構,C、C++和Python腳本,個人版需付費149美元。
- Relyze(Windows):互動式,通過Ruby提供二進制文件對比,商業產品,價格低於IDA Pro。
- Mesa(Windows、Linux):免費開源,支持多體系結構,具有Python腳本功能。
- radare(Windows、Linux、macOS):命令行工具,靈活且開源,提供線性和遞歸反匯編,支持腳本編寫。
- objmp(Linux、macOS):免費開源,GNU binutils一部分,適用於線性反匯編。
調試器
- GDB(Linux):Linux標准調試器,支持互動式和遠程調試。
- OllyDbg(Windows):通用Windows調試器,有高級執行跟蹤功能,免費但非開源。
- Windbg(Windows):Microsoft的Windows調試器,適用於內核和用戶層代碼分析。
- Bochs(Windows、Linux、macOS):跨平台的PC模擬器,開源,可用於調試模擬代碼。
其他框架
- Capstone:開源反匯編引擎,用於自定義工具開發,支持多體系架構。
- distorm3:專注於x86反匯編的API,提供多種語言綁定。
- udis86:簡約的x86反匯編庫,適合C語言工具構建。
- angr:Python框架,用於高級二進制分析,開源且在積極開發中。
- Pin:動態二進制檢測引擎,Intel開發,適合實時修改行為。
- Dyninst:動態二進制工具API,免費開源,注重研究。
- Unicorn:輕量級CPU模擬器,支持多種體系結構,用於模擬分析。
- libdft:動態污點分析庫,開源且易用,適用於污點分析。
- Triton:動態二進制分析框架,支持符號執行和污染分析,開源。
這些工具為二進制分析提供了堅實的基礎,無論你是初學者還是經驗豐富的專家,都可以根據需要選擇合適的工具進行深入學習和實踐。