前言
由于公司项目有个sdk太过老旧,只有armabi,没有v7a和v8a两个库,导致项目升级到新版的时候,找不到so文件。后面在GitHub上找到了对应的项目,有新的v7a和v8a这两个库,但是有些地方变了,必须需要做修改。
需要准备的工具:Android Studio、IDA pro、010 Editor
一、修改aar文件
1.把aar要复制一份,把复制的那一份的后缀改成zip,然后解压,不能上来就直接解压aar,后面要放到项目里了,解压了就坏了(可能啊),解压目的是为了那里面的so文件。
2.用AndroidStudio创建一个简单的项目,把aar包放在app那个module里,再进行依赖(作为一个Android开发工程师,这都不会,那没招了)。
3.依赖好了之后,在AndroidStudio的左侧,External Libraries找到对应的aar,进到class.jar,找到你想要修改的class文件。
4.复制目标文件的包名,在新建一样的包名,新建一个java文件名字也要一模一样,把你刚才在aar包查看的目标class里的代码,全部复制粘贴到新的目标Java文件里,然后里面有爆红的,你也要根据爆红的包名,再创建一样的包名,再创建一样的Java文件,名字一样,如果这个Java文件不是你想要的,方法里做成空的。目标Java再改成你想要的代码就行。
5.整个项目没有爆红了,顶部Build–>Rebuild Project,编译一下,然后就可以拿到你想要的class文件了,在app–>build–>intermediates–>javac–>debug里。
6.然后右键aar包,使用压缩软件打开(
不是解压
),然后再把刚才得到的新class文件,放到对应的路径下。
7.提示是否替换,选择替换,提示已经修改,选择是,就可以了。
8.你会发现有些同个名字的多个class文件,有$1、$2这些,就是一个原来的代码实现了多个对象,以及里面有内部类和内部接口,一样弄,然后把这些同名的多个class文件删掉之后在粘贴新的class文件进去。
二、修改so文件
需要用到IDA pro、010 Editor,可以自己搜,
也可以下载我这个,里面包含了这两个工具
1.使用IDA工具打开so文件,ida.exe打开的是32位和x86的so,ida64.exe打开的是64位的so文件;
2.双击打开IDA工具,选择Go,有其他弹窗都是选择默认的,然后选择so目录将文件打开,也是默认按钮,左侧这边是方法名,选择可疑的方法名,然后按F5,弹窗选择默认按钮,就可以看到代码了,其实是伪代码;
3.选中伪代码里的单词(有些是可以选择的),双击,就会打开新的界面,有对应的代码坐标了
4.使用010Editor打开同一个so文件,找到对应的坐标,修改右边的字符串,对应的16进制也会相应的改变,然后保存。
5.修改so的字符串只能替换同等数量的字母,不能新增。
6.修改完成之后保存,在将修改好的so文件,放到aar包里进行替换(不能解压aar,用压缩文件工具打开)。