理解Java混淆后的反编译代码

本文通过多个实例详细解析了反编译后的代码如何对应到原始的Java代码中,包括变量赋值、对象创建、循环结构等核心内容,并提供了练习帮助理解。
例子一:赋值 反编译过来的代码如下:         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);

 }

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值