.class 字节码文件修改

您所在的位置:网站首页 class字节码文件 .class 字节码文件修改

.class 字节码文件修改

2022-05-29 17:28| 来源: 网络整理| 查看: 265

有个.class文件,用XJad反编译如下:

bubuko.com,布布扣 public String int() { String s = null; try { List list = c.if(a).getNeighboringCellInfo(); if (list != null && !list.isEmpty()) { ....... } } }  ...... bubuko.com,布布扣

现在想把它改成下面这样:

? 1 2 3 4 5 6 7 8 9 10 11 12 public String int() {     String s = null;     try     {         List list = Support.getNeighboringCellInfo();         if (list != null && !list.isEmpty())         {                        ........                     }             }     }

  也就是getNeighboringCellInfo函数返回值从Support类的静态方法getNeighboringCellInfo里面获取。

我们先看之前代码这一段的字节码文件,使用JavaBite工具查看int函数如下所示:

bubuko.com,布布扣

特别注意000C这个编号的指令astore_2。

修改后的字节码文件是这样的:

bubuko.com,布布扣

在0002指令处我们做了很多修改,之后编译一直报错,原因就是000C以后的指令index和之前不一样了(跳转语句跟据index跳会乱掉)。所以我们要补齐nop指令,一直补到和原来的000C后面的指令相同。

看一下字节码对比

bubuko.com,布布扣

图中一串00 就是我们填入的 nop指令。01 是aconst_null,4C是astore_1,B8 00 DA是调用Support里面的静态函数。

.class 字节码文件修改,布布扣,bubuko.com

.class 字节码文件修改

原文:http://www.cnblogs.com/chyl411/p/3596301.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3