首页 > 其他 > 详细

.class 字节码文件修改

时间:2014-03-13 07:15:20      阅读:556      评论:0      收藏:0      [点我收藏+]

有个.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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!