RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [閒聊]花了我一個晚上的無聊東西+隨筆   字型大小:||| 
NeoBetas
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16


 . 積分: 1871
 . 精華: 1
 . 文章: 3077
 . 收花: 16062 支
 . 送花: 14188 支
 . 比例: 0.88
 . 在線: 1461 小時
 . 瀏覽: 31849 頁
 . 註冊: 7250
 . 失蹤: 3792
#1 : 2009-3-10 10:04 AM     全部回覆 引言回覆

話說 Mac OS X 下有個好用的支援多帳號的收 Gmail 程式,名字叫 Mailplane ,我想有真的在玩 Mac 的人應該不陌生。軟體雖然好用,但是他的價錢(接近 25 美元 )一直讓我耿耿於懷(雖然說我好像也沒有買過正版軟體...),所以昨天晚上跟女朋友吵玩架後就拿這隻程式開刀消氣。其實我在 MacBB 上破解這隻軟體已經好幾次了,作者雖然更新了很多次保護機制,但都沒有改到讓我破不了的程度,而且娛樂之餘還試著用各種不同的破解法來挑戰。目前為止我已經用過了三種破解法,其中的兩種已經隨程式保護機制的變換而失效,但第三個大概是 Cocoa 的天生缺陷,除非他改變現階段的試用期提示方式,不然大概也阻止不了將來的破解。

說了一堆廢話之後,現在進入正題。因為心情很不爽的緣故,平常破解最常用的技巧不外乎直接 Patch 執行檔來 Bypass 序號檢查,有些高手們喜歡反推(嗅探)出真正的序號,甚至做出算號器。不過,隨著破解者越來越多,軟體防盜版機制也越來越複雜,像是序號用 RSA 加密、線上驗證等機制紛紛出現,甚至有如木馬一樣在系統目錄寫入額外附加資訊的都有(例如 Remote Buddy),而 Mailplane 則是使用了稱為 "AquaticPrime" 的保護機制。AquaticPrime 基本上就是會幫你產生一組 RSA key,然後用那組 key 產生 license 檔給程式啓用,程式裡只需要包含 Public key 用來驗證,而一般人則因為沒有 Private key 而無法自行產生 license 檔,而要破解 RSA-1024 加密,那就不用來破解這個軟體了,找到速解還有 20 萬美元的奬金。於是在"不破解 RSA"的前提下,我想要自己做出一個 license 檔,並且讓程式"願意"讀取這個 license 檔,這就是我今天的目標。

先用 OTX dump 出來看看,無意間看到了一堆 appendString,這似乎是 AquaticPrime 的特徵,但是因為他我沒有在程式中看到他有包含 AquaticPrime 的模組,所以不敢確定...



往下看,挖靠,中奬!原來他是改了模組的名稱...



所以剛剛看到的那些 "0xC1FAB503F0EB4B809E4DAD29C"、"8" 之類的都是 RSA Public Key 的部份,而字串的實際位置和長度就記在 i386 那部份執行檔的 0x00060c30 + 0x8 + 0x1000 這個位置,去看邊一看(長度原來是 0x1B,我把他改成 0x102 方便接下來的步驟):



去他指引的位置找,並把分段的 RSA key 改成我自己的...



最後再來個 jmpl 跳過一堆 appendString,直接進入序號檢查。因為這是 Universal 的程式,所以 PPC 那邊也是照辦就通殺了。一切都完成後,用 AquaticPrime 的官方程式自行產生自己製造的 license 檔:



匯出...



然後打開程式檢查是否成功...




當然事情沒那麼簡單...就在我認為一切都順利的時候,我發現只要選了記憶密碼到 Keychain 就會讓程式 Crash...?!我一開始以為是中間步驟有錯,又重新檢查了一次,檢查了老半天就是找不出問題所在,後來我發現他有一個很詭異的資料夾,叫做 _CodeSignature,而且有個叫 Info.plist 的檔案,查了一下蘋果的官方文件,原來是 Leopard 的 Code Signing 作怪...所以我又花了一點時間自己做了一個 Certificate 幫他"暴力重簽",再打開,Yes!果然就沒問題了。

話說,使用 AquaticPrime 的程式不少,而破解法幾乎都如出一轍(像我也試過 Overflow )。總之,在心情不好的時候這個有趣的小東西確幫我殺掉的不少時間,不過這時候女朋友卻還在生氣...。(完)



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
NeoBetas
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16


 . 積分: 1871
 . 精華: 1
 . 文章: 3077
 . 收花: 16062 支
 . 送花: 14188 支
 . 比例: 0.88
 . 在線: 1461 小時
 . 瀏覽: 31849 頁
 . 註冊: 7250
 . 失蹤: 3792
#2 : 2009-3-12 01:30 AM     全部回覆 引言回覆


引用:
innova寫到: 怎看都像是 x86 Asm??


恩,我的是 Intel Mac。

等熊開了蘋果版我再來 PO 一些成果...

[NeoBetas 在  2009-3-12 03:08 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
NeoBetas
金驢友〔初級〕
等級: 16等級: 16等級: 16等級: 16


 . 積分: 1871
 . 精華: 1
 . 文章: 3077
 . 收花: 16062 支
 . 送花: 14188 支
 . 比例: 0.88
 . 在線: 1461 小時
 . 瀏覽: 31849 頁
 . 註冊: 7250
 . 失蹤: 3792
#3 : 2009-3-14 02:27 PM     全部回覆 引言回覆


引用:
killpeople寫到:
破解只要用心大多都會成功.
(...)
現在用什麼軟體沒去找不知道.也不想去學.會破的人不少.
破的時間還不如拿來花在其他用途上.

不過樓主為一個程式自己破也不簡單


老實說不是一個...











其實呢,有的不太容易破解,即使你技巧高超、時間特多、專心一意,也是未必能成功。寫程式的人要玩弄你很簡單,有些程式就以難破聞名,先來幾個 _ptrace、SHA1 checksum、Java VM 再用有問題的 compiler 讓變數看起來都一樣,再設一堆沒意義的迴圈和陷阱,最後再整個用 RSA 加密...嘿嘿,見鬼啦!

等人破程式不如自己破解,不然有時後等到天荒地老也沒有得用。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記

   



 



所在時區為 GMT+8, 現在時間是 2024-11-15 10:09 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.024639 second(s), 7 queries , Qzip disabled