210 likes | 595 Views
Advantage And Disadvantage. Advantage : Reduced Risk Reduced Cost Disadvantage : There are practical limits to the extent that a system can be improved by re-engineering 例子 : 影音聊天室. Software Re-Engineering. Process : Source Code Translation (C C++) Reverse Engineering
E N D
Advantage And Disadvantage • Advantage : • Reduced Risk • Reduced Cost • Disadvantage : • There are practical limits to the extent that a system can be improved by re-engineering 例子 : 影音聊天室
Software Re-Engineering • Process : • Source Code Translation (C C++) • Reverse Engineering • Program Structure Improvement • Program Modularization • Data Re-Engineering
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系列
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
Reverse Engineering Realism of Reverse Engineering BCB6.0(已註冊) + BCB 6.0(未註冊) Key Generator
我們通常破解些什麼? • 根據你輸入的名字找出註冊碼 • 改變程式的流程﹕用除錯器找出註冊流程,並用hex editor修改程式,以便輸入任何密碼也能註冊 • 把程式的註冊碼計算方法找出。然後寫出註冊碼產生器(註冊機)
在破解中常見的組合語言 • CALL -- 呼叫 function • JNZ -- jump if not zero • JZ -- jump if zero • CMP -- 比較
這些例子是極其簡單的,真實的程式絕不會這樣簡單這些例子是極其簡單的,真實的程式絕不會這樣簡單
Reference • Heko的破解站http://thunder.prohosting.com/~heco/
用SoftICE進行破解Reverse-Engineering 電機四 紀博文
什麼是SoftICE? • SoftICE Driver Suite 是一套用來加速微軟Windows裝置驅動程式開發和偵錯的核心 工具。 • SoftICE Driver Suite包括: DriverAgent-開發硬體雛型或全部的應用軟體。VtoolsD-產生Windows的VxDs驅動程式。 DriverWorks-輕鬆的使用功能強大的精靈開發裝置驅動程式。SoftICE-輕鬆的對核心模式的驅動程式進行偵錯。
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。
常用HOTKEY • F1 - Help F5 - RUN F8 - Trace (into call) F10 - Trace (not into call) F12 - RET
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行
Example 1 • 將第2行改成相反的,即是 JZ 015C。這樣便將未註冊的軟件當成註冊的 • 或者索性改成 JMP 015C,不論第1行的結果如何程式也不會走到第3行 • 你還可以改第一行成 JMP 015C • 將第1行改成 MOV BYTE PTR [14AC], 01 ,將第2行改成 JMP 015C
Example 2(Winzip32 v6.3) • 00409D89 call 004096EA 00409D8E test eax, eax 00409D90 jne 00409DD3 00409D92 call 00409F9C • 第 1 行. 那個 call 是一個比較或計算,它將會設定 eax 成 1 或 0 • 第 2 行. test eax, eax 是檢查 eax 是否 0 • 第 3 行如果 eax 是 0 的話,就走到第 4 行那個 call如果 eax 不是 0 的話,就跳到 00409DD3