6年之前一直做過一些內存掛,腳本掛。都是比較低級的技術。 這幾年期間,斷斷續續利用業余時間學了一些匯編的知識,當時只是想着破解游戲。
所有的黑技術都是業余自學的,沒有老師可以問,只能百度和自己領悟,比較苦逼。有時候搞一個東西搞到吐血,想砸電腦。
6年前就知道 Windows破解的工具: ida, ollydbg. CE. 換到Mac電腦,想當然也是想用這個幾個軟件。百度了一番,除了ollydbg, 都有Mac版本的。
於是網上下載了一個mac版本的IDA工具,隨便拖了幾個可執行程序分析了一番,還不錯的,挺強大的。
我用這個工具,破解了很多cocos2dx加密的游戲, 也用這個工具破解了公司加密的nodejs庫。
全是靠先搜索字符串,然后定位到代碼的地方,然后反編譯,拿到偽C代碼。 這種方式有很大的局限。
這個玩意修改代碼很弱,需要很強的匯編的知識,得知道指令code碼,才能修改。也得保證字節長度。
最為關鍵是不能動態調試,一調試程序就崩潰。 這個玩意弄了我好久,氣到吐血。
甚至有一種想法重金買正版,看這個玩意能不能在mac上調試。
新的曙光,無意之中,看到了hopper工具。 於是下載了一個破解版本的hopper 4.0.3
想動態調試一番,不管怎么着,也始終調試不了。一直提示無法啟動lldb或者沒有權限。
無奈之下,只好刪除這個破解版本, 去官網買了一個正版。
【這個中間有一個插曲: 我花了685塊大洋,結果他娘的不給老子license. 於是果斷發郵箱過去詢問。 這里不能使用QQ郵箱。
只能使用非QQ郵箱和他們對話, 第一封email的意思是我使用支付寶付完費用了,為什么沒有收到licence, 下的訂單填的QQ郵箱。
下午兩點給我的回復,說需要支付截圖。 我白天在上班比較忙 ,晚上10點多才看到這個回復, 於是把支付寶支付的截圖發過去了,凌晨5點多,他們回復了。
也沒說原因,只是說解決了這個問題,讓我再次查收QQ郵箱。終於license文件收到了。從付費到拿到license文件,整整一天一夜】
附一張版本信息截圖:
工具有了,就得發揮他的作用了,先拿cleanmymac-x開刀。
為什么要破解它?因為本人花錢買了一個cleanmyMac 3的永久授權, 但是目前有了-X最新版, 於是想要升級,結果他娘的,又要錢。搞的很不爽。
真正開始破解:
破解工具:hopper 4.5.12, charles
破解對象:cleanmymac-x 4.4.3中文版
1, 拖拽cleanmymac-X 文件到工具hopper 4.5.12,如圖
2. 搜索字符串,.php.
為什么要搜索它?是因為我打開charles工具后,輸入license字符串,檢測到驗證的地址是 .php的接口
3,跳到使用這個這個字符串的方法:
000000010050c055 db "https://activations.devmate.com/activation.php", 0 ; DATA XREF=sub_1003a3410+1621
雙擊sub_1003a3410 就跳入了
反編譯它,這個函數有一大坨。從頭到尾掃了一遍, 大概邏輯流程看懂了。
函數前半段,就是加密你輸入的數據,然后組織請求頭和請求參數,異步發送請求。
我不關心他是怎么加密的,怎么組織數據發送出去的。我只關心程序后半段,即處理服務器返回的數據。
后半段的部分截圖:
動態調試了一番,從網絡上拿到的數據是二進制數據,應該是加密處理了。 MSMutablelData里存放的是 【v3.二進制網絡數據】
4,跟蹤了很長時間沒一個結果,准備放棄制作注冊機了。這里比較繞,太浪費時間。
破解軟件一般有3種方法:
a,一般逆向出算法,搞一個注冊機出來,這樣在不修改源二進制文件的情況可以達到破解目的。
b,直接修改二進制代碼,直接跳過認證。
c,如果軟件有試用期時間,動態直接找到讀寫試用期的位置,然后進行刪除,然后無限試用
5,決定采用直接修改二進制代碼,直接跳過認證的方式來破解這個軟件。
再次所搜字符串 isactiv 得到結果:
6, 從上圖結果可知,是否激活的標志取決於 sub_1003712a0方法,查找交叉引用找到sub_100372d90
修改這個方法直接,讓0,變成1.
修改完后保存二進制文件:shiltf + Command + E
彈窗的意思是:
已經修改了已簽名的應用程序。原有簽名對生成的新的二進制文件無效。 要不要刪除這個刪除這個無效簽名。
這里選擇刪除即可。【正確做法是: 保持無效簽名】
7, 然后重新測試cleanmymac-x, 發現已經破解了,不會再有任何彈窗了。 但是會有一些清理不干凈,是因為沒有權限的原因, 沒有簽名也就沒法賦予權限。
8,重新簽名:
查看簽名:
➜ dmg codesign -v CleanMyMac\ X.app CleanMyMac X.app: code object is not signed at all In architecture: x86_64
查找本機可用的簽名:security find-identity -v -p codesigning
重新簽名:codesign -f -s "簽名" /path/to/app
/Library/Developer/CommandLineTools/usr/bin/codesign_allocate: file not in an order that can be processed (link edit information does not fill the __LINKEDIT segment): /Users/dengzhongqiang/Downloads/dmg/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X CleanMyMac X.app: the codesign_allocate helper tool cannot be found or used
報錯了。
出現這個問題並不是簽名工具出錯了,而是hopper生成二進制文件時去除簽名信息過程中導致的LINKEDIT段錯誤。對比文件會發現出了自己修改的匯編代碼還有別的數據一起被改掉了,並且被改掉的數據還是挺多的。要解決問題也很簡單,生成可執行文件的時候不要去掉簽名信息。重新導出一個版本
沒破解前的簽名:
➜ dmg codesign -dvvv /Applications/CleanMyMac\ X.app
Executable=/Applications/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X
Identifier=com.macpaw.zh.CleanMyMac4
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=69061 flags=0x10000(runtime) hashes=2149+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=3f59bf294b4a40914c2f13f48c28ab99cd7f98a5
CandidateCDHash sha256=6890d759d07aa2cf1513b0e01070ac7617a44be3
Hash choices=sha1,sha256
CDHash=6890d759d07aa2cf1513b0e01070ac7617a44be3
Signature size=9003
Authority=Developer ID Application: MacPaw Inc. (S8EX82NJP6)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 14, 2019 at 7:46:17 PM
Info.plist entries=41
TeamIdentifier=S8EX82NJP6
Runtime Version=10.14.0
Sealed Resources version=2 rules=13 files=236
Internal requirements count=1 size=188
破解后的簽名:和上面一摸一樣。
重新簽名:
➜ MacOS codesign -f -s "Mac Developer: Deng Zhongqiang (Z5472F3S63)" /Applications/CleanMyMac\ X.app
/Applications/CleanMyMac X.app: replacing existing signature
再查看重新簽名的破解文件的簽名:
➜ MacOS codesign -dvvv /Applications/CleanMyMac\ X.app
Executable=/Applications/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X
Identifier=com.macpaw.zh.CleanMyMac4
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=68953 flags=0x0(none) hashes=2149+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=efb5f4497d7e8b7c5d5d271aadd02a9ac8547090
CandidateCDHash sha256=7792767bec80d69685747f1d343d6c332dff6f6c
Hash choices=sha1,sha256
CDHash=7792767bec80d69685747f1d343d6c332dff6f6c
Signature size=4782
Authority=Mac Developer: Deng Zhongqiang (Z5472F3S63)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Jun 23, 2019 at 2:29:14 AM
Info.plist entries=41
TeamIdentifier=Q53X4QR364
Sealed Resources version=2 rules=13 files=236
Internal requirements count=1 size=188
===============
接近尾聲:基本上可用把破解包發給別人用了。
1, 把破解包拷貝到dmg目錄【目錄名dmg自己隨意】,
2, cd dmg
3, ln -s /Applications Applications
4 , 使用磁盤工具》 文件 》新建映像 》來自文件夾的映像 〉選擇dmg
==============
給別人的破解軟件可能會一直彈出安裝幫助程序界面。
解決辦法有兩種:
1,先讓別人安裝正版軟件,先進行身份驗證【操作菜單-》身份驗證】, 然后再用破解的二進制替換正版的二進制文件
如果是已經驗證的情況,點擊 操作菜單-》取消驗證。 如果是這種情況,說明 CleanMyMac\ X.app已經驗證過了, 不需要再次驗證。
只需要替換CleanMyMac\ X.app/contens/macos 目錄下的二進制文件就好了。 注意僅僅是單個二進制文件,不要替換整個app包。
2,
sudo xattr -r -d com.apple.quarantine /Applications/CleanMyMac\ X.app
sudo codesign --force --deep --sign - /Applications/CleanMyMac\ X.app
或者 codesign --sign --force --deep /Applications/CleanMyMac\ X.app
參考百度經驗:https://jingyan.baidu.com/article/67508eb462f5519ccb1ce460.html
=================== 2020/04/18 更新, 目前最新版本是4.6.2版本
我又重新破解了一遍這個版本, 即使沒有解鎖完整版本的標志了,但是發現刪除文件時要一直輸入密碼:
關於這個一直彈窗輸入密碼的問題, 修改的位置關鍵點如圖:
即使解決了彈窗問題, 發現刪除文件不干凈, 查看日志,顯示無權限操作.
關於這個的問題, 執行以下命令
sudo chown -R root:admin /Applications/CleanMyMac\ X.app
到此, 破解工作全部結束.