<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 謝謝啊
    謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊謝謝啊  回復  更多評論
      
    主站蜘蛛池模板: 亚洲激情在线视频| 日韩中文字幕免费| 国产精品亚洲片在线观看不卡| 国产精品无码亚洲一区二区三区| 中文字幕乱码免费视频| 亚洲国产综合精品| 24小时免费直播在线观看| 亚洲一级免费视频| 成年男女免费视频网站| 亚洲日韩精品无码AV海量| 成人性生交视频免费观看| 精品亚洲国产成人av| 亚洲国产婷婷香蕉久久久久久| 一区二区三区在线免费观看视频 | 亚色九九九全国免费视频| 久久久久se色偷偷亚洲精品av| 妻子5免费完整高清电视| 亚洲啪AV永久无码精品放毛片| 国产精品久免费的黄网站| 免费无遮挡无遮羞在线看| 国产亚洲午夜高清国产拍精品| 欧洲人免费视频网站在线| 亚洲福利视频网址| 日韩在线看片免费人成视频播放| 四虎一区二区成人免费影院网址| 国产aⅴ无码专区亚洲av| 国产成人精品免费视频大全麻豆| 亚洲精华国产精华精华液好用| 亚洲精品在线视频| 99久在线国内在线播放免费观看| 亚洲另类视频在线观看| 日产国产精品亚洲系列| 免费国产叼嘿视频大全网站| 精品亚洲成A人无码成A在线观看| 四虎影视精品永久免费| 青青草无码免费一二三区| 亚洲成av人片在线天堂无| 亚洲成a人片在线观看无码| 成人免费看黄20分钟| 中文字幕av无码不卡免费| 亚洲精品天堂在线观看|