版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、E3個國內(nèi)知名 WEB OFFICE OCX控件的暴力破解,很詳細 收藏匡標題:【原創(chuàng)】一個國內(nèi)知名WEB OFFICE OCX控件的暴力破解,很詳細作者:gooddudu時 間:2005-05-24,10:35鏈接: HYPERLINK /showthread.php?t=13922 /showthread.php?t=13922本文特別詳細的描述了一個國內(nèi)知名控件(OCX )的暴力破解方法,只限學習交流,請不要非法使用,如果是作者看見了,請不要生氣,我可沒拿你的控件賣錢,我只是愛好破解而已,還是請作者自己提高加密 意識,保護知識產(chǎn)權(quán)吧。破解控件NTKO OFFICE 控件 V ( OCX)
2、破解方法暴力破解破解工具W32Dasm ,UtrlEdit , Cabinet Manager 2001b 3.7,ChinaTcp_CodeSign ,后兩個是CAB包的打包和簽名工具??丶猛竞軓姶罄?,做辦公自動化系統(tǒng)的最佳控件,支持VB、DEPHI、C+、ASP、JSP、Domino等,具體參見官方網(wǎng)站: HYPERLINK 。鄭重聲明本控件為國內(nèi)知名的控件之一,非集團單位內(nèi)部使用版本在2000元左右,集團用戶使用可能在5千元左右,產(chǎn)品授權(quán)無限分發(fā)使用在2萬左右,OEM就更貴了。以下破解只是為了自己私人使用,發(fā)表岀來也是為了學習交流,請大家不要做違法的事情,也不要向我索取詳細的破解資料和
3、破解控件,其 實,破解很簡單,我也悲嘆為什么優(yōu)秀的東西反而加密措施這么不嚴密。我已經(jīng)通過折中途徑告知作者, 希望他能在3.0版本上自己寫算法加密或加殼,OCX能否加殼,以我現(xiàn)在的知識水平,還不清楚。一、特別說明本控件除在VB、DEPHI、C+中可以使用外(VC除外),也可在網(wǎng)頁上使用。網(wǎng)頁上使用將是一個.CAB包,使用方法和3721上網(wǎng)伴侶、百度上網(wǎng)伴侶、Flash插件一樣,第一次打開含有此控件的網(wǎng)頁時將彈岀安裝對話框。在網(wǎng)頁上嵌套代碼的具體格式如下:param name=ProductCaption value=密碼,是 32 位的 16 進制數(shù)字 不能裝載文檔控件。請在檢查瀏覽器的選項中檢
4、查瀏覽器的安全設(shè)置。 看見輸入帳號和密碼的地方了嗎?就在網(wǎng)頁調(diào)用的 param 參數(shù)里寫。因為是 CAB 包,還要在瀏覽器上顯示安裝對話框,所以,此 CAB 包必須具有簽名信息, 版本還 是作者公司自己的簽名, IE 瀏覽器告知沒有可信任的證書; 3.0 版本已經(jīng)獲得了微軟的相關(guān)認證, IE 瀏覽 器告知可信任。CAB 包中一般包含有 OCX 控件和控件的 INF (信息)文件,所以,破解過程必須經(jīng)過以下步驟:1 、解包出 OCX 文件。用 Winrar 即可解開2 、破解 OCX 文件3、 打包破解的 OCX和修改過的INF文件為CAB包。使用工具為 Cabinet Manager 。Win
5、rar不能打包 CAB 文件的。4、CAB 包重新簽名。使用工具為 ChinaTcp_CodeSign 。微軟也有一個簽名工具,就在 VC5.0 版本安 裝盤的一個目錄下, 具體位置我忘記了; 本來微軟網(wǎng)站也提供下載, 后來好象是因為控件注冊的安全問題, 鏈接去年就已失效。有關(guān) Cabinet Manager 和 ChinaTcp_CodeSign ,網(wǎng)上有下載,但不好找的。具體使用方法,自己看它們的幫助文件即可,很簡單。這里是講 OCX 本身的破解。二、破解思路試用 ”版本,試用版本有定期時間限本控件有帳號和密碼限制,如果不輸入正確的帳號和密碼,自動轉(zhuǎn)成 制,從發(fā)行到過期是 1 個月的時間,
6、過期將不能正常使用;如輸入正確的帳號和密碼,系統(tǒng)將不檢測過期 日期。本次破解我將使用暴力破解,不探討復(fù)雜的帳號到正確密碼的算法。 首先是過期檢測。因為不輸入正確的帳號和密碼將檢測過期,所以必須破解,思路是不讓其檢測日期,或 者將過期日期推到 9999 年。再次是帳號和密碼檢測。做到隨便輸入帳號和密碼都可正常使用。 還要避免一個破解后的代碼執(zhí)行邏輯問題,就是正確的帳號和密碼也可以使用,這將不是只修改一個地方 的跳轉(zhuǎn)指令能解決的問題。思路是,不論輸入什么帳號和密碼,系統(tǒng)都認為是錯誤的,這樣就可以只修改 跳轉(zhuǎn)指令解決。對于一些無關(guān)緊要的提示信息,不做完美破解,可直接修改資源文件(如“關(guān)于 ”對話框)
7、,也可直接在源代碼中將信息編碼的字符抹成空格( 20 )。由于是 OCX 控件,自身不能運行, 所以不能動態(tài)跟蹤, 我一開始想用 VB 或 C+ 做個使用此控件的程序, 后來發(fā)現(xiàn)跟蹤麻煩, 很難發(fā)現(xiàn)關(guān)鍵代碼處。 后來用 W32Dasm 反編譯了一下, 覺得匯編代碼很親切, 以我 的匯編語言水平,還不如靜態(tài)分析呢。破解工作就這樣開始了,耗時近 4 個小時搞定。破解著手點:日期檢測一般要讀取本地時間,本身要用一個 API 函數(shù): KERNEL32.GetLocalTime 。 帳號密碼檢測要比較字符串,本身也要調(diào)用一個 API 函數(shù): KERNEL32.lstrcmpA 。W32Dasm 反匯編后
8、就提供本控件調(diào)用的輸入輸出API 函數(shù), 雙擊函數(shù)行, 就可快速切換到相應(yīng)的調(diào)用匯編代碼處,利用這個原理,作為破解的著手點。三、詳細破解開始因為此控件有時間限制,肯定要調(diào)用 WINDOWS API 函數(shù)查詢當前破解機器的本地時間,這個 API 為 K ERNEL32.GetLocalTime ,所以要查找匯編代碼中那些地方調(diào)用了此函數(shù)。打開 W32Dasm 的菜單 “函 數(shù)”- “輸入函數(shù) ”列表,尋找到 KERNEL32.GetLocalTime,雙擊之, W32Dasm 匯編區(qū)域代碼將切換到 調(diào)用 KERNEL32.GetLocalTime 處如下代碼:Reference To: KERN
9、EL32.GetLocalTime, Ord:012Fh:22018AE0 FF15CC000222Call dword ptr 220200CC:22018AE6 6A10push 00000010:22018AE8 8D45E0lea eax, dword ptr ebp-20:22018AEB 6A00push 00000000:22018AED 50push eax:22018AEE E89D100000call 22019B90注意此時不要著急往下瀏覽代碼,應(yīng)該往上瀏覽,為什么呢?因為此處代碼可能不是程序的主過程,很可 能是一個進行過期檢測的自編函數(shù),這是因為程序可能在很多地方調(diào)用過
10、期檢測,所以一般都要編寫成一 個公用函數(shù)調(diào)用。 那么, 往上瀏覽到什么地方停呢?應(yīng)該慢慢翻到具有調(diào)用入口的地方停,記下這些入口,后面還要繼續(xù)望上追溯呢!以下為上翻找到的調(diào)用處代碼,完整的日期檢測要從這里開始分析。* Referenced by a CALL at Addresses:|:22003CDC , :220044B3 , :22004585 , :220056FC 4個調(diào)用入口:22018AD5 55push ebp:22018AD6 8BECmov ebp, esp:22018AD8 83EC30sub esp, 00000030:22018ADB 8D45D0lea eax, d
11、word ptr ebp-30:22018ADE 56push esi:22018ADF 50push eax完整的過期檢測函數(shù)代碼如下::22018AF3 8B35EC000222mov esi, dword ptr 220200EC4個調(diào)用入口* Referenced by a CALL at Addresses: |:22003CDC , :220044B3 , :22004585 , :220056FCW32Dasm 反匯編器告訴我們,以上地址的代碼處都 CALL 了這里的過期檢測函數(shù),你可以按以上地址尋找并修改每個 CALL 代碼后面的判斷代碼指向來完成暴力不過期。但會存在一個問題,
12、因為判斷邏輯 反了,如果現(xiàn)在還沒過期,程序會報告過期,過期了反而認為不過期,有意思吧?!所以,我們應(yīng)該分析如改個 9999 年 12 月 28 日一下過期檢測代碼, 看能不能通過修改下面的代碼把過期日期往后推推呢?! 總可以吧!好,咱們繼續(xù)往下看吧!:22018AD5 55push ebp:22018AD6 8BECmov ebp, esp:22018AD8 83EC30sub esp, 00000030:22018ADB 8D45D0lea eax, dword ptr ebp-30:22018ADE 56push esi:22018ADF 50push eax* Reference To:
13、 KERNEL32.GetLocalTime, Ord:012Fh:22018AE0 FF15CC000222Call dword ptr 220200CC:22018AE6 6A10push 00000010:22018AE8 8D45E0lea eax, dword ptr ebp-20:22018AEB 6A00push 00000000:22018AED 50push eax:22018AEE E89D100000call 22019B90* Reference To: KERNEL32.SystemTimeToFileTime, Ord:02C8h|:22018AFC 8D45F0l
14、ea eax, dword ptr ebp-10:22018AF9 83C40Cadd esp, 0000000C:22018AFF 66C745E0D507 mov ebp-20, 07D5f關(guān)鍵部分1找到了,就是上面那行代碼,“ 07D5是什么,就是10進制的“ 2005,作者直接把日期寫進程序了!看來,控件在2005 年過期。改成: 270F ,即“9999”年。哈,感覺真爽。下面還有月和日的賦值代碼:22018B05 50push eax:22018B06 8D45D0lea eax, dword ptr ebp-30:22018B09 50push eax:22018B0A 66C7
15、45E20300 mov ebp-1E, 0003f關(guān)鍵部分2找到了,就是上面那行代碼,“ 0003是什么,就是10進制的3月,看來,控件在 2005年 3 月過期。改成: 000C ,即“ 1 2”月。哈,其實這是多余的,因為年改了就行了。:22018B10 66C745E61700 mov ebp-1A, 0017f關(guān)鍵部分3找到了,就是上面那行代碼,“ 0017是什么,就是10進制的23日,看來,控件在2005年 3 月 23 日過期。改成: 001C ,即“28”日。哈,其實這也是多余的。:22018B16 FFD6call esi:22018B18 8D45F8lea eax, dw
16、ord ptr ebp-08:22018B1B 50push eax:22018B1C 8D45E0lea eax, dword ptr ebp-20:22018B1F 50push eax:22018B20 FFD6call esi:22018B22 8D45F8lea eax, dword ptr ebp-08:22018B25 50push eax:22018B26 8D45F0lea eax, dword ptr ebp-10:220095CA FF1528010222Call dword ptr 22020128|:22018B29 50push eax* Reference To:
17、 KERNEL32.CompareFileTime, Ord:0023h|:22018B2A FF15E8000222 Call dword ptr 220200E8:22018B30 33C9xor ecx, ecx:22018B32 5Epop esi:22018B33 85C0test eax, eax:22018B35 0F9FC1setg cl:22018B38 8BC1mov eax, ecx:22018B3A C9leave:22018B3B C3ret這不,我們把過期日期推到了 9999 年 12 月 28 日,那所有調(diào)用過期檢測函數(shù)的 CALL 后面的判斷跳轉(zhuǎn)代碼就不需要修改
18、了,也不會再出邏輯問題。*因為此控件有帳號和密碼檢測, 很可能要調(diào)用 WINDOWS API 函數(shù)的字符串比較函數(shù), 這個 API 為 KER NEL32.lstrcmpA ,所以要查找匯編代碼中那些地方調(diào)用了此函數(shù)。 打開 W32Dasm 的菜單 “函數(shù) ”-“輸入 函數(shù) ”列表,尋找到 KERNEL32. lstrcmpA ,雙擊之, W32Dasm 匯編區(qū)域代碼將切換到調(diào)用 KERNEL3 2. lstrcmpA 處,這一般會有多個, 因為控件中的字符串比較一般有多個, 不一定都是帳號和密碼檢測的, 這需要自己花點時間判斷分析。以下為帳號和密碼檢測的 KERNEL32.lstrcmpA
19、調(diào)用處。* Reference To: KERNEL32.lstrcmpA, Ord:0329h:220095D0 F7D8neg eax:220095D2 1BC0sbb eax, eax:220095D4 40inc eax:220095D5 EB02jmp 220095D9同過期檢測,注意此時不要著急往下瀏覽代碼,應(yīng)該往上瀏覽,為什么呢?因為此處代碼可能不是程序的 主過程,很可能是一個進行帳號和密碼檢測的自編函數(shù),這是因為程序可能在很多地方調(diào)用帳號和密碼檢 測,所以一般都要編寫成一個公用函數(shù)調(diào)用。那么,往上瀏覽到什么地方停呢?應(yīng)該慢慢翻到具有調(diào)用入 口的地方停,記下這些入口,后面還要繼續(xù)
20、往上追溯呢!以下為上翻找到的調(diào)用處代碼:* Referenced by a CALL at Addresses:|:22003CD3 , :22004491 , :2200457C , :22005698 , :2200CAF5|:2200952C 55 push ebp:2200952D 8BEC mov ebp, esp:2200952F 81ECA0040000sub esp, 000004A0:22009535 53push ebx:22009536 56push esi:22009537 8B7508mov esi, dword ptr ebp+08以下為完整的帳號和密碼檢測函數(shù):*
21、 Referenced by a (U)nconditional or (C)onditional Jump at Addresses:|:2200433D(C), :2200436B(C), :22004379(U), :2200438E(C)t W32Dasm 反匯編器告訴我們,以上地址的代碼處都 CALL 了這里的帳號和密碼檢測,你可以按以上地址尋找并修改每個 CALL 代碼后面的判斷代碼指向來完成暴力破解。但會存在一個問題,因為判斷邏輯反 了,如果是正確的帳號和密碼,程序會報告試用,不正確的帳號和密碼反而認為正版,有意思吧?!所以, 我們應(yīng)該分析一下帳號和密碼檢測代碼,看能不能通過修改
22、下面的代碼,做到以下一點,就是:輸入正確 的帳號和密碼,系統(tǒng)也當作錯誤的帳號和密碼,以統(tǒng)一 CALL 處判斷邏輯的指向修改。好,咱們繼續(xù)往下 看吧!|* Referenced by a CALL at Addresses:讀取帳號和密碼的代碼|:22003CD3 , :22004491 , :2200457C , :22005698 , :2200CAF5|:2200952C 55push ebp:2200952D 8BECmov ebp, esp:2200952F 81ECA0040000sub esp, 000004A0:22009535 53push ebx:22009536 56pus
23、h esi:22009537 8B7508mov esi, dword ptr ebp+08:2200953A 57push edi:2200953B FFB602010000push dword ptr esi+00000102:22009541 E811FF0000call 22019457:22009546 FFB606010000push dword ptr esi+00000106:2200954C 8BF8mov edi, eax:2200954E E804FF0000call 22019457:22009553 85FFtest edi, edi:22009555 8BD8mov
24、 ebx, eax:22009557 747Eje 220095D7T關(guān)鍵部分找到了,帳號和密碼運算結(jié)果不符合正版要求,轉(zhuǎn)EAX清0,詳細不用做分析,看看跳轉(zhuǎn)處的代碼就一切很明白了。:22009559 85DBtest ebx, ebx:2200955B 747Aje 220095D7T關(guān)鍵部分找到了,帳號和密碼運算結(jié)果不符合正版要求,轉(zhuǎn)EAX清0,詳細不用做分析,看看跳轉(zhuǎn)處的代碼就一切很明白了。如果帳號和密碼符合正版要求,繼續(xù)下面的代碼* Reference To: KERNEL32.lstrlenA, Ord:0335h|:2200955D 8B35AC010222 mov esi, dw
25、ord ptr 220201AC:22009563 57push edi:22009564 FFD6call esi:22009566 85C0test eax, eax:22009568 746Dje 220095D7T關(guān)鍵部分找到了,帳號長度不符合要求,轉(zhuǎn)EAX清0,詳細不用做分析,看看跳轉(zhuǎn)處的代碼就一切很明白了。因為即使運算關(guān)系正確,但帳號和密碼長度不符合也不可以算正確。:2200956A 53push ebx:2200956B FFD6call esi:2200956D 85C0test eax, eax:2200956F 7466je 220095D7T關(guān)鍵部分找到了,密碼長度不符合
26、要求,轉(zhuǎn)EAX清0。后面沒有跳轉(zhuǎn)錯誤的代碼了, 220095D7 處是一個清除 EAX 寄存器的代碼, 從這里我們知道, EAX 寄存器為 0,錯誤,為1,正版,下面的代碼沒做詳細分析,可能是一些正版軟件的信息輸出,因為是暴力破解,又不是找算法,就要找關(guān)鍵點看,一直往下翻省略一大塊代碼到了又一個關(guān)鍵地方J* Reference To: KERNEL32.lstrcmpA, Ord:0329h|:220095CA FF1528010222 Call dword ptr 22020128:220095D0 F7D8neg eax:220095D2 1BC0sbb eax, eax:220095D4
27、 40inc eax:220095D5 EB02jmp 220095D9f 這個 jmp 220095D9語句跳過了下面的 “ xoreax, eax ”語句,說明此處應(yīng)該是檢測到的是正確的帳號和密碼,此時 EAX 肯定是 “1”。為了讓 EAX 不論帳號密碼正確與否都按錯誤對待,就是永遠輸出是“0”,將“jmp 220095D9修改成兩個連續(xù)的空指令“nop”即可,為什么是兩個“nop”,這是因為“jmp 220095D9”指令占兩個字節(jié)。* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:|:220095
28、57(C), :2200955B(C), :22009568(C), :2200956F(C):220095D7 33C0 xor eax, eax EA寄存器清 0* Referenced by a (U)nconditional or (C)onditional Jump at Address:|:220095D5(U):220095D9 5Fpop edi:220095DA 5Epop esi:220095DB 5Bpop ebx:220095DC C9leave:220095DD C20400ret 0004以上的修改夠變態(tài)吧,反正我覺得沒人會這么修改,所有的帳號和密碼現(xiàn)在都是錯誤的,
29、哈!好了,現(xiàn)在該找找調(diào)用帳號密碼檢測的 CALL 了,找見后進行判斷跳轉(zhuǎn)代碼的指向修改。至于過期檢測 C ALL 調(diào)用代碼后的跳轉(zhuǎn)指向,就不修改了,因為現(xiàn)在的過期日期是 9999-12-28 ,啦啦啦,你就隨便 CAL L 吧。如何找到 “調(diào)用帳號密碼檢測代碼的 CALL” 呢?前面我讓記住的那些地址就是啦,再次復(fù)制粘貼如下:* Referenced by a CALL at Addresses:|:22003CD3 , :22004491 , :2200457C , :22005698 , :2200CAF5從上面可以看出, 有 5 個地方調(diào)用了帳號密碼的檢測函數(shù), 這 5 個 CALL 有
30、 2 個是關(guān)鍵地方, 其它 3 個都 是些信息的判斷顯示,如 “關(guān)于 ”對話框的授權(quán)顯示等。因為是暴力破解,我忽略了一些其它邏輯,就是非 正確的帳號和密碼,會導致“About”對話框的授權(quán)顯示為 試用版”可惜我現(xiàn)在給改的沒回頭余地了,因為正確的帳號和密碼也當錯誤看待了。怎么辦?有辦法,使用VC以資源形式”打開這個控件的 關(guān)于”對話框資源,隨便加一個文本框,填上正版信息,把顯示 “試用版”的文本框給蓋住,存盤,搞定,其它的顯 示信息,用 UrlEdit 找見,全抹成空格碼 20 ,就是什么也不顯示啦。因為是國內(nèi)控件,信息處可不要寫自 己的大名啦??吹竭@里,有人會喊到:變態(tài),真變態(tài)??墒亲儜B(tài)確實比
31、較省事 “非常暴力破解 ”。以下是一個調(diào)用帳號密碼檢測函數(shù)的關(guān)鍵 CALL 處,改跳轉(zhuǎn)指向就可以了!:2200448C 836DF806sub dword ptr ebp-08, 00000006:22004490 56push esi:22004491 E896500000call 2200952C調(diào)用 CALL:22004496 85C0test eax, eax:22004498 7419je 220044B3f錯誤:EAX=O ;正確:EAX=1,改跳轉(zhuǎn)指令 “ 7419 為 “ 7519 ” 就是把 “ je220044B3 ” 改成 “ jne220044B3:2200449A 8
32、B8602010000mov eax, dword ptr esi+00000102:220044A0 85C0test eax, eax:220044A2 7408je 220044ACT以上代碼在官方網(wǎng)站提供的試用版本中沒有,只在正式用戶版本中出現(xiàn),其實eax獲得的是一個“1,”這個好象是作者專門加的“正式用戶版本標志 ”,以和試用版本區(qū)別。我沒詳細分析官方網(wǎng)站提供的試用版本代碼。緊接著是調(diào)用過期檢測函數(shù)的關(guān)鍵 CALL 處,因為過期日期已經(jīng)修改為 9999 年12 月28日,所以跳轉(zhuǎn)代 碼就不用修改了。:220044B3 E81D460100call 22018AD5就是它:220044B8 85C0test eax, eax:220044BA 68508F022
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度模板木方租賃服務(wù)合同范本4篇
- 美容院員工工作職責與績效考核合同2025年度版4篇
- 二零二五版智慧城市建設(shè)項目合同交底手冊3篇
- 2025年度航空航天鋁合金表面處理服務(wù)合同范本4篇
- 2025年度綠植租賃市場推廣合作合同4篇
- 二零二五年度新型城鎮(zhèn)化建設(shè)借款合同大全4篇
- 2025年度文化產(chǎn)業(yè)園承包合同示例4篇
- 2025年新能源電動車租賃與綠色出行解決方案合同2篇
- 2024年05月廣東集友銀行深圳分行校園招考筆試歷年參考題庫附帶答案詳解
- 健康的心態(tài)與職業(yè)發(fā)展
- 餐飲行業(yè)智慧餐廳管理系統(tǒng)方案
- 2025年度生物醫(yī)藥技術(shù)研發(fā)與許可協(xié)議3篇
- 電廠檢修安全培訓課件
- 殯葬改革課件
- 2024企業(yè)答謝晚宴會務(wù)合同3篇
- 雙方個人協(xié)議書模板
- 車站安全管理研究報告
- 瑪米亞RB67中文說明書
- 中華人民共和國文物保護法
- 五年級數(shù)學(小數(shù)四則混合運算)計算題專項練習及答案
- NB_T 10533-2021 采煤沉陷區(qū)治理技術(shù)規(guī)范_(高清最新)
評論
0/150
提交評論