有强人能看懂这段反编译的java代码吗?

Tristan_Liu 2009-07-27 02:17:17
想破解某web软件的license玩玩。
但是到这一步头都晕了,哪位强人大哥能指点迷津?给高分啦!




public final class Licence
{
public Licence() { }

private static final void _$1(String s){
_$23 = s;
}

private static final void _$10(String s)
{
_$17 = s;
}

private static final void _$11(String s)
{
_$6 = s;
}

private static final void _$12(String s)
{
_$7 = s;
}

private static final void _$13(String s)
{
_$8 = s;
}

private static final void _$14(String s)
{
_$9 = s;
}

private static final void _$15(String s)
{
_$10 = s;
}

private static final void _$16(String s)
{
_$11 = s;
}

private static final void _$17(String s)
{
_$12 = s;
}

private static final void _$18(String s)
{
_$13 = s;
}

private static final void _$19(String s)
{
_$14 = s;
}

private static final void _$2(String s)
{
_$27 = s;
}

private static final void _$20(String s)
{
_$15 = s;
}

private static final void _$21(String s)
{
_$19 = s;
}

private static final void _$3(String s)
{
_$24 = s;
}

private static final void _$4(String s)
{
_$25 = s;
}

private static final void _$5(String s)
{
_$26 = s;
}

private static final void _$6(String s)
{
_$22 = s;
}

private static final void _$7(String s)
{
_$21 = s;
}

private static final void _$8(String s)
{
_$20 = s;
}

private static final void _$9(String s)
{
_$16 = s;
}

public static final boolean getASPModel()
{
return _$20 != null && _$20.toLowerCase().equals("on");
}

public static final String getBusinessModelNumber()
{
if(_$16 == null || _$16.length() == 0)
_$16 = "5000";
return _$16;
}

public static final boolean getCluster()
{
return _$22 != null && _$22.toLowerCase().equals("on");
}

public static final String getCompanyName()
{
return _$6;
}

public static final String getInvalidDate()
{
return _$12;
}

public static final String getLicencePage()
{
JVM INSTR new #104 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
StringBuffer();
JVM INSTR dup ;
JVM INSTR swap ;
StringBuffer stringbuffer;
stringbuffer;
"<tr>";
append();
JVM INSTR pop ;
stringbuffer.append("<td width=30%><b>\u6388\u6743\u5355\u4F4D</b></td>");
stringbuffer.append("<td width=70%>").append(_$6).append("</td>");
stringbuffer.append("</tr>");
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u7CFB\u7EDF\u540D\u79F0</b></td>");
stringbuffer.append("<td width=70%>").append(_$7).append("</td>");
stringbuffer.append("</tr>");
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u7248\u672C\u53F7</b></td>");
stringbuffer.append("<td width=70%>").append(_$8).append("</td>");
stringbuffer.append("</tr>");
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u7248\u672C\u7C7B\u578B</b></td>");
String s = "Enterprise\u4F01\u4E1A\u7248";
stringbuffer.append("<td width=70%><b><font color=blue>").append(s).append("</font></b></td>");
stringbuffer.append("</tr>");
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u6388\u6743\u6709\u6548\u7528\u6237\u6570</b></td>");
stringbuffer.append("<td width=70%>").append(getLicenseBarOfUser()).append("</td>");
stringbuffer.append("</tr>");
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u8BB8\u53EF\u8BC1\u6709\u6548\u671F\u81F3</b></td>");
stringbuffer.append("<td width=70%><b><font color=red>").append(_$12.equals("") ? "\u6C38\u4E45" : _$12).append("</font></b></td>");
stringbuffer.append("</tr>");
int i = Integer.parseInt(getBusinessModelNumber());
stringbuffer.append("<tr>");
stringbuffer.append("<td width=30%><b>\u6D41\u7A0B\u6A21\u578B\u8BB8\u53EF\u7684\u6700\u5927\u6570\u91CF</b></td>");
stringbuffer.append("<td width=70%>").append(getLicenseBarOfWF()).append("</td>");
stringbuffer.append("</tr>");
JVM INSTR new #107 <Class Hashtable>;
JVM INSTR dup ;
JVM INSTR swap ;
Hashtable();
JVM INSTR dup ;
JVM INSTR swap ;
Hashtable hashtable;
hashtable;
"list";
stringbuffer.toString();
put();
JVM INSTR pop ;
hashtable.put("page_title", "\u7528\u6237\u8BB8\u53EF");
return RepleaseKey.replace(HtmlModelFactory.getHtmlModel("sys_Licence.htm"), hashtable);
}


想破解某web软件的license玩玩。
但是到这一步头都晕了,哪位强人大哥能指点迷津?给高分啦!


...全文
450 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jh_77 2010-10-14
  • 打赏
  • 举报
回复
PBE加密的
itisonlylove_yy 2009-08-05
  • 打赏
  • 举报
回复
不懂;找个dongdong再反编译呵呵呵
wlm007007007007 2009-08-05
  • 打赏
  • 举报
回复
这个不太懂,但是帮顶一下,期待高手出现,希望楼主能尽快解决难题
24K純帥 2009-08-03
  • 打赏
  • 举报
回复
顶,看高手是怎么说滴
ITwinter 2009-08-03
  • 打赏
  • 举报
回复
我也是小菜鸟 看不懂

humanity 2009-08-02
  • 打赏
  • 举报
回复
反编译后看明白没多大难度,但 RSA 加密它是不可能简单地逆向推测的。一般是想办法把那块“瘤”摘掉后再编译替换掉以前的 jar 包,

另外提醒一点,以后不算有此兴趣也不要把它原样贴出来,比如“Actionsoft”字样不应该出来。这是很严重的问题,人家会人肉搜索的。
Monkey_D_Luffy 2009-08-02
  • 打赏
  • 举报
回复
看不懂这个,帮着顶起。
老张-AI 2009-07-27
  • 打赏
  • 举报
回复
看不懂帮顶
feishare 2009-07-27
  • 打赏
  • 举报
回复
看不懂也要顶!
bolink5 2009-07-27
  • 打赏
  • 举报
回复
这个找个反编译的软件啊。
网上很多反编译的软件啊
dolphin171 2009-07-27
  • 打赏
  • 举报
回复
帮顶有分加么??
Sunny_kaka 2009-07-27
  • 打赏
  • 举报
回复
帮你顶.
我是看不懂
javamode 2009-07-27
  • 打赏
  • 举报
回复
没看明白
soulx 2009-07-27
  • 打赏
  • 举报
回复
从类似这样的语句(JVM INSTR dup ;)来看,这部分源代码应该是经过处理,可能很难反编译了。
sainer 2009-07-27
  • 打赏
  • 举报
回复
菜鸟没看懂
meadking 2009-07-27
  • 打赏
  • 举报
回复
RSAPublicKey
加密的.基本上你反编译代码,也是无法破译的.

把那块代码给删除了.
cype62 2009-07-27
  • 打赏
  • 举报
回复
import java.io.FileInputStream;
import java.security.interfaces.RSAPublicKey;
import java.util.Properties;

/**
* * 限定参数# 1:mac地址 2:客户端数量 3:使用分馆 4:起始日期 5:终止日期 免费使用日期默认为60天
* #授权客户端的MAC,试用版不判断
* 0:LICENSE_TYPE=0 1 2 #0表示默认license 1表示试用版 2 表示正式版
* 1:SIPII_USER_HOST_MAC=00-11-25-2D-31-A2
* 2:CLIENT_USER_COUNT=2
* 3:USER_TITLE_NAME=东莞市图书馆
* 4:STARTDATE=20080511
* 5:ENDDATE=20090511
* @author toofu
*
*/
public class LicenseInfo {
/**
* 授权类型
*/
public String LICENSE_TYPE="";
/**
* 机器网卡地址
*/
public String SIPII_USER_HOST_MAC="";
/**
* 客户端数量
*/
public String CLIENT_USER_COUNT="";
/**
* 单位名称 如东莞市图书馆
*/
public String USER_TITLE_NAME="";
/**
* 启用时间
*/
public String STARTDATE="";
/**
* 终止时间
*/
public String ENDDATE="";
/**
* 本机器的机器信息属性
* @return
*/
public Properties LICENSE_INFO_PROPERTIES=getInfoProperties();
/**
*
*/
public String NO_LICENSE_MSG="";
/**
* 初始化构造函数
* 通过license.dat读取内容并进行解密
*/
LicenseInfo(){
String config=RSAUtil.loadLicenseConfig();
if(config==null||config.equals("")){
this.NO_LICENSE_MSG="您没有授权,请联系广州图创计算机软件开发有限公司获取授权。您的授权编号为["+DESUtil.myDESEncode(FindMac.getMacAddress())+"],请获取正式授权时提供此编号!";
return ;//没加载成功,相当于没授权
}
String[] configArr=config.split("\n");//根据回车分割
if(configArr.length==6){
this.LICENSE_TYPE=configArr[0];
this.SIPII_USER_HOST_MAC=configArr[1];
this.CLIENT_USER_COUNT=configArr[2];
this.USER_TITLE_NAME=configArr[3];
this.STARTDATE=configArr[4];
this.ENDDATE=configArr[5];
}else{
//相当于格式不对,都没有值
}
}
/**
* 获取本机器的机器信息属性
* @return
*/
public Properties getInfoProperties(){
Properties p=new Properties();
p.put("LICENSE_TYPE",LICENSE_TYPE);
p.put("SIPII_USER_HOST_MAC",SIPII_USER_HOST_MAC);
p.put("CLIENT_USER_COUNT",CLIENT_USER_COUNT);
p.put("USER_TITLE_NAME",USER_TITLE_NAME);
p.put("STARTDATE",STARTDATE);
p.put("ENDDATE",ENDDATE);
return p;
}
/**
* 测试Main类
* @param args
*/
public static void main(String[] args) {

/* System.out.println("获取本机器的操作系统类型:"+p.LOCALHOST_OS_TYPE);
System.out.println("本机器最后一个网卡的MAC:"+LOCALHOST_MAC);
System.out.println("本机器最后一个网卡的IP:"+LOCALHOST_IP);
System.out.println("本机器的机器名:"+LOCALHOST_NAME);
System.out.println("本机器的机器名:"+LOCALHOST_INFO_PROPERTIES);*/
LicenseInfo li=new LicenseInfo();//初始化,读取license
System.out.println(li.CLIENT_USER_COUNT);

}
}
xlxyeyu 2009-07-27
  • 打赏
  • 举报
回复
什么啊???
zuijiejina 2009-07-27
  • 打赏
  • 举报
回复
在下不才,一时没看懂。。
Tristan_Liu 2009-07-27
  • 打赏
  • 举报
回复

public static final String getLicenseBarOfUser()
{
JVM INSTR new #104 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
StringBuffer();
StringBuffer stringbuffer;
stringbuffer;
double d = Double.parseDouble(getMaxUser());
double d1 = Double.parseDouble(Integer.toString(UserCache.getActiveList().size()));
if(d > 0.0D)
{
d1 = d1 != 0.0D ? d1 : 1.0D;
double d2 = 0.0D;
try
{
d2 = UtilNumber.fixPoint(d1 / d, 4);
}
catch(Exception _ex) { }
stringbuffer.append("<table border=0 cellspacing=0 cellpadding=0><tr><td></td><td height=16 width=").append(d2 * 100D).append(" background=../_img/process_2.gif></td><td width=").append((1.0D - d2) * 100D).append(" background=../s_img/process_1.gif></td><td>").append(_$11).append("/").append(UserCache.getActiveList().size()).append(",\u7EA6\u5360\u7528").append(UtilNumber.fixPoint(d2 * 100D, 2)).append("%</td></tr></table>");
}
return stringbuffer.toString();
}

public static final String getLicenseBarOfWF()
{
JVM INSTR new #104 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
StringBuffer();
StringBuffer stringbuffer;
stringbuffer;
double d = Double.parseDouble(getBusinessModelNumber());
double d1 = Double.parseDouble(Integer.toString(WorkFlowCache.getList().size()));
if(d > 0.0D)
{
d1 = d1 != 0.0D ? d1 : 1.0D;
double d2 = 0.0D;
try
{
d2 = UtilNumber.fixPoint(d1 / d, 4);
}
catch(Exception _ex) { }
stringbuffer.append("<table border=0 cellspacing=0 cellpadding=0><tr><td></td><td height=16 width=").append(d2 * 100D).append(" background=../s_img/process_2.gif></td><td width=").append((1.0D - d2) * 100D).append(" background=../s_img/process_1.gif></td><td>").append(Integer.parseInt(getBusinessModelNumber())).append("/").append(WorkFlowCache.getList().size()).append(",\u7EA6\u5360\u7528").append(UtilNumber.fixPoint(d2 * 100D, 2)).append("%</td></tr></table>");
}
return stringbuffer.toString();
}

public static final String getLicenseVersion()
{
return _$17;
}

public static final String getMaxUser()
{
return _$11;
}

public static final String getOrganizationCode()
{
return _$14;
}

public static final String getOrganizationNumber()
{
return _$15;
}

public static final String getPhysicalAddress()
{
if(_$21 == null)
_$21 = "";
return _$21;
}

public static final String getSeries()
{
return _$13;
}

public static final String getSuiteSecurity()
{
return _$19;
}

public static final String getSystemName()
{
return _$7;
}

public static final String getVersion()
{
return _$8;
}

public static final String getVersionType()
{
return _$9;
}

public static final String isFree()
{
return _$10;
}

public static final boolean isFullSearchCMS()
{
return _$25 != null && _$25.toLowerCase().equals("on");
}

public static final boolean isFullSearchEMail()
{
return _$26 != null && _$26.toLowerCase().equals("on");
}

public static final boolean isFullSearchFile()
{
return _$23 != null && _$23.toLowerCase().equals("on");
}

public static final boolean isFullSearchForm()
{
return _$24 != null && _$24.toLowerCase().equals("on");
}

public static final boolean isSuitePlatform()
{
return _$27 != null && _$27.toLowerCase().equals("on");
}

private static final String _$1 = "\u5317\u4EAC\u708E\u9EC4\u76C8\u52A8\u79D1\u6280\u53D1\u5C55\u6709\u9650\u8D23\u4EFB\u516C\u53F8";
private static final String _$2 = "Actionsoft Co.,Ltd";
private static final String _$3 = "\u708E\u9EC4\u76C8\u52A8";
private static final String _$4 = "Actionsoft";
private static final String _$5 = "CopyRight(C)2001-2006";
private static String _$6;
private static String _$7;
private static String _$8;
private static String _$9;
private static String _$10;
private static String _$11;
private static String _$12;
private static String _$13;
private static String _$14;
private static String _$15;
private static String _$16;
private static String _$17;
private static final String _$18;
private static String _$19;
private static String _$20;
private static String _$21;
private static String _$22;
private static String _$23;
private static String _$24;
private static String _$25;
private static String _$26;
private static String _$27;

static
{
_$6 = "";
_$7 = "";
_$8 = "";
_$9 = "";
_$10 = "";
_$11 = "";
_$12 = "";
_$13 = "";
_$14 = "";
_$15 = "";
_$16 = "";
_$17 = "";
JVM INSTR new #103 <Class String>;
JVM INSTR dup ;
JVM INSTR swap ;
JVM INSTR new #103 <Class String>;
JVM INSTR dup ;
JVM INSTR swap ;
"fk9+WX5BQ1RJT05TT0ZUfkB+";
String();
getBytes();
Base64.decode();
String();
_$18;
_$19 = "";
_$20 = "";
_$21 = "";
_$22 = "";
_$23 = "";
_$24 = "";
_$25 = "";
_$26 = "";
_$27 = "";
Object obj = null;
JVM INSTR new #97 <Class FileInputStream>;
JVM INSTR dup ;
JVM INSTR swap ;
"license.dat";
FileInputStream();
JVM INSTR dup ;
JVM INSTR swap ;
FileInputStream fileinputstream;
fileinputstream;
available();
JVM INSTR dup ;
JVM INSTR swap ;
int i;
i;
new byte[];
byte abyte0[];
abyte0;
fileinputstream.read(abyte0);
fileinputstream.close();
JVM INSTR new #103 <Class String>;
JVM INSTR dup ;
JVM INSTR swap ;
PBE.decrypt(Base64.decode(abyte0), "JVM INSTR swap");
String();
String s;
s;
JVM INSTR new #93 <Class UtilString>;
JVM INSTR dup ;
JVM INSTR swap ;
JVM INSTR new #103 <Class String>;
JVM INSTR dup ;
JVM INSTR swap ;
PBE.decrypt(Base64.decode(s.getBytes()), _$18);
String();
UtilString();
JVM INSTR dup ;
JVM INSTR swap ;
UtilString utilstring;
utilstring;
"_licenseVersion[";
"]licenseVersion_";
matchValue();
_$10();
_$11(utilstring.matchValue("_companyName[", "]companyName_"));
_$17(utilstring.matchValue("_invalidDate[", "]invalidDate_"));
_$15(utilstring.matchValue("_isFree[", "]isFree_"));
_$16(utilstring.matchValue("_maxUser[", "]maxUser_"));
_$19(utilstring.matchValue("_organizationCode[", "]organizationCode_"));
_$20(utilstring.matchValue("_organizationNumber[", "]organizationNumber_"));
_$18(utilstring.matchValue("_series[", "]series_"));
_$12(utilstring.matchValue("_systemName[", "]systemName_"));
_$13(utilstring.matchValue("_version[", "]version_"));
_$14(utilstring.matchValue("_versionType[", "]versionType_"));
_$9(utilstring.matchValue("_businessModelNumber[", "]businessModelNumber_"));
_$21(utilstring.matchValue("_suiteSecurity[", "]suiteSecurity_"));
_$8(utilstring.matchValue("_ASP[", "]ASP_"));
_$7(utilstring.matchValue("_PhysicalAddress[", "]PhysicalAddress_"));
_$6(utilstring.matchValue("_CLUSTER[", "]CLUSTER_"));
_$1(utilstring.matchValue("_FULLSEARCH_FILE[", "]FULLSEARCH_FILE_"));
_$3(utilstring.matchValue("_FULLSEARCH_FORM[", "]FULLSEARCH_FORM_"));
_$5(utilstring.matchValue("_FULLSEARCH_EMAIL[", "]FULLSEARCH_EMAIL_"));
_$4(utilstring.matchValue("_FULLSEARCH_CMS[", "]FULLSEARCH_CMS_"));
_$2(utilstring.matchValue("_SUITE_PLATFORM[", "]SUITE_PLATFORM_"));
break MISSING_BLOCK_LABEL_570;
Exception exception;
exception;
System.out.println("\u8BB8\u53EF\u8BC1\u9519\u8BEF\uFF0C\u8BF7\u4E0E\u8F6F\u4EF6\u4F9B\u5E94\u5546\u8054\u7CFB.\n");
System.out;
JVM INSTR new #104 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
"\u5DE5\u4F5C\u76EE\u5F55\uFF1A";
StringBuffer();
System.getProperties().getProperty("user.dir");
append();
toString();
println();
System.out;
JVM INSTR new #104 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
"JVM\u76EE\u5F55\uFF1A";
StringBuffer();
System.getProperties().getProperty("java.home");
append();
toString();
println();
System.out.println("\u9519\u8BEF\u4FE1\u606F\uFF1A");
exception.printStackTrace(System.err);
JVM INSTR new #91 <Class ShellCommand>;
JVM INSTR dup ;
JVM INSTR swap ;
ShellCommand();
"licenseManagement.bat";
execute();
JVM INSTR pop ;
System.exit(0);
}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧