学破解论坛

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

QQ登录

绑定QQ,免密登录

查看: 340|回复: 7

[原创逆向图文] 《re:从零开始的java逆向基础》#1常量入栈指令

[复制链接] |关注本帖

签到天数: 4

该用户今日未签到




本帖最后由 Lightcolour 于 2019-9-20 01:30 编辑

Java中最简单的“方法”(java中不存在函数function)也就是返回一值比如public String getName() {return “Lightcolour”;} 这个方法返回了一个String 也就是字符串 “Lightcolour”
常量入栈指令有iconst、bipush、sipush、ldc、ldc2_w


在一个主类(class)中的方法
public class Main {
      publicstatic int main () {
      return 0;
}
}
这个方法会返回一个值 int型 整数型 4字节 返回值为 0
我们在记事本上写一个这样的java文件:javac Main.java
使用java的标准反编译工具javap -c -verbose Main.class
Last modified 2019-9-20; size 235 bytes
MD5 checksum 29925e418a0454c00c9ecfeac55db6b4
Compiled from "Main.java"
public class Main
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
  #1 = Methodref         #3.#12         //java/lang/Object."<init>":()V
  #2 = Class              #13            // Main
  #3 = Class              #14            // java/lang/Object
  #4 = Utf8              <init>
  #5 = Utf8               ()V
  #6 = Utf8               Code
  #7 = Utf8              LineNumberTable
  #8 = Utf8               main
  #9 = Utf8               ()I
#10 = Utf8              SourceFile
#11 = Utf8               Main.java
#12 = NameAndType       #4:#5          //"<init>":()V
#13 = Utf8               Main
#14 = Utf8               java/lang/Object
{
public Main();
   descriptor: ()V
   flags: ACC_PUBLIC
   Code:
     stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Methodjava/lang/Object."<init>":()V
         4: return
     LineNumberTable:
       line 1: 0
public static int main();
   descriptor: ()I
   flags: ACC_PUBLIC, ACC_STATIC
   Code:
     stack=1, locals=0, args_size=0
         0: iconst_0
         1: ireturn
     LineNumberTable:
       line 3: 0
}
SourceFile: "Main.java"
在程序中最常见的就是0因为区分短一个短字节的 iconst_0也是0的入栈ireturn指令 i 就是 integer


我们接着返回一个 int 为 123


public class Main {
      publicstatic int main () {
      return 123;
}
}
编译然后反编译
   Code:
     stack=1, locals=0, args_size=0
         0: bipush        123
         2: ireturn
那么为什么这次变成了bipush 而不是 iconst_0了呢 那就是int 的范围
当 int 的范围 在 0 ~ 5的时候 指令是 iconst_0 ~ iconst_5
-1 是iconst_m1
在 -128 ~ 127 的时候 指令是 bipush
在 -32768 ~ 32767 的时候 指令是sipush
我们接着返回 1234 试试
编译然后反编译
Code:
     stack=1, locals=0, args_size=0
         0: sipush        1234
         3: ireturn
     LineNumberTable:
       line 3: 0
看到一定范围的时候指令就会变就会变
我列了一张表
1.png
各变量当在一定范围的时候指令的变化
我们接着看看其他反编译的
boolean false iconst_0
boolean true iconst_1
也就是说 false 用常量 0 表示 true 用常量 1表示
short 1234 sipush
char ‘A’ bipuch 65
char ‘啊’ sipush 21834         注意这里记事本保存为ANSI
byte 123 bipuch
long 12345678901234567891 0: ldc2_w #2 double 123.456d ldc2_w #2 float 123.456f ldc #2

本集资源

游客,当前主题有一部分内容已经设置隐藏,需要回复才能查看全部内容。

评分


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

参与人数 1HB +20 THX +1 收起 理由
Shark恒 + 20 + 1 [快捷评语]--你将受到所有人的崇拜!

查看评分详情

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

签到天数: 177

今日第44个签到




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

签到天数: 2

该用户今日未签到




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

签到天数: 18

该用户今日未签到




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

签到天数: 4

该用户今日未签到

发表于 2019-9-23 21:33 本信息由手机发布 | 显示全部楼层 |取消关注该作者的回复吾爱破解论坛



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

签到天数: 21

该用户今日未签到




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

签到天数: 2

该用户今日未签到




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

签到天数: 3

该用户今日未签到




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

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

免责声明

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

站长邮箱:SharkHeng#iCloud.com


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

GMT+8, 2019-12-7 02:14

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