Download presentation
Presentation is loading. Please wait.
1
Advantage And Disadvantage
Reduced Risk Reduced Cost Disadvantage : There are practical limits to the extent that a system can be improved by re-engineering 例子 : 影音聊天室
2
Software Re-Engineering
Process : Source Code Translation (C C++) Reverse Engineering Program Structure Improvement Program Modularization Data Re-Engineering
3
Re-Engineering Issues
The quality of the software to be re-engineered The tool support available for re-engineering The extent of data conversion required The availability of expert staff 例子 : Microsoft Window系列
4
Reverse Engineering Definition
The Process of analyzing software with the objective of recovering its design and specification Help Engineers to understand a program before reorganizing its structure
5
Realism of Reverse Engineering
BCB6.0(已註冊) BCB 6.0(未註冊) + Key Generator Reverse Engineering
6
我們通常破解些什麼? 根據你輸入的名字找出註冊碼
改變程式的流程﹕用除錯器找出註冊流程,並用hex editor修改程式,以便輸入任何密碼也能註冊 把程式的註冊碼計算方法找出。然後寫出註冊碼產生器(註冊機)
7
在破解中常見的組合語言 CALL -- 呼叫 function JNZ -- jump if not zero
JZ -- jump if zero CMP -- 比較
8
Demo
9
這些例子是極其簡單的, 真實的程式絕不會這樣簡單
10
Reference Heko的破解站
11
Merry Christmas and Happy New Year
12
用SoftICE進行破解 Reverse-Engineering
電機四 紀博文
13
什麼是SoftICE? SoftICE Driver Suite 是一套用來加速微軟Windows裝置驅動程式開發和偵錯的核心 工具。
SoftICE Driver Suite包括: DriverAgent-開發硬體雛型或全部的應用軟體。 VtoolsD-產生Windows的VxDs驅動程式。 DriverWorks-輕鬆的使用功能強大的精靈開發裝置驅動程式。 SoftICE-輕鬆的對核心模式的驅動程式進行偵錯。
14
NuMega SoftICE 特色: 1.透過Internet進行遠端偵錯,提供在單台機器上進行原始程式碼除錯的能力。
2.支援 Windows Millennium Edition,Windows NT,Windows 95,Windows98 和 Windows 2000,提供所有Windows 平台下建立裝置驅動程式和系統元件之強而有力 、可靠的除錯工具。 3.可在Pentium, Pentium Pro, Pentium III多元處理器系統上進行程式碼除錯,透過 使用支援SMP(SoftICE Windows NT)標準的Intel多元處理器方案(APIC)最多可支援8 個CPU。 4.支援Microsoft Kernel Debug extensions。
15
SoftICE的畫面
16
SoftICE Registers 和 Flags 用 R 去修改 最上層的顯示 register 資料 Data Window
用 E 去修改, D 來看 顯示記憶體內的資料 Code Window 用 A 去修改, U 來看 顯示組合語言碼, 即 mov eax, ebx 的東西 Command Window 像 DOS一般 指令視窗: 輸入指令
17
常用HOTKEY F1 - Help F5 - RUN F8 - Trace (into call) F10 - Trace (not into call) F12 - RET
18
Example 1 137C:0151 CMP BYTE PTR [14AC],00 137C:0156 JNZ 015C 137C:0159 CALL 1A43 137C:015C MOV AL,9 假設程式設計師把記憶體位置14AC設為00,目的是要表示那程式是未註冊的。 而第1行的目的是要比較那記憶體位置是否等於00 ,如果不是的話,當程式跳到第2行的時候,程式的流程便會到第4行(015C) 如果是的話,程式會略過第2行,執行第3行
19
Example 1 將第2行改成相反的,即是 JZ 015C。這樣便將未註冊的軟件當成註冊的
或者索性改成 JMP 015C,不論第1行的結果如何程式也不會走到第3行 你還可以改第一行成 JMP 015C 將第1行改成 MOV BYTE PTR [14AC], 01 ,將第2行改成 JMP 015C
20
Example 2(Winzip32 v6.3) 00409D89 call EA D8E test eax, eax D90 jne 00409DD3 D92 call 00409F9C 第 1 行. 那個 call 是一個比較或計算,它將會設定 eax 成 1 或 0 第 2 行. test eax, eax 是檢查 eax 是否 0 第 3 行 如果 eax 是 0 的話,就走到第 4 行那個 call如果 eax 不是 0 的話,就跳到 00409DD3
Similar presentations