Android中帶你開發(fā)一款自動爆破簽名校驗工具kstools

一蜂厅、技術(shù)回顧

為了安全起見,一些應(yīng)用會利用自身的簽名信息對應(yīng)用做一層防護粮揉,為了防止應(yīng)用被二次打包操作,在之前已經(jīng)介紹了很多關(guān)于應(yīng)用簽名校驗爆破的方法抚笔,一條基本原則不能忘:全局搜索”signature”字符串扶认,這里可以在Jadx打開apk搜索,也可以在IDA中打開so搜索都可以殊橙。找到這信息之后可以手動的修改校驗邏輯辐宾,但是這個法則有個問題,就是如果一個應(yīng)用在代碼中很多地方都做了簽名校驗膨蛮,比如以前介紹的一篇爆破游戲文章:Android中爆破應(yīng)用簽名信息案例分析叠纹,那時候就會發(fā)現(xiàn),應(yīng)用在很多地方都做了簽名校驗敞葛,當(dāng)時的解決辦法是一個一個地方修改誉察,這樣會感覺操作非常繁瑣,所以本人就發(fā)明了一個比較好的辦法惹谐,就是直接hook應(yīng)用的pms服務(wù)持偏,攔截其獲取簽名的方法,然后替換正確的簽名信息即可氨肌。這個技術(shù)得益于之前介紹的技術(shù):Android中免root進行hook應(yīng)用自身的系統(tǒng)服務(wù)鸿秆,這個技術(shù)原理非常簡單,就是借助于動態(tài)代理技術(shù)+反射機制即可怎囚。而這個技術(shù)正好可以用于這次自動爆破功能卿叽,我們只需要在程序的入口處添加這段hook代碼即可。關(guān)于這個技術(shù)恳守,在上一篇的文章中已經(jīng)實踐過了:Android中爆破應(yīng)用簽名校驗的新姿勢考婴。在那篇文章中我結(jié)尾說到了,這樣的操作步驟可以完全自動化井誉,所以這篇文章就把這個操作步驟變成自動化蕉扮,開發(fā)一款一鍵化操作工具,我將其命名為:kill_signed_tools(簡稱:kstools);

二颗圣、工具流程開發(fā)

在介紹這個工具開發(fā)之前喳钟,我們還必須了解一個知識點,就是我在之前開發(fā)的一個自動注入代碼工具icodetools的原理在岂,不了解的同學(xué)可以去查看這篇文章:Android中自動注入代碼工具icodetools原理解析奔则,主要利用asm技術(shù)和dex2jar工具進行操作的。因為本文我們需要在應(yīng)用的入口插入hook代碼蔽午,所以也需要這樣類似操作易茬。原理和準備工作已經(jīng)介紹完了,下面開始正式的開發(fā)流程:

第一步:獲取應(yīng)用正確簽名信息

因為我們在后面hook代碼之后攔截簽名方法,得返回應(yīng)用本身正確的簽名信息抽莱,所以得在第一步中就要獲取應(yīng)用簽名信息范抓,這個網(wǎng)上有很多代碼可以直接獲取apk文件的簽名信息,這里不多說了食铐。

第二步:獲取應(yīng)用入口信息

這個需要借助AXMLPrinter.jar工具來進行解析apk文件中的AndroidManifest.xml文件信息匕垫,然后獲取程序入口,這里采用PullXML解析方式虐呻,需要注意的是:應(yīng)用的入口一般有兩處象泵,一個是自定義的Application,一個是啟動Activity斟叼。所以這里解析的時候偶惠,優(yōu)先判斷有沒有自定義的Application入口,如果沒有朗涩,就獲取啟動的Activity即可忽孽。找到入口之后一定要獲取入口類的完整名稱即:包名+類名。

第三步:插入hook功能代碼

借助于icodetools工具馋缅,以及第二步中獲取到的程序入口類信息扒腕,開始動態(tài)插入hook代碼,這里需要注意的是:最好是在attachBaseContext方法中進行添加即可萤悴,如果入口類沒有實現(xiàn)這個方法瘾腰,可以在onCreate方法中添加,但是一定要在方法的第一行代碼處添加覆履。插入的asm代碼也很簡單蹋盆,可以利用Bytecode插件進行查看即可:

我們只需要將這段asm代碼添加到入口處即可:

而這里的ServiceManagerWraper類后面會給出下載地址。

第四步:二次打包簽名

這個中間還有很多步驟硝全,比如講jar轉(zhuǎn)化成dex,再把dex替換到apk中栖雾,這個過程在icodetools中已經(jīng)有了,完全一樣伟众,這里就沒必要在介紹了析藕,最后一步都是二次打包簽名操作。

三凳厢、hook代碼分析

到這里我們就把操作步驟流程介紹完了账胧,下面在來介紹關(guān)于hook代碼邏輯,hook代碼比較簡單先紫,就兩個類治泥,一個是反射類,一個是動態(tài)代理類遮精,下載地址后面會給出:

這里的代碼非常簡單居夹,通過傳入的Context變量,利用反射機制替換服務(wù)的Binder對象,然后就是動態(tài)代理對象:

攔截獲取簽名信息的方法准脂,替換正確的簽名信息即可劫扒。然后將這兩個類編譯得到對應(yīng)的class文件,放到工具目錄下:

所以最終的工具目錄是這樣的結(jié)構(gòu)意狠,只要將操作的apk文件拷貝到這里粟关,改名為src.apk,然后運行kstools.bat即可:

這個運行操作和icodetools操作一模一樣环戈,運行完成之后,會生成一個signed.apk簽過名的澎灸,還有一個沒有簽名的unsigned.apk文件院塞,如果想自己簽名,可以利用這個文件即可性昭。

這時候我們可以用Jadx工具查看signed.apk文件:

添加成功了拦止。

四、工具使用說明

從github上弄下來的工具目錄如下:

因為現(xiàn)在很多app做了加固操作糜颠,所以這里需要注意這么幾個問題:

第一個問題:如果發(fā)現(xiàn)app加固了汹族,第一步你得先脫殼,再次說明其兴,本工具不適合加固app,需要自己手動脫殼修復(fù)apk才能繼續(xù)操作顶瞒。加固app操作,先把加固app放到當(dāng)前目錄下元旬,直接拖動apk文件到apksign.bat上運行榴徐,獲取正確的簽名信息,會保存到apksign.txt文件中匀归,然后再去脫殼修復(fù)apk,在放到當(dāng)前目錄下命名為src.apk坑资,然后在此運行kstools.bat文件即可。操作過程不可錯亂穆端,不然會出錯袱贮。

第二個問題:如果發(fā)現(xiàn)app沒有加固,那么就直接將apk命名為src.apk放到當(dāng)前目錄下体啰,直接運行kstools.bat即可攒巍,這里又要注意啦,如果直接運行kstools工具的話狡赐,當(dāng)前目錄可能存在你上次操作加固的app存留的apksign.txt文件窑业,這時候需要手動刪除,切記枕屉,不然也是操作失敗的常柄。

第三個問題:不要問怎么區(qū)分是加固的還是沒有加固的,這個技能小學(xué)生都會了,這里不介紹了西潘。

第四個問題:在獲取app簽名信息失敗的時候卷玉,怎么辦?我們需要手動的去獲取喷市,這里方法很多相种,可以用Android中的這段代碼即可:

這樣就可以得到簽名信息了,然后再把簽名信息拷貝到目錄的apksign.txt文件中即可品姓。

說明:工具第一次發(fā)布寝并,肯定有一些問題,請敬請的使用腹备,提問題衬潦,如果在操作的工程中遇到任何問題請在小密圈留言提供錯誤樣本,我好進行研究爆破植酥!

五镀岛、工具開發(fā)流程

這樣就可以得到簽名信息了,然后再把簽名信息拷貝到目錄的apksign.txt文件中即可友驮。

說明:工具第一次發(fā)布漂羊,肯定有一些問題,請敬請的使用卸留,提問題走越,如果在操作的工程中遇到任何問題請在小密圈留言提供錯誤樣本,我好進行研究爆破艾猜!

下面在來說一下這個工具的缺點买喧,其實就一點,對于一些加固的應(yīng)用是沒有效果的匆赃,本人嘗試了一些加固app,最終都是失敗的淤毛,不過這不代表就沒有任何用了,因為不是所有的應(yīng)用都會采取加固方式算柳,只要不加固低淡,那么這個工具就有效果,并且不管簽名校驗在哪都可以進行成功爆破瞬项。

Hook PMS代碼下載地址:https://github.com/fourbrother/HookPmsSignature

kstools工具下載地址:https://github.com/fourbrother/kstools

六蔗蹋、總結(jié)

本文主要介紹了一個通過hook需要爆破應(yīng)用的pms服務(wù),攔截獲取簽名信息的方法囱淋,來做到全局爆破簽名校驗功能邏輯猪杭,這個工具可以解決以往需要手動的反編譯app來進行破解,有了這個工具妥衣,完全可以一鍵化操作功能皂吮,無需在進行反編譯破解操作了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戒傻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜂筹,更是在濱河造成了極大的恐慌需纳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艺挪,死亡現(xiàn)場離奇詭異不翩,居然都是意外死亡,警方通過查閱死者的電腦和手機麻裳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門口蝠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人津坑,你說我怎么就攤上這事亚皂。” “怎么了国瓮?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狞谱。 經(jīng)常有香客問我乃摹,道長,這世上最難降的妖魔是什么跟衅? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任孵睬,我火速辦了婚禮,結(jié)果婚禮上伶跷,老公的妹妹穿的比我還像新娘掰读。我一直安慰自己,他們只是感情好叭莫,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布蹈集。 她就那樣靜靜地躺著,像睡著了一般雇初。 火紅的嫁衣襯著肌膚如雪拢肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天靖诗,我揣著相機與錄音郭怪,去河邊找鬼。 笑死刊橘,一個胖子當(dāng)著我的面吹牛鄙才,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播促绵,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼攒庵,長吁一口氣:“原來是場噩夢啊……” “哼嘴纺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叙甸,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤颖医,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裆蒸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熔萧,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年僚祷,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛致。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辙谜,死狀恐怖俺榆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情装哆,我是刑警寧澤罐脊,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站蜕琴,受9級特大地震影響萍桌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凌简,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一上炎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雏搂,春花似錦藕施、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至线椰,卻和暖如春胞谈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憨愉。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工烦绳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人配紫。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓径密,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躺孝。 傳聞我的和親對象是個殘疾皇子享扔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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