Lightcolour 发表于 2019-9-25 17:37

《re:从零开始的java逆向基础》#5跳转、循环

先写一个取绝对值的方法 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: ireturnifge 7 是当i大于0的时候跳转到偏移位7ineg 取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 参数aiload_1 参数bif_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文档**** Hidden Message *****

50311048 发表于 2019-9-29 20:32

你将受到所有人的崇拜!

danheizhi 发表于 2020-1-3 08:46

学习 学习

mylin2008 发表于 2020-4-14 15:40

跳转、循环 [修

豆0o0豆 发表于 2021-12-7 22:11

感谢分享呀

ghostxu 发表于 2022-1-15 18:57

感谢分享,很给力!~

6378895 发表于 2022-1-15 19:56

好像很难学的样子

weiran324 发表于 2022-1-15 20:08

一头雾水。。。

zwj00544 发表于 2022-1-16 07:11

{:5_193:}感谢分享

king51999 发表于 2022-1-16 07:33

感谢大佬分享{:5_116:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 《re:从零开始的java逆向基础》#5跳转、循环