輕松

          記述我學(xué)習(xí)java的里程

          常用鏈接

          統(tǒng)計

          積分與排名

          友情鏈接

          最新評論

          Java的破解和反破解之道

          摘自久久學(xué)院
            java字節(jié)碼能夠很容易被反編譯大家都曉得啦,今天下午我為了得到一個心儀已久的jbuilder opentools(昨天1.0 Released,新鮮出爐!但只能用14天,這怎么行,于是我不惜放下其他工作,研究了一把該軟件加密方法的破解和反破解,結(jié)合以前的一些經(jīng)驗(yàn),作文一篇與大家共饗,并不是鼓勵大家......

            破解之道:



            對一些提供license.key(包含授權(quán)信息的加密文件)的軟件,一般這種文件會采用DES,RAS和CRC校驗(yàn)而且一般是二進(jìn)制的(即使有時輸出成BASE64編碼),直接修改文件是浪費(fèi)時間的,你可以先反編譯通過閱讀源程序來探究解密過程,如果過程是可逆的,那么你自己實(shí)現(xiàn)一個加密過程,可以很容易的生成你自己想要的license key;如果過程不可逆也不是就搞不定了,有些強(qiáng)度不大的加密算法還是可以用暴力破解法來搞定,還有一種情況是對數(shù)字加密(一般指過期時間)如果你能修改這個過期時間那么你就可以多用一會兒了,用數(shù)學(xué)方法描述一下:

            假設(shè)集合 X 是明文包含的元素集合,Y是X經(jīng)過算法后的映射,包含密文元素,,如果有存在兩個算法A和B,能使得{ Y -A-> X } = { Y -B-> X },A算法可逆,但B算法是不可逆的,生產(chǎn)方用A的逆算法加密授權(quán)信息(X:String) 到(Y:byte[]),并在軟件中用B算法解密,這樣你就搞不定了,但如果集合X的元素是有限的,假設(shè)只有0-9 (new Date().getTime()格式),那么算法B就稱為不可逆但不可靠的,因?yàn)槟阃ㄟ^一個樣本(一般都會給你評價版的license啦!),是可以得到某些Y集合中元素在X集合中的逆映射的,這樣你可以直接用這張映射表來修改license了...

            反破解之道

            如果是做產(chǎn)品或提供演示程序,加密還是有好處的,加密的軟件可以用上面提到的JODE,一般都是對編譯好的class文件進(jìn)行擾亂,因?yàn)椴⒉皇撬械姆柖夹枰獢_亂,如果你開發(fā)的是一個類庫,或者某些類需要動態(tài)裝載,那些公共API就必須保留符號不變,這樣別人才能使用你的類庫。先編寫腳本對那些需要保留的符號名稱進(jìn)行配置,某些擾亂器能夠調(diào)整字節(jié)碼的順序,使反編譯更加困難。如果你用的代碼擾亂器能保證別人不能通過反編譯來修改或代替你的class,那么你還得注意不要用不可靠的加密算法。

          posted on 2005-02-01 11:25 輕松 閱讀(351) 評論(0)  編輯  收藏 所屬分類: JAVA轉(zhuǎn)貼

          主站蜘蛛池模板: 华宁县| 麻栗坡县| 韩城市| 东宁县| 西青区| 新野县| 五峰| 乌鲁木齐市| 泽库县| 绵阳市| 麦盖提县| 屯门区| 公安县| 富锦市| 淳化县| 沁阳市| 鲜城| 临清市| 青浦区| 化州市| 栾川县| 岐山县| 扶沟县| 绿春县| 娱乐| 文成县| 鹤峰县| 水城县| 科技| 绥棱县| 凌海市| 湖口县| 泸州市| 米林县| 尼勒克县| 札达县| 美姑县| 兴安县| 宁陵县| 龙江县| 大厂|