没有源代码 修改jar包里的CLASS
用jdgui找到要修改的地方 发现是另一个CLASS传进来的参数I 然后用jclasslib定位 如下
变量类型不匹配 传过来的参数是整形的 晕 修改常量测试 都没问题
我应该怎么办
尝试用 xjad之类的工具将整个jar包反编译之后,修改代码,然后编译之后将指定的class文件替换一下
不知道你这个问题是否已经解决, 如果还没有解决的话:1、把 jar 包拖入工具中并打开指定 class 文件【也可以使用 jar 命令先解压获取 class 文件】
2、代码定位并修改(我们以开头的客服提示弹窗为例)
在原始 classes.all.dex.jar 文件中定位到客服:
固定前缀在 MyMainActivity
类的某个匿名方法中。
我们知道匿名实现经过编译成 class 文件之后生成单独的文件,且文件名往往带有$
符号,所以我们解压 jar 文件之后可以缩小范围查找。
一番查阅后定位到 MyMainActivity$2$1.class
文件中,Methods -》onClick -》Code
ldc:是 JVM 指令,将从常量池中取出值
JVM 相关知识我自己也要加强,不过多介绍,这里推荐一个学习地址
字节码指令3、修改并保存
从刚才的 ldc #61 <客服:>
中点击 #61
跳转到编辑处
到这里,其实我们对 class 文件的修改已经完成了,省去了方法一中的 java 代码转换为 class 的操作和 jar 打包操作。