今天在逛安智的時候看到一個軟件,我對注冊碼驗證的程序比較感興趣哈,- -
那個帖子的軟件是通過爆破法實現破解的,之前我在這個帖子講過
http://www.52pojie.cn/thread-376802-1-1.html 爆破法雖然直截了當,不過不利於之後的升級,那我們有沒有更好的方法來干掉這個軟件,方法當然是有的,也就是我們今天的主題。
原軟件地址:http://www.eoemarket.com/soft/232473.html
0x1 爆破軟件觀察注冊機制
打開軟件,找到注冊處,點擊獲取按鈕後有幾種支付模式,我當然是選擇最熟悉的支付寶模式
我們直接爆破支付,搜索關鍵詞 9000 的十六進制,即0x2328,找到
在方法開始處添加一行,
回編譯,打開支付寶後直接返回上一級,提示支付成功,注冊碼也出來了,很明顯的md5加密模式
0x2 尋找加密算法
我們搜索toast提示的文本信息,注意是unicode編碼,找到關鍵點,打開java代碼,
很明顯的看到,注冊碼是調用了cc類的b方法,並將k方法的數據傳入,我們點開k方法
不難發現,該方法通過調用系統設備信息,獲取到設備號後在數據前添加“L”,在末尾添加了“8H6”,返回該值,傳入到cc類的b方法中,我們點開cc類,我擦
此處被作者混淆了,jd-gui無法識別,那我們就無法進行下一步了嗎,答案當然是否定的,這也是本主題重點,投機取巧偷取加密算法
0x3 編寫“假”注冊機
打開eclipse,新建一個Android項目,包名最好和原軟件相似,方便修改
其它一切默認即可,
我們在包下新建一個cc類,寫上一個方法,定義一個全局的String方法,直接返回即可,不添加任何代碼
在方法中將該軟件獲取設備號的方法寫入,然後在Oncreate方法中進行調用,並顯示在textview上,需要注意的是,我們需要在AndroidManifest文件中添加一個讀取設備信息的權限,不然軟件是無法獲取的
好了,“假”注冊機已經編寫好了,我們直接導出為apk文件,這個注冊機是什麼用都沒有的,但截下來我們把它變成真的注冊機
0x4 偷梁換柱之真注冊機
我們找到導出的apk文件,用改之理反編譯,然後將二級考試原軟件的cc類復制到我們的反編譯工程中替換我們編寫的cc類,需要注意的是,我們在最上方需要將包名修改為我們自己設置的包名,保存,回編譯
運行軟件,看到了嗎
我們將這段數據復制到軟件的注冊框中,
大功告成。。