JAVA反编译后的部分代码看不懂

blueduan1985 2009-12-03 01:18:54
我把一个JAR包反编译,其中一个方法的代码如下:
public static String jdMethod_do(String paramString) {
StringBuffer localStringBuffer = new StringBuffer();
if (paramString == null) {
return "";
}
char[] arrayOfChar = paramString.toCharArray();
int j = arrayOfChar.length;
if (j == 0) {
return "";
}
for (int i = 0; i < j; ++i) {
if (arrayOfChar[i] == '%') {
String str = String.valueOf(arrayOfChar, i + 1, 2);
char c = '0';
try {
c = (char) Integer.parseInt(str, 16);
} catch (NumberFormatException localNumberFormatException) {
System.out.println("PkgTools.Decodecgi:");
localNumberFormatException.printStackTrace();
}
localStringBuffer.append(c);
i += 3;
break label115://这里出问题了
}
label115://还有这里
localStringBuffer.append(arrayOfChar[i]);
}
return localStringBuffer.toString();
}

代码中break label115:是什么意思?label115:又是什么意思?那块代码的含义是什么?最好解答时能拿出权威资料来。
...全文
667 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueduan1985 2009-12-05
  • 打赏
  • 举报
回复
结帖啦,亚日给的提示帮助最大,给80分,水货程序员也给了一些建议,虽然最终没有采纳,也给20分,希望各位能满意
踏雪耗子 2009-12-04
  • 打赏
  • 举报
回复
呵呵!!
blueduan1985 2009-12-04
  • 打赏
  • 举报
回复
听说过,但不太了解。这个是图形界面的还是命令行的?什么内核?
我用过的JD-GUI是基于JAD的,后面用的是JODE的。还有一个DAVA内核的在网上搜了一下,没找到下载的。。

[Quote=引用 15 楼 pjw100 的回复:]
XJad我用的
[/Quote]
pjw100 2009-12-04
  • 打赏
  • 举报
回复
XJad我用的
blueduan1985 2009-12-04
  • 打赏
  • 举报
回复
还有其他好的反编译工具给推荐吗?

[Quote=引用 13 楼 zl3450341 的回复:]
反编译的代码有错误的话  是要换个工具看看

恭喜
[/Quote]
zl3450341 2009-12-04
  • 打赏
  • 举报
回复
反编译的代码有错误的话 是要换个工具看看

恭喜
blueduan1985 2009-12-04
  • 打赏
  • 举报
回复
兄弟,太感谢你了,虽然你没有直接告诉我结果,但正是你提醒我换个工具,我用JODE反编译就可读了。以下为JODE反编译的结果,也给你做个参考

public static String do(String string) {
StringBuffer stringbuffer = new StringBuffer();
if (string == null)
return "";
char[] cs = string.toCharArray();
int i = cs.length;
if (i == 0)
return "";
int i_2_ = 0;
while (i_2_ < i) {
if (cs[i_2_] == '%') {
String string_3_ = String.valueOf(cs, i_2_ + 1, 2);
char c = '0';
try {
c = (char) Integer.parseInt(string_3_, 16);
} catch (NumberFormatException numberformatexception) {
System.out.println("PkgTools.Decodecgi:");
numberformatexception.printStackTrace();
}
stringbuffer.append(c);
i_2_ += 3;
} else {
stringbuffer.append(cs[i_2_]);
i_2_++;
}
}
return stringbuffer.toString();
}
[Quote=引用 10 楼 kf156 的回复:]
换个反编译软件试试

看这段代码,应该是个URLDecoder方法。

[/Quote]
blueduan1985 2009-12-03
  • 打赏
  • 举报
回复
如果这个问题最终没有办法解决也只能按你说的做了,但是我还是很希望这个能确定下来啊,因为我现在反编译的JAR很大,无法直接读懂的部分很多,这个算简单点的,其他地方有很多JVM的各种指令。。
或者,有这方面的资料给推荐一下吗?

另外,再多说一句,QQ群:J2ME群英会中那个水货程序员是你不?[Quote=引用 3 楼 pjw100 的回复:]
楼主,给你个建议,把那两个label15换成分号;试试。
或者把那两行注释掉,break那个保留,反正这样的代码就两行,多试试总能调好的。
[/Quote]
blueduan1985 2009-12-03
  • 打赏
  • 举报
回复
我是用jd-gui来做反编译的,然后直接帖了出来,一个字符都没有改动的。
你说的情况我了解,最近找了好多反编译方面的资料,如果是你说的那种很好改的,就是看到这种古怪的代码才头疼啊。[Quote=引用 4 楼 kf156 的回复:]
LZ贴的代码改动过了吧?
break label115://正确的应该是break label115;
表示跳出label115: 处的循环体

LZ发的方法中,label115:的位置也不对。
[/Quote]
kf156 2009-12-03
  • 打赏
  • 举报
回复
LZ贴的代码改动过了吧?
break label115://正确的应该是break label115;
表示跳出label115: 处的循环体

LZ发的方法中,label115:的位置也不对。
pjw100 2009-12-03
  • 打赏
  • 举报
回复
楼主,给你个建议,把那两个label15换成分号;试试。
或者把那两行注释掉,break那个保留,反正这样的代码就两行,多试试总能调好的。
凡员外 2009-12-03
  • 打赏
  • 举报
回复
jdMethod
sun_cathay 2009-12-03
  • 打赏
  • 举报
回复
kf156 2009-12-03
  • 打赏
  • 举报
回复
换个反编译软件试试

看这段代码,应该是个URLDecoder方法。
Sodino 2009-12-03
  • 打赏
  • 举报
回复
如何看懂Java混淆后的反编译代码:
http://www.diybl.com/course/3_program/java/javajs/20090405/164278.html

希望有帮助
红街咖啡 2009-12-03
  • 打赏
  • 举报
回复
没意思。语法错误
gesanri 2009-12-03
  • 打赏
  • 举报
回复
这就是java中label的用法啊,当然这反编译出来的代码有问题,还没定义就跳出了,定义怎么跑后面去了
pjw100 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 blueduan1985 的回复:]
如果这个问题最终没有办法解决也只能按你说的做了,但是我还是很希望这个能确定下来啊,因为我现在反编译的JAR很大,无法直接读懂的部分很多,这个算简单点的,其他地方有很多JVM的各种指令。。
或者,有这方面的资料给推荐一下吗?

另外,再多说一句,QQ群:J2ME群英会中那个水货程序员是你不?引用 3 楼 pjw100 的回复:
楼主,给你个建议,把那两个label15换成分号;试试。
或者把那两行注释掉,break那个保留,反正这样的代码就两行,多试试总能调好的。

[/Quote]
是啊。

13,100

社区成员

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

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