聲明
- My Eclipse 2015 程序版權為Genuitec, L.L.C所有.
- My Eclipse 2015 的注冊碼、激活碼等授權為Genuitec, L.L.C及其付費用戶所有.
- 本文只從逆向工程的興趣出發,研究軟件保護機制.
- 不會釋出完整源代碼和破解補丁.
- 會直接推測出授權信息的地方打碼處理
- 本文針對My Eclipse 2015 Stable 2.0或CL版本
背景
在前兩篇博文中,我們成功突破了My Eclipse 2015的3個主要保護機制:
- 軟件完整性驗證保護
- 注冊碼驗證
- 激活 + 聯網驗證
實現了暴力破解,其實已經可以不用再管神馬算法了。
參見:【MyEclipse 2015】 逆向破解實錄系列【1】(純研究)
參見:【MyEclipse 2015】 逆向破解實錄系列【2】(純研究)
但是,上篇博文有提到,暴力破解的方式太過於侵入,而且容易遺漏,不易操作,特別對於ME這款軟件,驗證點奇多無比,所以,暴力破解相對來說過於”丑陋“。
本篇將展開對My Eclipse 2015的注冊碼算法、激活碼算法研究,以期能夠算出正確的注冊碼和激活碼,並通過ME的聯網激活,成為其"合法"授權用戶。
成果如下:
- 授權信息

- 激活成功提示信息

分析注冊碼算法
ok,讓我們開始分析注冊碼算法,經過分析,從下面這個類入手:

可以看到,這個混淆效果要比CLion的混淆效果好的多,並且這個類所在的包的數字簽名,讓你很難通過常規手段進行替換調試。
比如下面的錯誤:

這里我們有兩個辦法:
- 去掉其數字簽名.
- 自己模擬這個類.
這里,根據實際情況,我們不需要完全去除數字簽名,算法相關的類比較少,我們可以在較低的時間成本下采用模擬的方式來推算法。
先看看,這個類里面的幾個重要的點:
- 過期時間:

- 注冊碼驗證:

ok,根據分析,我們找到了注冊碼的一些關鍵算法,其中有幾個解碼的算法也要關注:
- 加密/解密段之一

- 加密/解密段之二

細碎的活兒應該怎么干?
一邊靜態分析,一邊抽代碼到我們的模擬環境中,然后調試,記錄,測試,修改。
可以看到我們的模擬算法逐漸成型:

測試一下:

階段性戰果:

分析激活碼算法
到這里,我們已經追出了注冊碼,My Eclipse 2015還有個激活的步驟。來看看:

可以看到,不找出正確的激活碼是不行的,那我們開始吧!
- 激活碼驗證之一:

- 重要的SystemId(反應激活機器的信息,如處理器、網卡、硬盤等)

- SystemId從哪里來?

值得注意的是,這里取得激活機器信息,使用了JNI,要確定這幾個本地庫能被檢索到:
其中windows使用dll,分32/64位的;unix-like使用so,同樣分32/64位。
到這里,我們離激活碼一步之遙,堅持就是勝利:

上圖可以看出,我們還有個rsa加密/解密沒有搞定,那么追追看吧。
搞定RSA
既然是rsa,那么找找它的key吧,私鑰是不大可能找到了,所以我們利用如下思路來搞:
- 隨便生成一對公鑰/私鑰.
- 用我們的私鑰加密激活碼.
- 用我們的公鑰偷梁換柱.
那么,親,它的公鑰在哪里呢?
- 公鑰

上圖,告訴了我們兩個信息:
- 公鑰的位置,包括名稱:publicKey.bytes
- RSAUtil,這個,我們可以直接copy過來用,真是省心^^.
勝利的曙光就在前面,讓我們最后檢驗下隊伍吧:

開始准備打補丁了,先使用finder找出它的公鑰:

patch it!

看下階段性成果吧!

看來,功夫沒有白費,激活碼的驗證通過了呢^^.
結語
本篇,我們追出了My Eclipse 2015的注冊碼算法和激活碼算法。
至此,MyEclipse 2015 逆向破解研究系列終結。
貼圖紀念下吧:
- 暴力破解,去除驗證:

- 算出注冊、激活碼,通過驗證:

撰文不易,若覺得本文對你有益,留個言,點個推薦吧 : ]

