破解java Struts Web Application开发工具 scioworks Camino

1/5/2008来源:Java教程人气:6975


  作者:xiangya
  
  我很兴奋向大家知会一声,scioworks Camino的基于Struts的Web application开发工具已经可以破解了。因为Struts不错,我才想这样,目的只有一个,用来测试检验Struts。
  
  这个工具使用注册码,并使用注册码进行日期判定。让我有点恼火的是,程序会想一个地址发送UDP包,不管怎样,我不希望这样的事情发生。
  
  我想这个工具的破解有两种方式,
  
  1, 认真钻研其算法,然后给出一个KeyGen程序。这种方式对程序本身不会有什么影响,但是研读算法比较费时间。
  
  2, 改写程序控制,然后给出一个替代的class文件。这种方式因为改写了程序控制流程,需要非凡小心,不小心的话,原来的程序就会崩溃。
  
  这两种方式各有千秋,取决于你的爱好所在。因为这个工具经过了代码优化以及别的处理,所以,改写代码稍嫌麻烦。
  
  要做改写代码方式破解的话,你需要一个反编译工具,我推荐你使用jshrink,因为jad似乎已经不再做下去了。(别说你还有好多反编译工具,错,大多使用jad Engine。)其次你需要了解一点java虚拟机规范,没有也行,那么你需要熟悉java语言,或者加上一些windows汇编语言知识。
  
  我没有更多耐心所更多的东西。给出源代码,你爱谁谁去。
  
  // Main.java; class file size 15569 bytes
  
  package scioworks.camino;
  
  /*
  import BindingSchemaLoader;
  import CaminoApp;
  import CaminoModel;
  import Config;
  import ContextPathUtil;
  import EXPRessException;
  import FileReadWriteException;
  import InvalidResourceException;
  import Main$CMon;
  import Main$SMon;
  import Navigatable;
  import ParseException;
  import StrutsSubApp;
  */
  import com.jxml.quick.QDoc;
  import scioworks.camino.event.ProjectReadyEvent;
  import scioworks.camino.gui.LcPanel;
  import scioworks.camino.io.DirtyStatusLookup;
  import java.awt.Color;
  import java.awt.Frame;
  import java.io.File;
  import java.io.IOException;
  import java.text.MessageFormat;
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.NoSUChElementException;
  import java.util.Set;
  import java.util.StringTokenizer;
  import java.util.TreeMap;
  import javax.swing.JOptionPane;
  import scioworks.camino.prjModel.CaminoProject;
  import scioworks.camino.prjModel.SubApp;
  import scioworks.aspen.BaseDialog;
  import scioworks.aspen.HelpManager;
  import scioworks.aspen.SwingUtil;
  import scioworks.aspen.progress.ProgressListener;
  import scioworks.common.io.FileUtil;
  import scioworks.common.io.filemonitor.FileMonitor;
  import scioworks.common.logging.Logger;
  import scioworks.common.logging.LoggerFactory;
  import scioworks.common.message.Message;
  import scioworks.common.message.MessageCategory;
  import scioworks.util.crypto.TransformerRev;
  import scioworks.camino.strutsModel.Action;
  import scioworks.camino.strutsModel.StrutsConfig;
  import scioworks.camino.webdd.Servlet;
  import scioworks.camino.webdd.ServletMapping;
  import scioworks.camino.webdd.WebApp;
  import java.io.IOException;
  import java.net.DatagramPacket;
  import java.net.DatagramSocket;
  import java.net.InetAddress;
  import java.net.MulticastSocket;
  import java.net.InetAddress;
  
  
  class Main
  implements
   CaminoModel
  {
   final static private String _$159506 = "VGhlIGxpY2Vuc2UgaW5mb3JtYXRpb24gaXMgaW52YWxpZA==";
   final static private String _$115780 = "Q2FtaW5vIExpY2Vuc2UgSW5mbw==";
   final static private String _$159525 = "VHJpYWwgbGljZW5zZSBleHBpcmVzIGluIHswfSBkYXlz";
   final static private String _$159544 = "WW91ciB0cmlhbCBsaWNlbnNlIGhhcyBleHBpcmVkLiBWaXNpdCBodHRwOi8vd3d3LnNjaW93b3Jrcy5jb20gdG8gcHVyY2hhc2UgYSBsaWNlbnNlZCBjb3B5IG9mIFNjaW93b3JrcyBDYW1pbm8=";
   final static private String _$159561 = "VW5yZWdpc3RlcmVkIFRyaWFsIENvcHk=";
   final static private String _$159583 = "usitPzelhkTNlTcaSpAIIiuaalidM";
   final static private String _$159605 = "U3RhbmRhcmQ=";
   final static private String _$159621 = "RW50ZXJwcmlzZQ==";
   static private scioworks.common.logging.Logger _$3187 = scioworks.common.logging.LoggerFactory.getLogger(Main.class);
   // scioworks.common.logging.LoggerFactory.getLogger((class$scioworks$camino$Main == null) ? (class$scioworks$camino$Main = Main.class$("scioworks.camino.Main")) : class$scioworks$camino$Main);
   private int _$159639;
   private String _$159651;
   //private Main$CMon _$159668;
   //private Main$SMon _$159676;
   private int _$159680;
   private String _$59575;
   private long _$159700;
   private String _$59588;
   private String _$115870;
   private CaminoProject _$62680;
   private WebApp _$126484;
   private java.util.Map _$159711;
  
  
   public Main() throws InvalidResourceException {
   _$159639 = 12345;
   _$159651 = "230.10.10.11";
   //_$159668 = null;
   //_$159676 = null;
   _$159680 = 1;
   _$59575 = "";
   _$159700 = -1;
   _$59588 = "";
   _$115870 = "";
   _$62680 = null;
   _$126484 = null;
   _$159711 = new java.util.TreeMap();
   getLc(javax.swing.JOptionPane.getRootFrame(), true);
   _$3187.info("License Count = ".concat(String.valueOf(_$159680)));
   _$3187.info("Serial Number = ".concat(_$59575));
   _$115870 = _$159725();
   //_$159744();
   BindingSchemaLoader.getProjectBindingSchema();
   BindingSchemaLoader.getStrutsConfigBindingSchema();
   BindingSchemaLoader.getWebDDBindingSchema();
   scioworks.aspen.HelpManager.instance();
   }
  
   public java.util.List findGlobalForwardsByTarget(Navigatable n1) {
   ArrayList a2;
   Iterator i3;
   StrutsSubApp s4;
   List l5;
   a2 = new java.util.ArrayList();
   i3 = _$159711.values().iterator();
   while (i3.hasNext()) {
   s4 = (StrutsSubApp) i3.next();
   l5 = s4.getStrutsConfig().findGlobalForwardsByTarget(n1);
   a2.addAll(l5);
   }
   return a2;
   }
  
   public Navigatable findNavigatable(String s1) {
   Iterator i2;
   StrutsSubApp s3 = null;
   i2 = _$159711.values().iterator();
   {
   do {
   if (i2.hasNext()) {
   s3 = (StrutsSubApp) i2.next();
   }
   }
   while (s3.isInSubApp(s1) == false);
   return s3.findSubAppNavigatable(s3.makeSubAppRelative(s1));
   }
   //return null;
   }
  
   public Action findAction(String s1) {
   Iterator i2;
   StrutsSubApp s3 = null;
   i2 = _$159711.values().iterator();
   {
   do {
   if (i2.hasNext()) {
   s3 = (StrutsSubApp) i2.next();
   }
   }
   while (s3.isInSubApp(s1) == false);
   return s3.findSubAppAction(ContextPathUtil.makeSubAppRelative(s3.getPrefix(), s1));
   }
   //return null;
   }
  
   public CaminoProject getProject() {
   return _$62680;
   }
  
   public WebApp getWebApp() {
   return _$126484;
   }
  
   public StrutsSubApp getSubApp(String s1) {
   return (StrutsSubApp) _$159711.get(s1);
   }
  
   public java.util.Set getSubAppPrefixes() {
   return _$159711.keySet();
   }
  
   java.util.Map getAllSubApps() {
   return _$159711;
   }
  
   public void initNewProject(CaminoProject c1, scioworks.aspen.progress.ProgressListener p2) throws InvalidResourceEx