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

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

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

    隨筆 - 147  文章 - 71  trackbacks - 0
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(1)

    隨筆分類(146)

    隨筆檔案(147)

    文章分類(28)

    文章檔案(28)

    喜歡的Blog

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    下載地址:http://proguard.sourceforge.net
    以下面的Test.java文件為例:
    import java.util.*;
    import java.io.*;

    public class Test {
        
    public static void main(String[] args) throws Exception 
            BufferedReader stdin 
    = new BufferedReader(new InputStreamReader(System.in));
               String s 
    = stdin.readLine();        
            
    if(s.length()%2==0)
                System.out.println(showMsg1()); 
            
    else
                System.out.println(showMsg2());
            Flight a 
    = new Flight();
            a.setName(s);
            System.out.println(a.output());
            Bomber b 
    = new Bomber();
            b.setName(s);
            System.out.println(b.output());
            s 
    = stdin.readLine();
            StringTokenizer st 
    = new StringTokenizer(s);
            
    int n = Integer.parseInt(st.nextToken()); 
            System.out.println(compute(n));
        }

        
        
    public static String showMsg1() 
            
    return "You are my sun1"
        }

        
        
    public static String showMsg2() 
            
    return "You are my sun2"
        }

        
        
    public static int compute(int n) 
            
    if(n>1)
                
    return n*compute(n-1); 
            
    else
                
    return 1;
        }

        
        
    public static class Flight{
            
    public Flight(){
            }

            
            
    public String output(){
                
    return this.name;
            }

            
            
    public void setName(String name){
                
    this.name="Flight:"+name;
            }

            
            
    private String name;
        }

        
        
    public static class Bomber{
            
    public Bomber(){
            }

            
            
    public String output(){
                
    return this.name;
            }

            
            
    public void setName(String name){
                
    this.name="Bomber:"+name;
            }

            
            
    private String name;
        }

    }

    首先jar cvf a.jar *.class打包程序,然后jad -d d:\ -r -s java d:\*.class反編譯程序,生成Test.java文件,通過對比可以發現,它和原來文件的內容基本是相同的。

    // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3) 
    // Source File Name:   Test.java

    import java.io.*;
    import java.util.StringTokenizer;

    public class Test
    {
        
    public static class Bomber
        
    {

            
    public String output()
            
    {
                
    return name;
            }


            
    public void setName(String s)
            
    {
                name 
    = (new StringBuilder()).append("Bomber:").append(s).toString();
            }


            
    private String name;

            
    public Bomber()
            
    {
            }

        }


        
    public static class Flight
        
    {

            
    public String output()
            
    {
                
    return name;
            }


            
    public void setName(String s)
            
    {
                name 
    = (new StringBuilder()).append("Flight:").append(s).toString();
            }


            
    private String name;

            
    public Flight()
            
    {
            }

        }



        
    public Test()
        
    {
        }


        
    public static void main(String args[])
            
    throws Exception
        
    {
            BufferedReader bufferedreader 
    = new BufferedReader(new InputStreamReader(System.in));
            String s 
    = bufferedreader.readLine();
            
    if(s.length() % 2 == 0)
                System.out.println(showMsg1());
            
    else
                System.out.println(showMsg2());
            Flight flight 
    = new Flight();
            flight.setName(s);
            System.out.println(flight.output());
            Bomber bomber 
    = new Bomber();
            bomber.setName(s);
            System.out.println(bomber.output());
            s 
    = bufferedreader.readLine();
            StringTokenizer stringtokenizer 
    = new StringTokenizer(s);
            
    int i = Integer.parseInt(stringtokenizer.nextToken());
            System.out.println(compute(i));
        }


        
    public static String showMsg1()
        
    {
            
    return "You are my sun1";
        }


        
    public static String showMsg2()
        
    {
            
    return "You are my sun2";
        }


        
    public static int compute(int i)
        
    {
            
    if(i > 1)
                
    return i * compute(i - 1);
            
    else
                
    return 1;
        }

    }

    進入Proguard的lib目錄,用JDK打開proguardgui.jar,點選Input/Output標簽,選擇要混淆的JAR包(注意是JAR包),輸出JAR包,以及用到的所有類庫。
    點選Obfuscation標簽,選中不需要混淆的類(要被反射的類絕對不能被混淆),一般是1,4,5,9,10,11

    ,12這幾個選項。
    a.txt的文件內容為:(混淆函數名)
    Gcd
    b.txt的文件內容為:(混淆類名)
    A
    B

    點選Process標簽,Process按鈕,生產b.jar

    解壓b.jar后,這時的3個class文件分別為A.class、B.class、Test.class;
    重新反編譯程序jad -d d:\b\ -r -s java d:\b\*.class,生成3個java文件:A.java、B.java、Test.java,具體內容如下:

    A.java
    // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3) 


    public final class A
    {

        
    public A()
        
    {
        }


        
    public final String Gcd()
        
    {
            
    return Gcd;
        }


        
    public final void Gcd(String s)
        
    {
            Gcd 
    = (new StringBuilder()).append("Bomber:").append(s).toString();
        }


        
    private String Gcd;
    }
    B.java
    // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3) 


    public final class B
    {

        
    public B()
        
    {
        }


        
    public final String Gcd()
        
    {
            
    return Gcd;
        }


        
    public final void Gcd(String s)
        
    {
            Gcd 
    = (new StringBuilder()).append("Flight:").append(s).toString();
        }


        
    private String Gcd;
    }
    Test.java
    // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3) 

    import java.io.*;
    import java.util.StringTokenizer;

    public class Test
    {

        
    public Test()
        
    {
        }


        
    public static void main(String args[])
        
    {
            String s;
            
    if((s = (args = new BufferedReader(new InputStreamReader(System.in))).readLine()).length() % 2 == 0)
                System.out.println(
    "You are my sun1");
            
    else
                System.out.println(
    "You are my sun2");
            Object obj;
            ((B) (obj 
    = new B())).Gcd(s);
            System.out.println(((B) (obj)).Gcd());
            ((A) (obj 
    = new A())).Gcd(s);
            System.out.println(((A) (obj)).Gcd());
            s 
    = args.readLine();
            args 
    = Integer.parseInt((args = new StringTokenizer(s)).nextToken());
            System.out.println(Gcd(args));
        }


        
    private static int Gcd(int i)
        
    {
            
    if(i > 1)
                
    return i * Gcd(i - 1);
            
    else
                
    return 1;
        }

    }
    通過對比可以發現,它和原來文件的內容有許多出入。
    posted on 2009-11-23 20:40 飛翔天使 閱讀(12605) 評論(1)  編輯  收藏 所屬分類: java

    FeedBack:
    # re: Proguard使用教程 2012-06-09 15:39 謝謝啊
    謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊  回復  更多評論
      
    主站蜘蛛池模板: 亚洲AV永久无码精品一百度影院| jizz免费在线观看| 亚洲av无码国产精品夜色午夜| 日韩免费无码一区二区视频 | 午夜国产羞羞视频免费网站| 亚洲免费中文字幕| a级毛片在线免费看| 污视频网站在线观看免费| 99免费观看视频| 国产精品成人啪精品视频免费| 精品亚洲av无码一区二区柚蜜| 亚洲精品欧洲精品| 亚洲视频在线播放| 久久亚洲国产精品| 国产成人精品日本亚洲| jlzzjlzz亚洲乱熟在线播放| 免费看国产精品麻豆| 国产精品成人无码免费| 成人免费午间影院在线观看| 很黄很黄的网站免费的| 永久看日本大片免费35分钟| 日韩精品在线免费观看| 亚洲成AV人片在WWW| 亚洲乱码在线卡一卡二卡新区| 亚洲色图.com| 久久久国产精品亚洲一区| 免费国产一级特黄久久| 无码AV片在线观看免费| 久久精品国产免费| 中文字幕久精品免费视频| 最新久久免费视频| 免费国产成人午夜在线观看| 久久精品视频免费| 久久免费观看国产99精品| 少妇人妻偷人精品免费视频| 青青草无码免费一二三区| 最近中文字幕国语免费完整| a在线视频免费观看在线视频三区| 一区二区免费在线观看| rh男男车车的车车免费网站| 久草免费福利在线|