<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é)省很多的代碼量,可以說同類軟件中功能最強的一個。

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

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

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

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

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

    讓我們來看看具體步驟:


    step1:
        下載并安裝FIRESTORM。
    step2:
        反編譯jar文件,閱讀代碼,找到關(guān)鍵的方法。當然,我這里寫出來,你就不用再麻煩了。(其實這步是最
        麻煩的)。
        找到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);
            }

        這個方法是對公鑰進行檢驗,修改的思路就是直接讓他返回一個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文件.這里我們需要寫一個小程序來完成實現(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è)置目標類的路徑,確保能夠找到需要修改的類,這里我指向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 藍劍 閱讀(7699) 評論(0)  編輯  收藏

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


    網(wǎng)站導航:
     


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

    常用鏈接

    留言簿(6)

    隨筆分類(62)

    隨筆檔案(90)

    文章檔案(9)

    相冊

    友情鏈接

    搜索

    •  

    積分與排名

    • 積分 - 325155
    • 排名 - 172

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色窝窝亚洲AV网在线观看| 久久久久久亚洲精品影院| 日韩在线观看免费完整版视频| 永久免费av无码网站大全| 亚洲香蕉在线观看| 很黄很色很刺激的视频免费| 亚洲经典在线中文字幕| 18禁免费无码无遮挡不卡网站 | 日本高清免费不卡视频| 亚洲午夜精品一区二区麻豆| 在线免费观看污网站| 伊人久久亚洲综合影院首页| 免费鲁丝片一级观看| 激情小说亚洲色图| 亚洲乱码国产一区网址| 麻豆安全免费网址入口| 久久精品国产亚洲5555| 国产成人一区二区三区视频免费| 香蕉蕉亚亚洲aav综合| 青青在线久青草免费观看| 亚洲av无码偷拍在线观看| 国产成人精品久久亚洲高清不卡 | 中文字幕免费在线看线人动作大片| 久久精品国产亚洲| 在线观看AV片永久免费| 日韩色视频一区二区三区亚洲 | 亚洲国产日韩a在线播放| 超pen个人视频国产免费观看| 亚洲精品久久无码| 亚洲美女高清一区二区三区| 精品免费tv久久久久久久| 亚洲成aⅴ人片在线观| 国产一级高清视频免费看| 中文字幕永久免费| 亚洲AV无码成人专区| va亚洲va日韩不卡在线观看| 在线看无码的免费网站| 国产精品亚洲精品日韩动图| 久久久久亚洲精品美女| 日本免费人成黄页在线观看视频| a级片免费观看视频|