| |
作者: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
|
|