如何在一個陌生的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、