<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    不可不說
    隨心所欲,無往不利!
    posts - 88,  comments - 92,  trackbacks - 0
    Firestorm是一個用JAVA寫的代碼生成工具,可以替你節(jié)省很多的代碼量,可以說同類軟件中功能最強(qiáng)的一個。

    Firestorm是一個用JAVA寫的代碼生成工具,可以替你節(jié)省很多的代碼量,可以說同類軟件中功能最強(qiáng)的一個。
    你可以在網(wǎng)上下載到最新的2.3試用版本,同時網(wǎng)站會發(fā)給你一個試用的license文件。既然是試用,
    那么在使用上肯定有一定的限制。主要限制有3個:
        1.只能最多生成5張表的DAO;
        2.有時間限制;
        3.不能自己定制代碼生成;

    為了能夠更好的試用這個軟件,我得改改它,去掉這些限制。將firestorm.jar打開后,可以看到它使用了
    混淆器進(jìn)行代碼保護(hù),不同于大多數(shù)的混淆器生成的文件,它的class和package大部分都是以關(guān)鍵字來命名,
    所以如果你用JAD之類的工具把它反編譯后是不能再把它編譯成功,編譯器會提示出錯誤。

    反編譯后,找到幾個有關(guān)注冊的關(guān)鍵文件,發(fā)現(xiàn)它使用的是數(shù)字簽名技術(shù)來做的保護(hù),所以想逆向找出
    注冊碼的計算方法是不可行的了,只能通過修改文件的方法來破解。通常我們是先反編譯,然后再修改
    反編譯后生成的原文件,最后再重新編譯。但是由于文件名和包名的關(guān)系我們無法進(jìn)行編譯,除非把它的
    這些‘非法'的文件名和包名全部改成符合java語言規(guī)范的名稱,由于類,包眾多,互相調(diào)用也很
    頻繁,所以這種方法幾乎不可能的。

    另外一種方法就是使用softice之類的調(diào)試軟件來破解,不過這個脫離JAVA的范疇,這里不做討論。

    還有一種方法可能很少有人用,就是先反編譯得到原文件,然后找到關(guān)鍵的方法后修改它的字節(jié)碼,
    也就是class文件,這中方法往往需要你知道一些有關(guān)CLASS文件格式方面的知識(如果沒有也不用擔(dān)心),
    有許多的處理字節(jié)碼的工具可以幫助你,比較流行的這類工具主要有:apache.org的BCEL;
    jboss.com的javassist;objectweb.org的asm。都是出身名門哈。這3個工具各有特點(diǎn),
    這次我選用javassist,因?yàn)樗薷腸lass文件最方便,甚至不需要懂得字節(jié)碼和class文件格式。

    讓我們來看看具體步驟:


    step1:
        下載并安裝FIRESTORM。
    step2:
        反編譯jar文件,閱讀代碼,找到關(guān)鍵的方法。當(dāng)然,我這里寫出來,你就不用再麻煩了。(其實(shí)這步是最
        麻煩的)。
        找到com.codefutures.if.if文件中的方法
            public static boolean a(java.security.PublicKey publickey,
                    byte abyte0[], byte abyte1[])
                throws java.security.NoSuchAlgorithmException,
                java.security.NoSuchProviderException,
                java.security.InvalidKeyException,
                java.security.SignatureException {
                java.security.Signature signature = java.security.Signature.getInstance("SHA1withDSA", "SUN");
                signature.initVerify(publickey);
                signature.update(abyte0);
                return signature.verify(abyte1);
            }

        這個方法是對公鑰進(jìn)行檢驗(yàn),修改的思路就是直接讓他返回一個true.

    step2:
        收到firestorm.license文件后不要急著安裝,先修改如下:
            <custom-codegen>no</custom-codegen>
                改為
            <custom-codegen>yes</custom-codegen>

            <restriction>5</restriction>
                改為
            <restriction>none</restriction>

            <expiry-date>[日期]</expiry-date>
                改為
            <expiry-date>never</expiry-date>

        修改后放到firestorm的安裝路徑的license目錄。

    step3:
        修改com.codefutures.if.if的class文件.這里我們需要寫一個小程序來完成實(shí)現(xiàn):
            import javassist.ClassPool;
            import javassist.CtClass;
            import javassist.CtMethod;


            public class Test {
                
                public static void main(String[] args) throws Exception {
                    ClassPool pool = ClassPool.getDefault();

                    //設(shè)置目標(biāo)類的路徑,確保能夠找到需要修改的類,這里我指向firestorm.jar
                    //解包后的路徑
                    pool.insertClassPath("d:/work/firestorm/firestorm") ;    
                    
                    //獲得要修改的類
                    CtClass cc = pool.get("com.codefutures.if.if");
                    //設(shè)置方法需要的參數(shù)
                    CtClass[] param = new CtClass[3] ;                
                    param[0] = pool.get("java.security.PublicKey") ;
                    param[1] = pool.get("byte[]") ;
                    param[2] = pool.get("byte[]") ;

                    //得到方法
                    CtMethod m = cc.getDeclaredMethod("a", param);
                    //插入新的代碼
                    m.insertBefore("{return true ;}") ;
                    //保存到文件里
                    cc.writeFile() ;
                }
            }

        
        修改完后,你可以反編譯修改過的的class文件,看看代碼是否加入成功。

    step4:
        將所有的class文件重新打包成firestorm.jar,然后替換
        [firestorm安裝路徑]/lib/firestorm.jar,再啟動firestorm即可。
    posted on 2008-09-18 15:26 藍(lán)劍 閱讀(7700) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325217
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品视频免费看| 男女一边桶一边摸一边脱视频免费| 亚洲精品美女久久久久99小说| 国产色爽免费视频| 亚洲AV成人影视在线观看| 无码精品一区二区三区免费视频 | 西西人体大胆免费视频| 扒开双腿猛进入爽爽免费视频| 永久免费看bbb| 国产成人无码免费看片软件| 免费一级一片一毛片| 免费看又黄又爽又猛的视频软件| 国精产品一区一区三区免费视频| 无码专区永久免费AV网站| 亚洲AV无码精品蜜桃| 91精品免费国产高清在线| 亚洲精品在线视频观看| 久草视频免费在线观看| 亚洲精品无码成人片久久不卡| 国产日韩AV免费无码一区二区| 在线观看人成视频免费| 老司机亚洲精品影院在线观看 | 久久亚洲中文字幕无码| 国产精品免费综合一区视频| 日韩在线视频线视频免费网站| 久久久久国产精品免费免费搜索| 亚洲成人国产精品| 亚洲av日韩综合一区在线观看| 国产精品亚洲av色欲三区| 国产啪亚洲国产精品无码| 一级成人a毛片免费播放| 亚洲色图校园春色| 国产又大又黑又粗免费视频| 一区二区三区免费视频观看| 内射干少妇亚洲69XXX| 一级看片免费视频囗交| 亚洲成人激情在线| 日本免费网站在线观看| 人妻在线日韩免费视频| 亚洲影院天堂中文av色| 亚洲精品无码久久久久去q|