史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 網路疑難應用技術研討區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2003-12-11, 08:06 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 某國產Office for Linux的破解(簡單,菜鳥水準)

如今Linux的易用性已經越來越強,軟體也越來越豐富,其中的Open Office(Star Office的開源項目)就是一個很好用的辦公套件,超強的功能,對MS我的文件的高度相容性,基本解決了Linux下辦公軟體的缺口。但由於是鬼佬的東西,中文支持總是差點。(其實Open Office的中文支持並不差,只是配置問題,對我等菜鳥而言,有點無從下手。)也就是這個原因,讓國內的XX公司看到了商機,把Open Office的源碼拿來,改進改進中文支持,再換個包裝,OK,398大洋。要源碼?門都沒有。也許大家已經知道了這個東東具體是什麼玩意兒,呵呵。其主頁提供90天試用版本下載,試用期限內無任何限制,但過期之後就無法啟動了,可以通過修改系統時間繼續使用,但總是不爽,還是破解了罷。其實我並不使用這個東東,只是覺得它的價格黑點,再說,學過點皮毛的破解總是有點手癢,呵呵。廢話少說,轉入正文。

安裝,將時間往後調一年,執行程序,提示「用戶您好,本軟體試用期已到......」,在其安裝目錄中的所有文件中搜尋該字串串,發現位於soffice.bin文件,確定目標。提取該檔案到Windows分區,重啟進入Windows,用IDA反彙編之。由於找不到相應版本的String Reference插件,用UE搜尋該字串串,確定其物理偏移位址為0x318A0,轉換為虛擬位址為0x80798A0,搜尋「80798A0」,看何處對它進行了引用,很快發現目標。

.text:0805DFEB push ebx
.text:0805DFEC push esi
.text:0805DFED call ___mi__FRC4DateT0 ;獲取已使用天數的函數
.text:0805DFF2 mov ebx, eax
.text:0805DFF4 add esp, 20h
.text:0805DFF7 cmp ebx, 59h ;是否超過90天
.text:0805DFFA jbe loc_805E0C5 ;沒超過跳轉,否則NAG+QUIT
.text:0805E000 add esp, 0FFFFFFF4h
.text:0805E003 lea ebx, [ebp+var_C]
.text:0805E006 push ebx
.text:0805E007 call ___6String
.text:0805E00C
.text:0805E00C loc_805E00C: ; DATA XREF: .gcc_except_table:08085370o
.text:0805E00C add esp, 0FFFFFFF8h
.text:0805E00F push offset unk_80798A0 ;這就是過期信息字串串
.text:0805E014 lea eax, [ebp+var_10]
.text:0805E017 push eax
.text:0805E018 mov edi, ebx
.text:0805E01A call ___10ByteStringPCc ;估計是彈出訊息框的函數

在0805DFFA處執行跳轉,看到

.text:0805E0C5 lea eax, [ebx-51h] ;使用天數減去0x51
.text:0805E0C8 lea ecx, [ebp+var_2AC]
.text:0805E0CE mov [ebp+var_2F0], ecx
.text:0805E0D4 lea edx, [ebp+var_2A8]
.text:0805E0DA mov [ebp+var_2F4], edx
.text:0805E0E0 lea edi, [ebp+var_2A4]
.text:0805E0E6 cmp eax, 8 ;將減運算結果於8比較
.text:0805E0E9 ja loc_805E259 ;小於則表示即將過期,NAG,但不QUIT
.text:0805E0EF add esp, 0FFFFFFF4h
.text:0805E0F2 push ecx
.text:0805E0F3 call ___6String
.text:0805E0F8
.text:0805E0F8 loc_805E0F8: ; DATA XREF: .gcc_except_table:080853C4o
.text:0805E0F8 add esp, 0FFFFFFF8h
.text:0805E0FB push offset unk_8079980 ;提示即將過期的信息字串串
.text:0805E100 mov ecx, [ebp+var_2F4]
.text:0805E106 push ecx
.text:0805E107 call ___10ByteStringPCc

發現其比較依據均來源於0805DFED處函數使用的返回值,並轉移到EBX暫存器中。我們只要讓修改EBX的賦值就可以了,最簡單的辦法就是將0805DFF2處mov ebx,eax修改為xor ebx,ebx,讓程序認為我們總是只使用一天,免去了修改諸多跳轉的麻煩,也不容易落入可能存在的跳轉暗樁(該程序保護如此之弱,應該沒有暗樁,只是猜測,呵呵)。記下0805DFF2的物理偏移,為0x15FF2,用UE修改89 C3為33 DB,也可在Linux下用KHexEdit等工具修改,儲存。重新進入Linux系統,用修改後的文件覆蓋原文件。執行程序,不再提示過期,OK,收工。

對了,為了不需每次都進行覆蓋工作,可以修改其安裝包以一勞永逸。檢視setup.ins文件發現soffice.bin文件位於壓縮包f_0270中,該檔案沒有副檔名,但KDE直接認出這是zip包,Linux就是強,呵呵。解開,發現只有soffice.bin一個文件,用zip指令將修改後的文件打包到f_0270,會自動加上.zip副檔名,重命名,覆蓋原文件,OK,以後你每次安裝的就是正式版了,呵呵。

第一次破解Linux軟體,也是第一次寫這麼長的破解文件,如有不對請大家指正,菜鳥虛心學習。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 05:27 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


Search Engine Friendly URLs by vBSEO 3.6.1