学破解论坛

 ★找回密码★
 ★免费注册★

QQ登录

绑定QQ,免密登录

查看: 167|回复: 1

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

[复制链接] |关注本帖

签到天数: 4

该用户今日未签到




操作数栈在执行字节码指令的时候使用,它和通用寄存器在 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文档
游客,当前主题有一部分内容已经设置隐藏,需要回复才能查看全部内容。


评分


每日系统赠送“免费评分”
评分不仅是免费的,还能提升你自己账号的活跃度。既感谢了楼主,又提升了自己。可谓一箭双雕!何乐而不为?评分安排上!

参与人数 2HB +21 THX +2 收起 理由
254678 + 1 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
Shark恒 + 20 + 1 [快捷评语]--你将受到所有人的崇拜!

查看评分详情

学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

签到天数: 18

该用户今日未签到




你将受到所有人的崇拜!
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
您需要登录后才可以回帖 登录 | 立即注册

获得更多积分,阅读本版加分规则

免责声明

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者其他任何非法用途!否则,一切后果请用户自负!

站长邮箱:SharkHeng#iCloud.com


站长微信号:SharkHeng|联系Email|鲨鱼逆向|无图版|手机版|小黑屋|FAQ|VIP破解教程|学破解论坛 ( 京公网安备 11011502002737号 | 京ICP备14042738号 ) 

GMT+8, 2019-12-13 16:23

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