吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3988|回复: 84

[原创逆向图文] 《re:从零开始的java逆向基础》#2操作数栈

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

操作数栈在执行字节码指令的时候使用,它和通用寄存器在 native CPU 中使用的方式类似。大多数 JVM 字节码通过 pushing,popping,duplicating,swapping,或生产消费值的操作使用操作数栈
我们先运行一个例子 比如return 一个 a/2
public class Main{
      public static int main(int a) {
           return a /2;
      }   
}
Java -c -verbose 反编译
Code:
      stack=2, locals=1, args_size=1
         0: iload_0
         1: iconst_2
         2: idiv
         3: ireturn
      LineNumberTable:
        line 3: 0
iload_0 就是a
iconst_2 也就是2
idiv 前面两个数相除
ireturn 返回值、
我们再写复杂点returna / 2.0d
返回一个双浮点
public class Main{
      public static double main(double a) {
           return a / 2.0d;
      }   
}
Java -c -verbose 反编译
Code:
      stack=4, locals=2, args_size=1
         0: dload_0
         1: ldc2_w        #2                  // double 2.0d
         4: ddiv
         5: dreturn
      LineNumberTable:
        line 3: 0
dload_0 就是a
ldc2_w 就是2.0d
ddiv 两个相除
dreturn 返回值
在看看两个参数
public class Main{
      public static int main(int a,int b) {
           return a + b;
      }   
}
Java -c -verbose 反编译
    Code:
      stack=2, locals=2, args_size=2
         0: iload_0
         1: iload_1
         2: iadd
         3: ireturn
      LineNumberTable:
        line 3: 0
iload_0 就是 a
iload_1 就是 b
iadd 两数相加
ireturn 返回值
再看看长整型
public class Main{
      public static long main(long a,long  b) {
           return a + b;
      }   
}
Java -c -verbose 反编译
    Code:
      stack=4, locals=4, args_size=2
         0: lload_0
         1: lload_2
         2: ladd
         3: lreturn
      LineNumberTable:
        line 3: 0
lload_0 就是a
lload_2 就是 b
ladd 两数相加
lreturn 返回值
再写一个混合
public class Main{
      public static int main(int a,int  b,int c) {
           return c*a + b;
      }   
}
Java -c -verbose 反编译
    Code:
      stack=2, locals=3, args_size=3
         0: iload_2
         1: iload_0
         2: imul
         3: iload_1
         4: iadd
         5: ireturn
      LineNumberTable:
        line 3: 0
iload_2 就是c
iload_ 就是 a
imul 两数相乘
iload_1 就是b
iadd 两数相加
ireturn 返回值
本集资源word文档
游客,如果您要查看本帖隐藏内容请回复


评分

参与人数 21HB +41 THX +8 收起 理由
lies + 1
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
虚心学习 + 1
行行行行行行 + 1
消逝的过去 + 2
冷亦飞 + 1
别来无恙 + 1
kway + 1
皮娜十 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
三月十六 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
噬星空 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
逆君 + 1 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
MoeRay + 1
playboy + 2
zwj00544 + 1 + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
254678 + 1 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
Shark恒 + 20 + 1 [快捷评语]--你将受到所有人的崇拜!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
50311048 发表于 2019-9-20 23:27 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
PHT1314 发表于 2020-4-2 13:52 | 显示全部楼层

你将受到所有人的崇拜!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
拿着雪糕 发表于 2022-2-5 12:14 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
NZbn70245 发表于 2022-2-22 14:27 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
沙画 发表于 2022-3-9 12:38 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
omgTsQ6917 发表于 2022-3-9 14:09 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
我是好人 发表于 2022-3-9 14:10 | 显示全部楼层

[快捷回复]-学破解防逆向,知进攻懂防守!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
pjkxPYsh 发表于 2022-3-9 14:10 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
sjhvBc 发表于 2022-3-9 14:10 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!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

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