博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA 字节码反编译流程
阅读量:3558 次
发布时间:2019-05-20

本文共 1400 字,大约阅读时间需要 4 分钟。

JAVA 字节码编译流程

背景

近期要抓一个apk的蓝牙包,抓是抓到了,但是命令挺多的,流程方面还得反编译代码会处理快一点,反编译出来有一些代码没有反编译出来,是jvm字节码,要先了解jvm字节码,为此要研究下java反汇编代码,把反汇编用法记录下来。

创建测试代码

public class Math {    public static int xadd(int a, int b){        return a+b;    }    public static void main(String[] args){        int a, b,c ,d,e,f;         a=1;         b=2;         c=(a+b)*10;         f = a*b;         d = xadd(a,b);         e = xadd(1,2);    }}

编译java程序

在命令行中执行编译,得到class文件

javac Math.java

反编译生成的class文件得到汇编程序

javap -c Math
public class Math {
public Math(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."
":()V 4: return public static int xadd(int, int); Code: 0: iload_0 1: iload_1 2: iadd 3: ireturn public static void main(java.lang.String[]); Code: 0: iconst_1 1: istore_1 2: iconst_2 3: istore_2 4: iload_1 5: iload_2 6: iadd 7: bipush 10 9: imul 10: istore_3 11: iload_1 12: iload_2 13: imul 14: istore 6 16: iload_1 17: iload_2 18: invokestatic #2 // Method xadd:(II)I 21: istore 4 23: iconst_1 24: iconst_2 25: invokestatic #2 // Method xadd:(II)I 28: istore 5 30: return

对比java程序和汇编,快速提高看汇编能力

剩下就是对汇编中的入栈出栈,赋值和调用分析了,抛去复杂的程序,可以较为快的对待汇编程序分析了。

转载地址:http://ayjrj.baihongyu.com/

你可能感兴趣的文章
Git与远程仓库关联以及关联错误解决方法
查看>>
[HDU] 平方和与立方和
查看>>
[HDU 2096] 小明A+B
查看>>
[HDU 2520] 我是菜鸟,我怕谁(不一样的for循环)
查看>>
[HDU 1215] 七夕节(求因子,不超时)
查看>>
[POJ 1915] Knight Moves
查看>>
Memcache技术精华
查看>>
Redis详解入门篇
查看>>
php开启redis扩展包与redis安装
查看>>
php使用openssl来实现非对称加密
查看>>
pdo如何防止 sql注入
查看>>
myisam和innodb的区别
查看>>
MySQL建表规范与注意事项(个人精华)
查看>>
JDK8接口的新特性
查看>>
synchronized的局限性与lock的好处
查看>>
redis和memcached有什么区别?
查看>>
Spring中的设计模式
查看>>
如何设计一个秒杀系统 -- 架构原则
查看>>
如何设计一个秒杀系统 -- 动静分离方案
查看>>
JWT 快速了解
查看>>