吾爱汇编论坛

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3359|回复: 106

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

  [复制链接]

  离线 

Lightcolour 发表于 2019-9-20 01:28 | 显示全部楼层 |阅读模式

本帖最后由 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

本集资源

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 23HB +37 THX +10 收起 理由
虚心学习 + 1
sjtkxy + 1 + 1
WolfKing + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
行行行行行行 + 1
Wayne + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
冷亦飞 + 1
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
yexing + 1
别来无恙 + 1
fengyuan0128 + 1
temp + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
w5151183 + 1 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
ldljlzw + 1
河图 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
消逝的过去 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
yuan2020 + 1 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
豆0o0豆 + 1
菜猫牧屿 + 1 + 1 [快捷评语]--你将受到所有人的崇拜!
Shark恒 + 20 + 1 [快捷评语]--你将受到所有人的崇拜!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  在线 

zzcl558 发表于 2019-9-20 01:39 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

寒冰苏雪 发表于 2019-9-20 02:25 | 显示全部楼层

学习了,这个学的真好,顶
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

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

  离线 

fawcgzmg 发表于 2019-9-23 21:33 来自手机端 | 显示全部楼层

谢谢分享,学习一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

w59541511 发表于 2019-10-19 23:09 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

lijiu 发表于 2019-10-31 15:36 | 显示全部楼层

感谢分享,学习一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

wuqingpojie 发表于 2019-11-2 18:51 | 显示全部楼层

谢谢分享!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

godp 发表于 2019-12-11 07:35 | 显示全部楼层

感谢分享

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM

  离线 

菜猫牧屿 发表于 2020-2-16 09:18 | 显示全部楼层

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

本版积分规则

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

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

免责声明

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

站长邮箱:SharkHeng@sina.com
站长微信:SharkHeng


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

1.940001 , 66

Powered by Discuz!

吾爱汇编论坛 www.52hb.com

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