home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / acid_burn2000 / java.txt < prev    next >
Text File  |  2000-05-25  |  23KB  |  767 lines

  1.  
  2.   ·      ·    -  -- A C i D B U R N - P R O D U C T i O N S -- - ▄   ·     ·
  3.      ░    ▄  ░      ▄ ▄  ▄       ░ ▄░          ░ ▄     ▄         ▐█▄   ▄ ░
  4.   ▄██▓▀▀███▌▄▓█▀▀▀███▌▐█▌▐███▀▀▀█▓▄▐▓██▀▀███▄░▄▓█▌ ▀▄  ▐███▀▀███▄░▓██▄ ▐█▓▄
  5.   ███▌ ░▓██▌███ ░▀▀▀▀ ▀▀▀ ███ ░ ███▌███  ▐██▓░▓██ ░ ██▌▐███▌ ▐██▓ ███▀█▄███▌
  6.   ▓██▀▀▀███▌███▌░ ░▓█▌███▌███ ░ ███▌███▀▀▀██▄▐███ ░ ███▐███▀▀▓██▄ ███▌ ▀███▌
  7.  ░▓██▌░ ███ ▓██▌░ ███▌███░▓██ ░▐███▌███▌ ▄███▐███▌░░▓██░▓██▌ ▐███▌███▌░ ███▄
  8.  ▐███▌░ ███▐███▌░ ███▐██▓▐███ ░▐███░▓██▌░▐███▐███▌ ▐███▌███▌░ ███▌███▌░ ██▓▀▄
  9.  ▐███▌░ ███▐███▌░ ███▐██▓▐███ ░▐███▐███ ░▐███▐███▌ ▐███▌███▌░░▓██ ▓██▌░ ██▌
  10.  ▐██▓ ░▐██▓▀▒██▄▄▄███▒██▓▐███▄▄██▒▀▓███▄▄████▀████▄▓███▀▓█▒▄ ▐█▀ ░▓███ ▐█▀
  11.   ▀      ▀░  ▀    ▀    ▀       ▀          ▀         ▀   ░    ▀      ▀  ▀
  12.   ·      ·    -  -- A C i D B U R N - P R O D U C T i O N S --  -    ·     ·
  13.                                 SRT - CRO
  14.  
  15.  
  16.  
  17.         JAVA REVERSE ENGINEERING: How to defeat java !
  18.                                  
  19.         Tutorial by ACiD BuRN [Immortal Descendants]             
  20.                              (October 23th, 1999)             
  21.  
  22.  
  23.  
  24.  
  25.  
  26. Intro:
  27.  
  28. ok , it is really easy to reverse java apps , when u got a decompiler !!
  29. i will show u how easy can be java reversing , but there is harder things , like
  30. name / serial apps.I never seen anyone yet , but there is somes already done !
  31.  
  32. Tools needed:
  33.         - JAD (java decompiler)
  34.         - nothing more :)    
  35.  
  36.  
  37. URLS:           http://www.lawrencegoetz.com/   (the java target app)
  38.                 http://acidburn2000.cjb.net/    (the java decompiler soon on my site)
  39.  
  40.  
  41. In this tutor we will crack 3 Things : Goetz's Banner V 2.0 , Goetz's Marquee 1.1,
  42. and ManKind java crackme !
  43.  
  44.  
  45. ok , lets start
  46.  
  47. unzip the Goetz's Banner V 2.0 archive in one directory.You must see some files , and if 
  48. you run the sample file , (exemple.html) you see the banner effect due of this nice
  49. java thingy , but A BIG UNREGISTERED SHIT is shown !! hehe Doh :p
  50. so, Java files are '.class' , so just click on the gbanner.class file , and move it on
  51. Jad.exe to decompile it!!
  52. But it is better to make a Bat file becoz , the decompiled file might be in the Windows
  53. directory!
  54. anyway , if you can find it , just do a search on your hard disk on gbanner.jad
  55. Ok, now you have this file , open it with notepad , and you see this:
  56.  
  57.  
  58. --------------------------------------gbanner.JAD------------------------------------------
  59.  
  60. // Decompiled by Jad v1.5.7. Copyright 1997-99 Pavel Kouznetsov.
  61. // Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
  62. // Decompiler options: packimports(3) 
  63. // Source File Name:   gbanner.java
  64.  
  65. import java.applet.Applet;
  66. import java.applet.AppletContext;
  67. import java.awt.*;
  68. import java.io.*;
  69. import java.net.MalformedURLException;
  70. import java.net.URL;
  71. import java.util.Vector;
  72.  
  73. public class gbanner extends Applet
  74.     implements Runnable
  75. {
  76.  
  77.     public boolean mouseEnter(Event event, int i, int j)
  78.     {
  79.         if(info[place] != null && displaying)
  80.             getAppletContext().showStatus(info[place]);
  81.         mouseInside = true;
  82.         return true;
  83.     }
  84.  
  85.     public void stop()
  86.     {
  87.         running = false;
  88.         if(animate != null)
  89.         {
  90.             animate.stop();
  91.             animate = null;
  92.         }
  93.     }
  94.  
  95.     public gbanner()
  96.     {
  97.         m_background = "white";
  98.         test_it = "";
  99.         drawn = true;
  100.         zoom = true;
  101.         pausable = true;
  102.         m_target = "_self";
  103.     }
  104.  
  105.     public boolean mouseExit(Event event, int i, int j)
  106.     {
  107.         mouseInside = false;
  108.         getAppletContext().showStatus("");
  109.         return true;
  110.     }
  111.  
  112.     public void paint(Graphics g)
  113.     {
  114.         if(drawable)
  115.         {
  116.             g.drawImage(offImage, 0, 0, this);
  117.             place = loadImage;
  118.         }
  119.         drawn = true;
  120.     }
  121.  
  122.     public String[][] getParameterInfo()
  123.     {
  124.         String as[][] = {
  125.             {
  126.                 "image", "String", "lineN where N is the line number"
  127.             }, {
  128.                 "background", "String", "Background color"
  129.             }, {
  130.                 "URL", "String", "URLN where N is the URL for the image N."
  131.             }, {
  132.                 "target", "String", "Target of URL"
  133.             }, {
  134.                 "info", "String", "infoN where N is the infomation for the image N."
  135.             }, {
  136.                 "pause", "String", "pauseN where N is the pause time for the image N."
  137.             }, {
  138.                 "zoom", "String", "Zoom the images or not."
  139.             }, {
  140.                 "shuffle", "String", "Shuffle the images or not."
  141.             }, {
  142.                 "pauseable", "String", "Pause the applet when the mouse is in it."
  143.             }, {
  144.                 "one", "String", "Display only one image. Good for use with shuffle to display one random image."
  145.             }
  146.         };
  147.         return as;
  148.     }
  149.  
  150.     public void destroy()
  151.     {
  152.         running = false;
  153.         if(animate != null)
  154.         {
  155.             animate.stop();
  156.             animate = null;
  157.         }
  158.     }
  159.  
  160.     public int[] shuffle()
  161.     {
  162.         Vector vector = new Vector();
  163.         int ai[] = new int[amount];
  164.         for(int j = 0; j < amount; j++)
  165.             vector.addElement(new Integer(j));
  166.  
  167.         for(int k = 0; k < amount; k++)
  168.         {
  169.             int i = (int)(Math.random() * (double)(amount - k));
  170.             Integer integer = (Integer)vector.elementAt(i);
  171.             ai[k] = integer.intValue();
  172.             vector.removeElementAt(i);
  173.         }
  174.  
  175.         return ai;
  176.     }
  177.  
  178.     public void update(Graphics g)
  179.     {
  180.         paint(g);
  181.     }
  182.  
  183.     public void start()
  184.     {
  185.         place = 0;
  186.         if(offImage == null)
  187.         {
  188.             offImage = createImage(d.width, d.height);
  189.             offGraphics = offImage.getGraphics();
  190.         }
  191.         try
  192.         {
  193.             myInfo = new URL(getDocumentBase(), "gboption.ini");
  194.         }
  195.         catch(MalformedURLException _ex)
  196.         {
  197.             good = false;
  198.         }
  199.         if(myInfo != null)
  200.             try
  201.             {
  202.                 input = myInfo.openStream();
  203.                 dataInput = new DataInputStream(input);
  204.                 test_it = dataInput.readLine();
  205.                 dataInput.close();
  206.             }
  207.             catch(IOException _ex) { }
  208.         if(test_it.equals("InFeb"))
  209.             good = true;
  210.         running = true;
  211.         if(animate == null)
  212.         {
  213.             animate = new Thread(this);
  214.             animate.start();
  215.         }
  216.     }
  217.  
  218.     public String getAppletInfo()
  219.     {
  220.         return "Title: Goetz's Banner\r\n" + "Author: Lawrence Goetz\r\n" + "E-mail: goetz@lawrencegoetz.com\r\n" + "Web: http://www.lawrencegoetz.com/\r\n" + "Copyright Lawrence Goetz 1998";
  221.     }
  222.  
  223.     public boolean mouseDown(Event event, int i, int j)
  224.     {
  225.         if(locations[place] != null && displaying)
  226.             getAppletContext().showDocument(locations[place], m_target);
  227.         return true;
  228.     }
  229.  
  230.     public void run()
  231.     {
  232.         int i = 20;
  233.         int ai[] = null;
  234.         if(shuffle)
  235.             ai = shuffle();
  236.         int j1 = 0;
  237.         if(!shuffle)
  238.             loadImage = j1;
  239.         setMyColor(offGraphics, "blue");
  240.         offGraphics.fillRect(0, 5, 110, 20);
  241.         setMyColor(offGraphics, "yellow");
  242.         offGraphics.drawString("Loading Image", 5, 20);
  243.         drawable = true;
  244.         repaint();
  245.         try
  246.         {
  247.             Thread.sleep(100L);
  248.         }
  249.         catch(InterruptedException _ex) { }
  250.         Thread.yield();
  251.         images = new Image[amount];
  252.         while(running) 
  253.         {
  254.             while(!drawn) 
  255.                 try
  256.                 {
  257.                     Thread.sleep(10L);
  258.                 }
  259.                 catch(InterruptedException _ex) { }
  260.  
  261.             if(shuffle)
  262.                 loadImage = ai[j1];
  263.             if(!shuffle)
  264.                 loadImage = j1;
  265.             images[loadImage] = getImage(getDocumentBase(), getParameter("image" + Integer.toString(loadImage + 1)));
  266.             MediaTracker mediatracker = new MediaTracker(this);
  267.             mediatracker.addImage(images[loadImage], 0);
  268.             try
  269.             {
  270.                 mediatracker.waitForID(0);
  271.             }
  272.             catch(InterruptedException _ex) { }
  273.             drawn = false;
  274.             drawable = false;
  275.             if(!zoom)
  276.                 i = 1;
  277.             image_w = images[loadImage].getWidth(this);
  278.             image_h = images[loadImage].getHeight(this);
  279.             int j = image_w / i;
  280.             int k = image_h / i;
  281.             int l = d.width / 2 - j / 2;
  282.             int i1 = d.height / 2 - k / 2;
  283.             setMyColor(offGraphics, m_background);
  284.             offGraphics.fillRect(0, 0, d.width, d.height);
  285.             if(i != 1)
  286.                 offGraphics.drawImage(images[loadImage], l, i1, j, k, this);
  287.             else
  288.             if(i == 1)
  289.                 offGraphics.drawImage(images[loadImage], l, i1, this);
  290.             if(!good)
  291.             {
  292.                 setMyColor(offGraphics, "blue");
  293.                 offGraphics.fillRect(0, 5, 200, 100);
  294.                 setMyColor(offGraphics, "yellow");
  295.                 offGraphics.drawString("UNREGISTERED VERSION!!!", 5, 25);
  296.                 offGraphics.drawString("Please Register this applet.", 5, 50);
  297.                 offGraphics.drawString("Registration is only $5.", 5, 80);
  298.             }
  299.             drawable = true;
  300.             try
  301.             {
  302.                 Thread.sleep(50L);
  303.             }
  304.             catch(InterruptedException _ex) { }
  305.             if(i > 1)
  306.                 i -= 2;
  307.             if(i <= 0)
  308.                 i = 1;
  309.             else
  310.             if(i == 1)
  311.                 i = 20;
  312.             repaint();
  313.             displaying = true;
  314.             if(i == 20)
  315.             {
  316.                 if(pause[loadImage] > 0)
  317.                     try
  318.                     {
  319.                         Thread.sleep(pause[loadImage] * 1000);
  320.                     }
  321.                     catch(InterruptedException _ex) { }
  322.                 while(pausable && mouseInside) 
  323.                     try
  324.                     {
  325.                         Thread.sleep(100L);
  326.                     }
  327.                     catch(InterruptedException _ex) { }
  328.  
  329.                 while(one && running) 
  330.                 {
  331.                     drawable = true;
  332.                     repaint();
  333.                     try
  334.                     {
  335.                         Thread.sleep(100L);
  336.                     }
  337.                     catch(InterruptedException _ex) { }
  338.                 }
  339.  
  340.                 if(++j1 == images.length)
  341.                 {
  342.                     j1 = 0;
  343.                     if(shuffle)
  344.                         ai = shuffle();
  345.                 }
  346.             }
  347.             Thread.yield();
  348.         }
  349.  
  350.     }
  351.  
  352.     public void init()
  353.     {
  354.         int i = 1;
  355.         String s4 = "image" + Integer.toString(i);
  356.         for(String s = getParameter(s4); s != null; s = getParameter(s4))
  357.         {
  358.             amount++;
  359.             i++;
  360.             s4 = "image" + Integer.toString(i);
  361.         }
  362.  
  363.         locations = new URL[amount];
  364.         for(int j = 0; j < amount; j++)
  365.         {
  366.             String s1 = getParameter("URL" + Integer.toString(j + 1));
  367.             if(s1 != null)
  368.             {
  369.                 try
  370.                 {
  371.                     locations[j] = new URL(getDocumentBase(), s1);
  372.                 }
  373.                 catch(MalformedURLException _ex) { }
  374.             }
  375.             else
  376.             {
  377.                 String s2 = getParameter("URL");
  378.                 try
  379.                 {
  380.                     locations[j] = new URL(getDocumentBase(), s2);
  381.                 }
  382.                 catch(MalformedURLException _ex) { }
  383.             }
  384.         }
  385.  
  386.         String s3 = getParameter("target");
  387.         if(s3 != null && !s3.equals(""))
  388.             m_target = s3;
  389.         info = new String[amount];
  390.         for(int k = 0; k < amount; k++)
  391.         {
  392.             info[k] = getParameter("info" + Integer.toString(k + 1));
  393.             if(info[k] == null)
  394.                 info[k] = getParameter("info");
  395.         }
  396.  
  397.         pause = new int[amount];
  398.         for(int l = 0; l < amount; l++)
  399.         {
  400.             String s6 = getParameter("pause" + Integer.toString(l + 1));
  401.             if(s6 != null && !s6.equals(""))
  402.             {
  403.                 pause[l] = Integer.parseInt(s6);
  404.             }
  405.             else
  406.             {
  407.                 String s7 = getParameter("pause");
  408.                 if(s7 != null && !s7.equals(""))
  409.                     pause[l] = Integer.parseInt(s7);
  410.             }
  411.         }
  412.  
  413.         String s5 = getParameter("background");
  414.         if(s5 != null)
  415.             m_background = s5;
  416.         s3 = getParameter("zoom");
  417.         if(s3 != null && s3.equalsIgnoreCase("false"))
  418.             zoom = false;
  419.         s3 = getParameter("pauseable");
  420.         if(s3 != null && s3.equalsIgnoreCase("false"))
  421.             pausable = false;
  422.         s3 = getParameter("shuffle");
  423.         if(s3 != null && s3.equalsIgnoreCase("true"))
  424.             shuffle = true;
  425.         s3 = getParameter("one");
  426.         if(s3 != null && s3.equalsIgnoreCase("true"))
  427.             one = true;
  428.         d = size();
  429.         place = 0;
  430.         offImage = createImage(d.width, d.height);
  431.         offGraphics = offImage.getGraphics();
  432.         resize(d.width, d.height);
  433.     }
  434.  
  435.     public void setMyColor(Graphics g, String s)
  436.     {
  437.         if(s.equals("white"))
  438.         {
  439.             g.setColor(Color.white);
  440.             return;
  441.         }
  442.         if(s.equals("black"))
  443.         {
  444.             g.setColor(Color.black);
  445.             return;
  446.         }
  447.         if(s.equals("light gray"))
  448.         {
  449.             g.setColor(Color.lightGray);
  450.             return;
  451.         }
  452.         if(s.equals("gray"))
  453.         {
  454.             g.setColor(Color.gray);
  455.             return;
  456.         }
  457.         if(s.equals("dark gray"))
  458.         {
  459.             g.setColor(Color.darkGray);
  460.             return;
  461.         }
  462.         if(s.equals("red"))
  463.         {
  464.             g.setColor(Color.red);
  465.             return;
  466.         }
  467.         if(s.equals("pink"))
  468.         {
  469.             g.setColor(Color.pink);
  470.             return;
  471.         }
  472.         if(s.equals("orange"))
  473.         {
  474.             g.setColor(Color.orange);
  475.             return;
  476.         }
  477.         if(s.equals("yellow"))
  478.         {
  479.             g.setColor(Color.yellow);
  480.             return;
  481.         }
  482.         if(s.equals("green"))
  483.         {
  484.             g.setColor(Color.green);
  485.             return;
  486.         }
  487.         if(s.equals("magenta"))
  488.         {
  489.             g.setColor(Color.magenta);
  490.             return;
  491.         }
  492.         if(s.equals("cyan"))
  493.         {
  494.             g.setColor(Color.cyan);
  495.             return;
  496.         }
  497.         if(s.equals("blue"))
  498.             g.setColor(Color.blue);
  499.     }
  500.  
  501.     private String m_background;
  502.     private final String PARAM_imageN = "image";
  503.     private final String PARAM_background = "background";
  504.     private final String PARAM_URLN = "URL";
  505.     private final String PARAM_infoN = "info";
  506.     private final String PARAM_pauseN = "pause";
  507.     private final String PARAM_zoom = "zoom";
  508.     private final String PARAM_shuffle = "shuffle";
  509.     private final String PARAM_target = "target";
  510.     private final String PARAM_pausable = "pauseable";
  511.     private final String PARAM_one = "one";
  512.     private Dimension d;
  513.     private boolean running;
  514.     private Image images[];
  515.     private int place;
  516.     private Image offImage;
  517.     private Graphics offGraphics;
  518.     private boolean good;
  519.     private URL locations[];
  520.     private URL myInfo;
  521.     private String test_it;
  522.     private final String option = "InFeb";
  523.     private InputStream input;
  524.     private DataInputStream dataInput;
  525.     private Thread animate;
  526.     private boolean drawable;
  527.     private boolean drawn;
  528.     private MediaTracker imageTracker;
  529.     private int image_w;
  530.     private int image_h;
  531.     private String info[];
  532.     private int pause[];
  533.     private int amount;
  534.     private boolean zoom;
  535.     private boolean shuffle;
  536.     private boolean pausable;
  537.     private String m_target;
  538.     private int loadImage;
  539.     private boolean displaying;
  540.     private boolean mouseInside;
  541.     private boolean one;
  542. }
  543.  
  544. -------------------------------------------End of jad file---------------------------------
  545.  
  546. ok big huh ?
  547. so , for the next files , i will just show the importent part !!
  548. btw , if you read the Text file goind with this java protected shit , you have seen
  549. this is keyfile protected *grin*
  550. So , we are looking for a file check , so look this:
  551.  
  552.  
  553.       try
  554.       {
  555.           myInfo = new URL(getDocumentBase(), "gboption.ini");  <--- interesting! keyfile name
  556.       }
  557.       catch(MalformedURLException _ex)
  558.       {
  559.           good = false;
  560.       }
  561.       if(myInfo != null)
  562.           try
  563.           {
  564.               input = myInfo.openStream();
  565.               dataInput = new DataInputStream(input);
  566.               test_it = dataInput.readLine();
  567.               dataInput.close();
  568.           }
  569.           catch(IOException _ex) { }
  570.       if(test_it.equals("InFeb"))        <--- hmm , looks like it test the text in the file
  571.           good = true;             <--- if text = InFeb then GOOD , else piss off cracker
  572.       running = true;
  573.       if(animate == null)
  574.  
  575.  
  576.  
  577. heheh , wow , it sux!! just create a file called gboption.ini and writte 'InFeb' in it
  578. without the quotes (').Save the file and run the exemple.html file!
  579. WOW , no more unregistered fucking lame text :)
  580. easy , isn't it ?
  581.  
  582.  
  583. Part2: Goetz's Marquee V 1.1
  584.  
  585.  
  586. Still same things , Keyfile based apps in java!
  587. Decompile the class file , and open the gmarquee.jad one with a text editor like notepad!
  588.  
  589. ok , i show you the most important part this time , it is exaclty same shit..
  590.  
  591.  
  592. -------------------------------------cut from gmarquee.jad--------------------------------  public void start()
  593.     {
  594.         if(offImage == null)
  595.         {
  596.             offImage = createImage(d.width, d.height);
  597.             offGraphics = offImage.getGraphics();
  598.         }
  599.         if(f == null)
  600.         {
  601.             f = new Font("Helvetica", 0, m_font);
  602.             fm = offGraphics.getFontMetrics(f);
  603.         }
  604.         try
  605.         {
  606.             myInfo = new URL(getDocumentBase(), "gmoption.ini");     <---- hehe :p
  607.         }
  608.         catch(MalformedURLException _ex)
  609.         {
  610.             good = false;
  611.         }
  612.         if(myInfo != null)
  613.             try
  614.             {
  615.                 input = myInfo.openStream();
  616.                 dataInput = new DataInputStream(input);
  617.                 test_it = dataInput.readLine();
  618.                 dataInput.close();
  619.             }
  620.             catch(IOException _ex) { }
  621.         if(test_it.equals("Eggplant"))  <--- if cracker put Eggplant jmp goodboy else jmp badboy
  622.             good = true;
  623.         if(!good)
  624.             try
  625.             {
  626.                 reg = new register(300, 200, "Please Register Goetz's Marquee", "http://www.lawrencegoetz.com/programs/nettools.htm", this);
  627.             }
  628.             catch(Exception _ex)
  629.             {
  630.                 System.err.println("You are missing the file register.class");
  631.                 return;
  632.             }
  633.         if(animate == null)
  634.  
  635.  
  636.  
  637. -----------------------------End of quotes from Gmarquee.jad------------------------------------
  638.  
  639.  
  640.  
  641. Again, just create a file called gmoption.ini and writte 'Eggplant' in it without the 
  642. quotes (').Save the file and run the exemple.html file!
  643. It is now registered , and you can enjoy this nice java thingy :p
  644.  
  645. Ok , now enough of this keyfile shits , lets look a crackme coded by Mandkind in java
  646. in the text , there is no html to test the serial or something , but it is not needed heh!
  647. As always, decompile the .class , and open the jad output file with notepad !!
  648. and we can see:
  649.  
  650.  
  651.  
  652. ---------------------------------Start of CrackMe.jad-------------------------------------------
  653.  
  654.  
  655.    public CrackMe()
  656.     {
  657.     }
  658.  
  659.     public static void main(String args[])
  660.     {
  661.         if(args.length != 1)
  662.         {
  663.             System.out.println("Usage: java CrackMe Registration Code");
  664.             System.exit(0);
  665.         }
  666.         System.out.println("");
  667.         System.out.println("");
  668.         System.out.println("Welcome to ManKind's Java CrackMe 0.1");
  669.         System.out.println("=====================================");
  670.         System.out.println("This is an Alpha Test of ManKind's Java CrackMe, please do send your comments, suggestions, opinions, feedbacks and support words to me!");
  671.         System.out.println("");
  672.         System.out.println("");
  673.         int i = Integer.valueOf(args[0]).intValue();
  674.         if(i == 0x7f42b)
  675.             System.out.println("Congratulations, you succeeded in cracking this!");
  676.         if(i != 0x7f42b)
  677.             System.out.println("Sorry, invalid registration code. Please try again!");
  678.         System.out.println("");
  679.         System.out.println("");
  680.         System.out.println("This program is Copyright \251 1999 ManKind");
  681.         System.out.println("Service for Mankind");
  682.         System.out.println("mankind001@bigfoot.com");
  683.         System.exit(0);
  684.     }
  685. }
  686.  
  687.  
  688. ---------------------------------End of CrackMe.jad-------------------------------------------
  689.  
  690.  
  691. hehe , it looks nice !
  692. we can see:
  693.  
  694. "      int i = Integer.valueOf(args[0]).intValue();
  695.         if(i == 0x7f42b)
  696.             System.out.println("Congratulations, you succeeded in cracking this!");
  697.         if(i != 0x7f42b)
  698.             System.out.println("Sorry, invalid registration code. Please try again!");
  699.         System.out.println("");      "
  700.  
  701.  
  702.  
  703.  
  704. in Visual basic , it looks like this:
  705.  
  706.  
  707. IF serial= $7f42b then
  708. msgbox "Congratulations, you succeeded in cracking this!"
  709. Else
  710. msgbox "Sorry, invalid registration code. Please try again!"
  711. End if
  712.  
  713. the "0x7f42b" is hexadecimal , but we want the good serial , so convert the serial in decimal
  714. with the Windows calculator or using soft ice!
  715. Ctrl+d
  716. ? 7b42b
  717.  
  718. You will see: 521259
  719.  
  720.  
  721. easy isn't it ??
  722. hehe , well i don't have any other java apps or crackme in hands :-( so this tut is
  723. finish ...
  724.  
  725. I really hope java cracking is clear for you now!
  726. It is something really easy the most of the time !!
  727. Al of this , coz of the decompiler though!!
  728.  
  729.  
  730.  
  731.  
  732. Ending:
  733.  
  734. i hope you have understood all this essay , and if you got any comments , or 
  735. questions , just mail me to : ACiD_BuRN@nema.com or acid2600@hotmail.com
  736. you can find all of my tuts at :
  737. Web page URL: http://acidburn2000.cjb.net
  738.  
  739.  
  740. Greetings: 
  741. group greetings : ID - ECLiPSE - CiA - ODT - EXEC - TiTaNe - PWA - PC - UCF- CORE
  742.  
  743. Also greetingz to: (no specific order)
  744.  
  745. R!SC, ^Inferno^, AB4DS, Cyber Blade, Klefz, , Volatility, TORN@DO, T4D
  746. Jeff, [Virus], JaNe , Appbusta , Duelist , tKC , BuLLeT , Lucifer48 , 
  747. MiZ , DnNuke , Bjanes , Skymarshall , afkayas , elmopio , SiFLyiNG , 
  748. Fire Worx , CrackZ , neural_en  , WarezPup , _y , SiONIDE , SKORPIEN
  749. Lazarus , Eternal_Bliss , Magic Raphoun , DEZM , Bisoux , Carpathia ,
  750. K17 , theMc , noos , Xmen , TeeJi , JB007 , Arobas , T0AD ,ytc , Kwai_lo ,
  751. Killer_3K, TaMaMBoLo , gizmo , Gota , ExtaBrain , Alpine , WarezPup, 
  752. zoltan , [yAtes], TarGon , Icecream , Punkguy2 , Sortof, TRDdonjuan,
  753. Lord Soth, Judged, G-Rom, Quantico...
  754.  
  755.  
  756. eheh , i bet i forget some peoples :-/ , sorry !!!
  757.  
  758.  
  759.  
  760. Copyright (c) ACiD BuRN and the Immortal Descendants.
  761.  
  762.             
  763.                 http://www.immortaldescendants.com/
  764.  
  765.  
  766.  
  767.