反编译出来的JAVA代码有问题!各位大哥帮忙看看!

zzutligang 2007-03-25 04:48:18
我用反编译工具将.class文件反编译后有一个函数中的代码如下:
public String toString()
{
String s;
if(_items == 0 || _v == null)
return super.toString();
s = new String();
s;
JVM INSTR new #53 <Class StringBuffer>;
JVM INSTR dup_x1 ;
JVM INSTR swap ;
String.valueOf();
StringBuffer();
"(";
append();
toString();
s;
int i = 0;
goto _L1
_L3:
s;
JVM INSTR new #53 <Class StringBuffer>;
JVM INSTR dup_x1 ;
JVM INSTR swap ;
String.valueOf();
StringBuffer();
_v[i].toString();
append();
toString();
s;
if(i == _items - 1)
continue; /* Loop/switch isn't completed */
s;
JVM INSTR new #53 <Class StringBuffer>;
JVM INSTR dup_x1 ;
JVM INSTR swap ;
String.valueOf();
StringBuffer();
",";
append();
toString();
s;
i++;
_L1:
if(i < _items) goto _L3; else goto _L2
_L2:
s;
JVM INSTR new #53 <Class StringBuffer>;
JVM INSTR dup_x1 ;
JVM INSTR swap ;
String.valueOf();
StringBuffer();
")";
append();
toString();
s;
return s;
}
显然是不正确的,我试验了好几个反编译工具,这个函数反编译出来的都是这样。
请各位大哥出个主意。谢谢了!
分不够可以另开贴子给!
...全文
818 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
就是欠揍 2007-12-05
  • 打赏
  • 举报
回复
不懂,帮你顶下
IOPsyche 2007-12-04
  • 打赏
  • 举报
回复
反编译出来的有点像汇编的格式。
ufo5054492 2007-04-05
  • 打赏
  • 举报
回复
我只想说一句话!
maquan('ma:kju)你真是个天才!
我服了你!
maquan 2007-03-26
  • 打赏
  • 举报
回复
正如前面 lixiaoxue85 兄所说,目前常见的反编译软件,其内核总共也没有几个,基本都是 JAD。

JAD 在反编译的时候,有时确实会出现一些异常的结果(排除混淆的原因),基本都是因为 try/catch、for、break 等流程控制语句造成的,如果你耐心多看看,多猜猜,基本也能猜出个大概。就算不能精确再现程序原貌,至少逻辑上大概差不多。

比如楼主这段程序,我看差不多应该是下面的样子:

public String toString() {
if(_items == 0 || _v == null)
return super.toString();

String s = "(";
for (int i=0; i<_items; i++) {
s += _v[i];
if (i != _items-1)
s += ",";
}
s += ")";
return s;
}
zzutligang 2007-03-26
  • 打赏
  • 举报
回复
楼上的,你好厉害,我估计这段代码应该是这样的。
其实我就是想至少我反编译出来的代码到底该如何理解,下回再看到类似的代码,就应该往这方面想了。
zzutligang 2007-03-25
  • 打赏
  • 举报
回复
inthistime(共此时), 你说的有道理,但我想这个.class应该是没有混淆或则是简单混淆,因为其他的很多函数都没有问题,逻辑上也正确,代码也正确,就这个函数有问题。
如果是高级混淆,我想其他的函数反编译出来的也应该有问题。这个.class文件中还有其他很多函数比这函数要复杂的多,那些函数都没有问题。
我是准备要放弃,但有点不甘心。因为这个反编译工作多我来说很重要。这个库已经没有了,买也买不着!我只能反编译然后自己修改代码。否则我的工作就只能搁置了。
zzutligang 2007-03-25
  • 打赏
  • 举报
回复
楼上的说的没错,都是jad内核。
但上面的让我怎么猜呀,没头没尾的!
谁有反编译经验,告诉我上面的代码是什么意思?
inthistime 2007-03-25
  • 打赏
  • 举报
回复
JAVA现在的防反编译技术已经较为成熟了,有很多防反编译的工具,反编译出来的都是一些乱码。

建议你反编译一次看不懂就放弃算了,因为它有可能用了防反编译技术。
否则从成本上说是不划算的。
lixiaoxue85 2007-03-25
  • 打赏
  • 举报
回复
现在流行的反编译器内核都是JAD的,你不管换社么都一个样.编译不出来只能自己猜了,本来编译和反编译就不是等价的.
frilly 2007-03-25
  • 打赏
  • 举报
回复
路过,不是故意加上去了吧,哈哈,学习
For_suzhen 2007-03-25
  • 打赏
  • 举报
回复
UP

62,614

社区成员

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

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