對某日頭條apk的反編譯和二次打包(二)

前一篇對某日頭條apk 的反編譯和二次打包介紹了Apk的反編譯和二次打包的流程舒帮,打包的apk使得其意見反饋按鈕失效瑞凑。這片文章在此基礎(chǔ)上創(chuàng)建新的界面末秃,點(diǎn)擊意見反饋之后進(jìn)入到自己創(chuàng)建的一個(gè)自定義的空調(diào)控制界面,在代碼修改層面更有參考意義籽御。這里只是演示效果练慕,不探討界面功能,其中這個(gè)自定義的空調(diào)界面是郭霖公眾號(hào)里介紹的一篇文章自定義View實(shí)戰(zhàn):空調(diào)遙控器技掏,對自定義View的學(xué)習(xí)很有幫助贺待,另外安利一下郭霖的公眾號(hào),每天都有干貨零截。

demo apk 下載地址apk下載

工具

對某日頭條apk 的反編譯和二次打包文中介紹過的工具這里不再介紹麸塞。本文中主要用到了Android studio中的插件:java2smali,可以在android studio中搜索到涧衙,其功能是可以直接把java代碼編譯為smali哪工,方便二次打包奥此。

目標(biāo)

在某日頭條的apk中插入一個(gè)界面代碼,在其設(shè)置界面中點(diǎn)擊意見反饋進(jìn)入我們自己創(chuàng)建的界面雁比。效果如下稚虎,點(diǎn)擊意見反饋進(jìn)入一個(gè)新的空調(diào)控制界面:

步驟

1. java到smali的轉(zhuǎn)變

在android studio中寫完代碼以后,github代碼地址有代碼偎捎,使用java2smali生成代碼的smali版本:

其中包括AirMoveView和DrawActivity兩個(gè)java文件的smali版本

由于匿名內(nèi)部類的原因蠢终,每個(gè)java文件生成了兩個(gè)smali文件。

2. Smali文件的修改

android反編譯-smali語法文中介紹了smali的語法茴她,smali中的每個(gè)變量均使用路徑加類名的方式寻拂,因此我們需要修改相關(guān)的路徑。本文中把smali文件放置在com/ss/android/article/base/feature/mine/路徑下丈牢,與BaseSettingActivity放在同一個(gè)路徑祭钉。修改四個(gè)smali文件中的變量為正確的路徑,如下所示:Github地址中有完整的代碼己沛,可以去下載學(xué)習(xí)慌核。

3. 資源文件和id

界面一般是需要xml文件來做布局的,因此要把相應(yīng)的xml布局文件放置在res/layout路徑下申尼。此處注意xml文件中的自定義控件也要更改路徑為com/ss/android/article/base/feature/mine/

如果認(rèn)為放置以后就可以直接打包運(yùn)行垮卓,那你就too young 了。Android R文件生成中介紹了android 中R文件的生成規(guī)則师幕,我們需要根據(jù)根據(jù)規(guī)則把xml中的id寫入R文件中扒接,具體路徑是com/ss/android/article/news/R$id。一定要參照Android R文件生成提到的規(guī)則正確寫们衙,以下引用自文章:

作者:hi大頭鬼hi

鏈接:https://www.zhihu.com/question/19730414/answer/67288581

資源ID是一個(gè)4字節(jié)的無符號(hào)整數(shù)钾怔,其中,最高字節(jié)表示Package ID蒙挑,次高字節(jié)表示Type ID宗侦,最低兩字節(jié)表示Entry ID。

Package ID相當(dāng)于是一個(gè)命名空間忆蚀,限定資源的來源矾利。Android系統(tǒng)當(dāng)前定義了兩個(gè)資源命令空間,其中一個(gè)系統(tǒng)資源命令空間馋袜,它的Package ID等于0x01男旗,另外一個(gè)是應(yīng)用程序資源命令空間,它的Package ID等于0x7f欣鳖。所有位于[0x01, 0x7f]之間的Package ID都是合法的察皇,而在這個(gè)范圍之外的都是非法的Package ID。前面提到的系統(tǒng)資源包package-export.apk的Package ID就等于0x01,而我們在應(yīng)用程序中定義的資源的Package ID的值都等于0x7f什荣,這一點(diǎn)可以通過生成的R.java文件來驗(yàn)證矾缓。

Type ID是指資源的類型ID。資源的類型有animator稻爬、anim嗜闻、color、drawable桅锄、layout琉雳、menu、raw友瘤、string和xml等等若干種翠肘,每一種都會(huì)被賦予一個(gè)ID。

Entry ID是指每一個(gè)資源在其所屬的資源類型中所出現(xiàn)的次序商佑。注意,不同類型的資源的Entry ID有可能是相同的厢塘,但是由于它們的類型不同茶没,我們?nèi)匀豢梢酝ㄟ^其資源ID來區(qū)別開來。

所以在該文件中的id不能隨意寫晚碾,前幾位要保持一致抓半,后邊的Entry ID要按順序?qū)?/b>,本文中的新加id如下圖:

另外layout的xml布局文件也要在com/ss/android/article/news/R$layout;中寫:

同樣要注意規(guī)則格嘁。

4.小技巧

一般來說我們是沒法截獲release版本的apk的log數(shù)據(jù)的笛求,但是我們自己寫的那部分代碼是可以在運(yùn)行時(shí)是可以看到log的,可以幫助我們調(diào)試程序糕簿。

另外一定要把編譯簽名安裝的幾個(gè)命令寫為一個(gè)腳本探入,方便安裝調(diào)試,不然每次去敲幾個(gè)命令很麻煩懂诗,即使有命令記錄當(dāng)需要多次調(diào)試時(shí)也很麻煩蜂嗽。

總結(jié)

本文中需要重要掌握的是R文件的生成規(guī)則smali的基礎(chǔ)語法殃恒,只用掌握的基本知識(shí)才能在碰到問題時(shí)快速定位問題植旧,解決問題。github地址:https://github.com/wutongke/Apktool_Test

推薦閱讀:

對某日頭條apk 的反編譯和二次打包

對某日頭條apk的反編譯和二次打包(二)

對某日頭條apk的反編譯和二次打包(三)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末离唐,一起剝皮案震驚了整個(gè)濱河市病附,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亥鬓,老刑警劉巖完沪,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嵌戈,居然都是意外死亡丽焊,警方通過查閱死者的電腦和手機(jī)较剃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來技健,“玉大人写穴,你說我怎么就攤上這事〈萍” “怎么了啊送?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欣孤。 經(jīng)常有香客問我馋没,道長,這世上最難降的妖魔是什么降传? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任篷朵,我火速辦了婚禮,結(jié)果婚禮上婆排,老公的妹妹穿的比我還像新娘声旺。我一直安慰自己,他們只是感情好段只,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布腮猖。 她就那樣靜靜地躺著,像睡著了一般赞枕。 火紅的嫁衣襯著肌膚如雪澈缺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天炕婶,我揣著相機(jī)與錄音姐赡,去河邊找鬼。 笑死柠掂,一個(gè)胖子當(dāng)著我的面吹牛雏吭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陪踩,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼杖们,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肩狂?” 一聲冷哼從身側(cè)響起摘完,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傻谁,沒想到半個(gè)月后孝治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年谈飒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岂座。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杭措,死狀恐怖费什,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情手素,我是刑警寧澤鸳址,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站泉懦,受9級特大地震影響稿黍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜崩哩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一巡球、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邓嘹,春花似錦酣栈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸯乃。三九已至鲸阻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缨睡,已是汗流浹背鸟悴。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奖年,地道東北人细诸。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像陋守,于是被迫代替她去往敵國和親震贵。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容