AndFix 使用apkpatch -m 命令合并多个补丁文件后,load补丁后发现只有最后时间生成的补丁生效了,其他无法应

yhqotfr8  于 2022-12-31  发布在  其他
关注(0)|答案(7)|浏览(215)

如题

vshtjzan

vshtjzan1#

有具体点的信息吗

btxsgosb

btxsgosb2#

对同一个项目进行修改不同类的不同方法(就是简单的toast内容修改),生成文件origin.apk bug1.apk bug2.apk,使用apkpatch 命令生成bug1.apatch bug2.apatch,然后使用apkpatch -m bug1.apatch bug2.apatch -o total -k -p -a -e 命令生成/total/xxx.apatch文件,从大小来看确实是合并了,导入sdcard后,load补丁,发现只有第二次修改的bug2产生效果,bug1依然没变。

上面是我的操作过程,如果有哪里不对劳烦指出,如果需要详细的代码我稍后可以打包附件。

Thanks。

c2e8gylq

c2e8gylq3#

好的,可以逆向下patch包看看

dnph8jn4

dnph8jn44#

你好,请问生成的patch文件是什么格式,使用什么工具逆向查看呀?

6tr1vspr

6tr1vspr5#

哦,您上面说的是反编译patch后的dex文件吗?

bq3bfh9z

bq3bfh9z6#

我修改了两次,第一次修改了MainActivity的onclick事件,第二次修改了SecondActivity的onclick事件,分别生成两次bug1.apatch bug2.apatch,merge为merge.apatch文件,反编译对应的dex文件,发现两次修改的文件都存在,但是发现一个不同的地方不知道是不是问题所在。

被替换的方法都会有一个MethodReplace 的 Annoatation,单独修改生成的smali代码样式如下

.annotation runtime Lcom/alipay/euler/andfix/annotation/MethodReplace;
clazz = "com.euler.andfix.SecondActivity$1"
method = "onClick"
.end annotation

merge后同一个位置的Annonatation变成了如下样式:

.annotation build I
clazz = "com.euler.andfix.MainActivity$1"
method = "onClick"
.end annotation

麻烦看下是不是这个问题,如何修改?
尝试了下,和-m 后面patch顺序无关,应该跟patch生成时间有关系吧

pdtvr36n

pdtvr36n7#

E:\AndFix\apkpatch-1.0.3>apkpatch -m E:\AndFix\apkpatch-1.0.3\1.apatch E:\AndFix
\apkpatch-1.0.3\2.apatch -o E:\AndFix\apkpatch-1.0.3 -k bugfit.jks -p 123456789
total -a bugfit.jks -e 123456789
我是这样来合并补丁的,但是只显示了2.apatch 的效果呀,1.apatch没有效果。。

相关问题