作者: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
闽公网安备 35060202000074号