如何在一个陌生的APP中插入自己想要的插件功能!
本章实现目标:教你如何在一个陌生APP中,插入自己想要实现的启动图。
开始之前先介绍一下,我们的操作是在反编译之后的代码上进行操作的。更要清楚的是java文件在编译之后对应的语言是smali语言。如下:
ok,进入我们的正题,如何以上工具不清楚的请看我另一篇文章介绍!
第一步:首先我们通过工具Killer,反编译你要修改的App。
第二步:在Android Studio新建一个工程,然后在里面写上你要添加插件的功能的代码,图片等等一系列的功能(就是我们的启动图功能)
第三步:通过Killer工具反编译自己的新建功能的MyApp
第四步:修改编译smali文件,实现自己想要的效果。
修改smali文件我总结了一下也分为及步骤:
1、在陌生App中添加启动图图片
2、添加新的XML布局
/** 对控件的添加*/
3、添加ID,在反编译的XML中对应的控件都会有一个 android:id="@id/******" 这样属性, "****"是任意的
4、然后全局搜索******这个属性获取ID,在R$id.smali文件下获取
5、然后通过获取的ID全局搜索看哪里用到, 然后粘贴到自己的陌生App中
/** 对资源图片的添加*/
6、在values文件下里面有public.xml, 这里面存放着索引ID的指向,每个都是唯一的,然后搜索back图片名称找到对应的ID
7、然后搜索找出来的ID,看哪里有引用,找到后复制到自己的陌生App中
8、需要注意的是,使用drawable还会有对应的smali文件,所以我们还要在R$drawable.smali文件中添加对应的信息
9、在R$drawable.smali中搜索图片名称back,找到对应的ID,然后复制到自己陌生App中
/** 修改ids.xml(无论是添加什么都要在ids里面添加一下)*/
10、在ids里面搜索imageview(就是我们上面的******)然后添加到自己陌生App中
/** 重点: 修改public.xml中的ID值 */
11、我们通过上面操作已经把对自己的id复制到陌生App中了,但是原本里面ID是连续的,我们复制过来的ID插进来以后不连续了,所以我们要更改一下ID,按陌生App的ID,复制一下,按规律改下值即可。改好以后别忘了全局替换,
/** XML的添加*/
12、在R$layout.smali文件中搜索xml名称找到对应id, 全局搜索一下id的引用全都 复制到陌生App中,共有3处:R$layout.smali、public.xml、还有一个是activity类中的引用。
13、运行之后可能会报错,应该是跳转首页的包名路径不对要改成陌生APP的包名路径
经过以上,是比较教科书是的操作流程,无论是添加复杂功能,还是简单的功能,都是这样操作,可能有点繁琐,熟悉后就好了。
以下是我操作的截图。对应上面序号操作!
1、
3-4、
6-9、
10、
11、
12、
13、