吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3783|回复: 95

[原创逆向图文] 《re:从零开始的java逆向基础》#5跳转、循环

  [复制链接]
Lightcolour 发表于 2019-9-25 17:37 | 显示全部楼层 |阅读模式

先写一个取绝对值的方法
public class Main{
      publicstatic int abs(int i) {
            if(i< 0)
                 return-i;
            
            returni;
      }
}
反编译
    Code:
      stack=1, locals=1, args_size=1
         0: iload_0
         1: ifge          7
         4: iload_0
         5: ineg
         6: ireturn
         7: iload_0
         8: ireturn
ifge 7 是当i大于0的时候跳转到偏移位7
ineg 取i的负数
再看看两个参数比较的
public class Main{
      publicstatic int abs(int a, int b) {
            if(a<b)
                 returnb;
            
            returnb;
      }
}
反编译
   Code:
     stack=2, locals=2, args_size=2
         0: iload_0
         1: iload_1
         2: if_icmpge     7
         5: iload_1
         6: ireturn
         7: iload_1
         8: ireturn
iload_0 参数a
iload_1 参数b
if_icmpge 比较 当a大于b时候跳转到偏移位7
再看看循环
public class Main{
      public staticvoid mian(String[] args) {
            for(inti = 0;i < 5;i++) {
                 System.out.println(i);
            }
      }
}
反编译
    Code:
      stack=2,locals=2, args_size=1
         0:iconst_0
         1:istore_1
         2: iload_1
         3:iconst_5
         4:if_icmpge     20
         7:getstatic     #2     // Fieldjava/lang/System.out:Ljava/io/PrintStream;
        10: iload_1
        11:invokevirtual #3      // Methodjava/io/PrintStream.println:(I)V
        14:iinc          1, 1
        17:goto          2
        20: return
     LineNumberTable:
        line 3: 0
        line 4: 7
        line 3: 14
        line 6: 20
     StackMapTable: number_of_entries = 2
        frame_type= 252 /* append */
         offset_delta = 2
          locals =[ int ]
        frame_type= 250 /* chop */
         offset_delta = 17
0 将1压入栈
1存入本地变量数组
2 压入栈
3 将 5压入栈
4 比较
14 指定int增加值
17 偏移2
看看switch
public class Main{
      public static void mian(String[] args) {
            int value = 0;
            switch(value) {
            case 0:
                 System.out.println("0");
                 break;
            case 1:
                 System.out.println("1");
                 break;
            case 2:
                 System.out.println("2");
                 break;
            case 3:
                 System.out.println("3");
                 break;
            case 4:
                 System.out.println("4");
                 break;
            }
      }
}
    Code:
      stack=2, locals=2, args_size=1
         0: iconst_0
         1: istore_1
         2: iload_1
         3: tableswitch   { // 0 to 4
                       0: 36
                       1: 47
                       2: 58
                       3: 69
                       4: 80
                 default: 88
            }
        36: getstatic     #2      // Field java/lang/System.out:Ljava/io/PrintStream;
        39: ldc           #3                  // String 0
        41: invokevirtual #4 // Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
        44: goto          88
        47: getstatic     #2     // Field java/lang/System.out:Ljava/io/PrintStream;
        50: ldc           #5   // String 1
        52: invokevirtual #4 // Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
        55: goto          88
        58: getstatic     #2 // Field java/lang/System.out:Ljava/io/PrintStream;
        61: ldc           #6                  // String 2
        63: invokevirtual #4 // Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
        66: goto          88
        69: getstatic     #2    // Field java/lang/System.out:Ljava/io/PrintStream;
        72: ldc           #7                  // String 3
        74: invokevirtual #4 // Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
        77: goto          88
        80: getstatic     #2 // Field java/lang/System.out:Ljava/io/PrintStream;
        83: ldc           #8                  // String 4
        85: invokevirtual #4 // Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
        88: return
不用说想必大家已经知道了

本集资源word文档
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 19HB +17 THX +9 收起 理由
lies + 1
虚心学习 + 1
行行行行行行 + 1
WolfKing + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Wayne + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
慕枫二二 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
别来无恙 + 1
猪才怪 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
temp + 1 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
瀧tz + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
醉人的回眸乁 + 1 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
playboy + 2
ldljlzw + 1
liugu0hai + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
拿着雪糕 + 1 + 1
消逝的过去 + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
豆0o0豆 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
50311048 发表于 2019-9-29 20:32 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
danheizhi 发表于 2020-1-3 08:46 | 显示全部楼层

学习 学习  
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
mylin2008 发表于 2020-4-14 15:40 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
豆0o0豆 发表于 2021-12-7 22:11 | 显示全部楼层

感谢分享呀
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ghostxu 发表于 2022-1-15 18:57 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
6378895 发表于 2022-1-15 19:56 | 显示全部楼层

好像很难学的样子
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
weiran324 发表于 2022-1-15 20:08 | 显示全部楼层

一头雾水。。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zwj00544 发表于 2022-1-16 07:11 | 显示全部楼层

感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
king51999 发表于 2022-1-16 07:33 | 显示全部楼层

感谢大佬分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表