我用java反编译工具把.class文件转为.java文件,其中有些这种字符,请问一下这种是怎么回事啊? 5
是反编译工具的问题吗this.val$params这个是怎么来的啊if(this.val$params!=null){for(inti=0;i<this.val$para...
是反编译工具的问题吗 this.val$params这个是怎么来的啊
if (this.val$params != null)
{
for (int i = 0; i < this.val$params.length; i++)
{
query.setParameter(i, this.val$params[i]);
}
}
是反编译工具的问题吗 this.val$params这个是怎么来的啊 f (this.val$params != null)
{
for (int i = 0; i < this.val$params.length; i++)
{
query.setParameter(i, this.val$params[i]);
}
}这里应该是方法里传过来的参数,但我把它改为我传过的参数,还是报错,请问是什么原因啊,包我也导入进来了,还是报错? 展开
if (this.val$params != null)
{
for (int i = 0; i < this.val$params.length; i++)
{
query.setParameter(i, this.val$params[i]);
}
}
是反编译工具的问题吗 this.val$params这个是怎么来的啊 f (this.val$params != null)
{
for (int i = 0; i < this.val$params.length; i++)
{
query.setParameter(i, this.val$params[i]);
}
}这里应该是方法里传过来的参数,但我把它改为我传过的参数,还是报错,请问是什么原因啊,包我也导入进来了,还是报错? 展开
3个回答
展开全部
一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。本文从研究的角度,浅析如何读懂这种反编译过来的文件。
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 <Class CrossTable>;
JVM INSTR dup ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 <Class Database>;
JVM INSTR dup ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
/* break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
Object obj;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
printStackTrace();
((Throwable) (obj)).toString();
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;*/
网上看到的!
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 <Class CrossTable>;
JVM INSTR dup ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 <Class Database>;
JVM INSTR dup ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 <Class StringBuffer>;
JVM INSTR dup ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
/* break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
Object obj;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
printStackTrace();
((Throwable) (obj)).toString();
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;
break MISSING_BLOCK_LABEL_209;
JVM INSTR dup ;
obj;
toString();
JVM INSTR pop ;
flag = true;*/
网上看到的!
展开全部
不会! if ((l3 = (System.currentTimeMillis() - l2) + 10L) < 62L)
try
{
Thread.sleep(62L - l3);
}
catch (Exception )
} while (true);
if (a_byte == 1)
b();
a_Bobby.notifyDestroyed();
}
private final void d()
{
byte abyte0[] = a();
boolean flag = false;
String s1 = "BC5Data";
a a1 = this;
try
{
RecordStore recordstore;
(recordstore = RecordStore.openRecordStore(s1, false)).setRecord(1, abyte0, 0, abyte0.length);
recordstore.closeRecordStore();
return;
}
catch (Exception )
try
{
RecordStore.deleteRecordStore(s1);
}
catch (Exception )
······
看到了吧~这就是格式!汇编语言!!!
编译连接之后,再用txt打开~就只能看到乱码啦。
try
{
Thread.sleep(62L - l3);
}
catch (Exception )
} while (true);
if (a_byte == 1)
b();
a_Bobby.notifyDestroyed();
}
private final void d()
{
byte abyte0[] = a();
boolean flag = false;
String s1 = "BC5Data";
a a1 = this;
try
{
RecordStore recordstore;
(recordstore = RecordStore.openRecordStore(s1, false)).setRecord(1, abyte0, 0, abyte0.length);
recordstore.closeRecordStore();
return;
}
catch (Exception )
try
{
RecordStore.deleteRecordStore(s1);
}
catch (Exception )
······
看到了吧~这就是格式!汇编语言!!!
编译连接之后,再用txt打开~就只能看到乱码啦。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么久还没人答,我猜应该反编译出错
原语句应该是this.params val应该表示对象的值value, $xxxx表示对象
原语句应该是this.params val应该表示对象的值value, $xxxx表示对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询