使用jclasslib修改参数字节码报错

没有源代码 修改jar包里的CLASS
用jdgui找到要修改的地方 发现是另一个CLASS传进来的参数I 然后用jclasslib定位 如下

img


IDEA 里实现 参数值赋值 如下

img


报错 如下

img

变量类型不匹配 传过来的参数是整形的 晕 修改常量测试 都没问题
我应该怎么办

尝试用 xjad之类的工具将整个jar包反编译之后,修改代码,然后编译之后将指定的class文件替换一下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7724474
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java class文件内容修改(jclasslib)
  • 除此之外, 这篇博客: 我有一个第三方 jar 包,咋们一起修改 class 文件吧中的 方式二:jclasslib 工具 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、把 jar 包拖入工具中并打开指定 class 文件【也可以使用 jar 命令先解压获取 class 文件】

    image.png

    2、代码定位并修改(我们以开头的客服提示弹窗为例)

    在原始 classes.all.dex.jar 文件中定位到客服:固定前缀在 MyMainActivity 类的某个匿名方法中。

    image.png

    我们知道匿名实现经过编译成 class 文件之后生成单独的文件,且文件名往往带有$符号,所以我们解压 jar 文件之后可以缩小范围查找。

    一番查阅后定位到 MyMainActivity$2$1.class 文件中,Methods -》onClick -》Code

    image.png

    ldc:是 JVM 指令,将从常量池中取出值

    JVM 相关知识我自己也要加强,不过多介绍,这里推荐一个学习地址

    字节码指令

    3、修改并保存
    从刚才的 ldc #61 <客服:> 中点击 #61 跳转到编辑处

    image.png


    到这里,其实我们对 class 文件的修改已经完成了,省去了方法一中的 java 代码转换为 class 的操作和 jar 打包操作。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^