詳解Hook框架frida,讓你在逆向工作中效率成倍提升! - 軟體與服務...

2021-01-09 中國軟體網
一、frida簡介

frida是一款基於python + javascript 的hook框架,可運行在androidioslinuxwinosx等各平臺,主要使用動態二進位插樁技術。本期「安仔課堂」,ISEC實驗室的彭老師為大家詳解frida,認真讀完這篇文章會讓你在逆向工作中效率成倍提升哦!

1.插樁技術

插樁技術是指將額外的代碼注入程序中以收集運行時的信息,可分為兩種:

(1)原始碼插樁[Source Code Instrumentation(SCI)]:額外代碼注入到程序原始碼中。

(2)二進位插樁(Binary Instrumentation):額外代碼注入到二進位可執行文件中。

●靜態二進位插樁[Static Binary Instrumentation(SBI)]:在程序執行前插入額外的代碼和數據,生成一個永久改變的可執行文件。

●動態二進位插樁[Dynamic Binary Instrumentation(DBI)]:在程序運行時實時地插入額外代碼和數據,對可執行文件沒有任何永久改變。

2.你能用DBI做些什麼呢

(1)訪問進程的內存

(2)在應用程式運行時覆蓋一些功能

(3)從導入的類中調用函數

(4)在堆上查找對象實例並使用這些對象實例

(5)Hook,跟蹤和攔截函數等等

二、frida的安裝

今天我們用到的frida框架分為兩部分: 一部分是運行在系統上的交互工具frida CLI; 另一部分是運行在目標機器上的代碼注入工具 frida-server。

1.frida CLI

環境要求:

●系統環境 - Windows, macOS, or GNU/Linux

●Python – 最新的3.x版本

通過 pip 安裝frida

圖1

說明:

(1) 通過pip安裝的frida是可以跟python綁定的; 另外frida現在也已經有了跟nodeJs綁定的版本, 因此也可以直接通過 npm 進行安裝。

(2) frida CLI是安裝的frida的其中一個工具,也是最常用的一個工具。

2.frida server

frida-server需要我們單獨下載,在 frida項目的github上可以直接下載對應系統已經編譯好的frida server

圖2

我們需要下載的文件名的格式是: frida-server-(version)-(platform)-(cpu).xz

我試驗的手機是nexus6p, cpu為arm64

所以我需要下載的是: frida-server-11.0.13-android-x86_64.xz;注意, frida-server 的版本一定要跟 frida CLI的版本一致。

將下載後的壓縮包解壓得到frida-server, 然後將該文件推送到Android設備上。

圖3

將Android設備上的frida-server添加執行權, 並運行該程序(需要root權限)

圖4

3.frida tools

前面說過, frida CLI只是frida的其中一個工具, frida 的工具共有6個:

(1) frida CLI: 是一個交互式解釋器(REPL),他的交互形式跟IPython很類似。

圖5

(2) frida-ps: 用於列出進程的一個命令行工具,當我們需要跟遠程系統進行交互的時候,這個是非常有用的。

圖6

另外還有四個分別是: frida-trace, frida-discover, frida-ls-devices, frida-kill

由於不是經常用到,這邊就不一一詳細介紹了, 感興趣的同學可以去frida的官網查看他們的詳細介紹和用法。

4.Java Api

在Hook開始之前,有必要對Java注入相關的api做一個簡單介紹, frida的注入腳本是JavaScript, 因此我們後面都是通過js腳本來操作設備上的Java代碼的。

圖7

當我們獲取到Java類之後,我們直通過接..implementations = function() {}的方式來hook wrapper類的method方法,不管是實例方法還是靜態方法都可以。

由於js代碼注入時可能會出現超時的錯誤, 為了防止這個問題,我們通常還需要在最外面包裝一層setImmediate(function(){})的代碼。

下面就是js的一個模板代碼:

圖8

三、 frida Hook實戰

接下來我將通過製作一個類似微信搶紅包的插件來演示frida的具體使用,由於本文的主旨是教大家如何使用強大的frida框架, 所以側重描述的是frida的使用, 而不會說明如何逆向微信。

1.信息持久化到本地的攔截

微信的每一條信息都會保存到本地資料庫,這個保存的方法就是 com.tencent.wcdb.database.SQLiteDatabase 類的 insert()方法:

圖9

我們先看看每條信息保存的內容是什麼:

圖10

我們將手機連接到電腦, 然後通過frida將腳本注入到微信中:

圖11

用微信發送任意消息,我們可以看到控制臺列印內容如下:

圖12

arg1就是要插入數據的表名, arg2是表的主鍵, arg3是要插入表的數據的欄位名稱跟值的集合。這樣, 我們就可以輕鬆拿到每條消息的內容和發送者等相關信息。

這裡我們需要注意的是arg3裡面以下幾個值:

圖13

當我們接收到一條紅包消息的時候,我們可以看到紅包信息的具體內容如下:

圖14

圖15

那我們要怎樣通過這些信息來搶到紅包呢?

2.搶紅包流程分析

我們先來看一下,當我們點擊打開紅包之時發生了什麼呢? 下面是反編譯得到的打開紅包按鈕的點擊事件:

圖16

這行代碼其實就是發送搶紅包的請求, ad 就是一個網絡請求類, 那麼需要構成這個請求又需要哪些參數呢?

我們單獨看看 ad 類的創建:

圖17

其中第1,2,3,4,9個參數都是來自luckyMoneyReceiveUI.kRG, 第8個參數是固定的 "v1.0"

接下來我們來列印一下第5,6,7個參數是什麼:

圖18

重新加載這段js代碼, 然後我們打開一個紅包, 我們可以看到控制臺列印如下信息:

圖19

第5,6個參數其實是自己的頭像跟暱稱信息,第7個是發送者的信息,而第4個參數跟上面紅包內容裡面的nativeurl的值是一樣的。

那luckyMoneyReceiveUI.kRG 中的msgType,bxk,kLZ,ceR,kRC這些要怎麼得到呢?

luckyMoneyReceiveUI.kRG 這個欄位的類型是: com.tencent.mm.plugin.luckymoney.b.ag,ag類跟之前提到的ad類一樣, 都是一個請求類, 他們都是繼承同一個類。其中, msgType是固定的 1,bxk,kLZ,ceR 是在ag的構造方法裡面就被初始化的:

圖20

而kRC則是在裡面的a方法裡面被賦值的:

圖21

……

圖22

這個a方法是請求類發起請求之後的一個回調,而在 LuckyMoneyReceiveUI的 OnCreate 方法裡面我們可以看到 com.tencent.mm.plugin.luckymoney.b.ag 是怎麼被構造出來的:

圖23

第一個參數是nativeurl中的channelid;

第二個參數是nativeurl中的sendid;

第三個參數是nativeurl本身;

第四個參數可以用0;

第五個參數是也是固定的 "v1.0"

經過上面的分析之後, 我們的思路就清晰了, 在收到紅包信息後我們解析出紅包信息裡面nativeurl, channelid, sendid, 根據這些參數發送一個com.tencent.mm.plugin.luckymoney.b.ag的請求, 之後得到timingIdentifier, 最後根據得到的timingIdentifier 再發送一個com.tencent.mm.plugin.luckymoney.b.ad的請求就可以搶到紅包了。

3.模擬請求

到這裡我們也就剩最後一個問題了, 那就是怎麼把請求發送出去?這個我們同樣可以看看微信, 我們跟蹤到紅包界面的請求都是通過下面的方法發送的:

圖24

上面的g.Eh().dpP得到的是一個專門發送請求的Network, 得到這個Network之後我們就可以調用他的a方法把這個請求發送出去。需要注意的是frida不支持直接通過.dpP的方式拿到屬性, 不過沒關係, 我們可以通過反射的方式來獲取:

圖25

得到Network之後我們就開始發送請求了:

第一步是收到紅包信息之後要解析出ContentValues裡面的信息,並根據解析出的內容發送ag請求。

圖26

我們單獨把紅包信息的content的解析拿出來:

圖27

nativeurl的具體內容如下:

圖28

通過上面的解析之後我們就可以得到如下的info:

圖29

第二步是Hook ag請求的a方法, 在裡面我們可以拿到timingIdentifier的值:

圖30

注意:當一個類裡面有重載的方法的時候, 我們需要用.overload(paramtype...)來表示我們hook的是哪個重載方法。

最後我們還需要改造一下之前Hook的SQL的insert方法, 我們需要過濾出表名為message,類型為436207665的消息:

圖31

接下來就可以開始體驗我們的搶紅包插件了!

圖32

最後請看效果:

圖33

四、附錄

本次試驗環境如下:

微信版本: 6.6.7

frida版本: 11.0.13

frida-server: frida-server-11.0.13-android-x86_64

Android: 7.0

安勝作為國內領先的網絡安全類產品及服務提供商,秉承「創新為安,服務致勝」的經營理念,專注於網絡安全類產品的生產與服務;以「研發+服務+銷售」的經營模式,「裝備+平臺+服務」的產品體系,在技術研究、研發創新、產品化等方面已形成一套完整的流程化體系,為廣大用戶提供量體裁衣的綜合解決方案!

ISEC實驗室作為公司新技術和新產品的預研基地,秉承「我的安全,我做主」的理念,專注於網絡安全領域前沿技術研究,提供網絡安全培訓、應急響應、安全檢測等服務。

2018年

承擔全國兩會網絡安保工作;

承擔青島上合峰會網絡安保工作。

2017年

承擔全國兩會網絡安保工作;

承擔金磚「廈門會晤」網絡安保工作;

承擔北京「一帶一路」國際合作高峰論壇網絡安保工作;

承擔中國共產黨第十九次全國代表大會網絡安保工作;

承擔第四屆世界網際網路大會網絡安保工作。

2016年

承擔全國兩會網絡安保工作;

為貴陽大數據與網絡安全攻防演練提供技術支持;

承擔G20峰會網絡安保工作;

承擔第三屆世界網際網路大會網絡安保工作。

2015年

承擔第二屆世界網際網路大會網絡安保工作。

不忘初心、砥礪前行;未來,我們將繼續堅守、不懈追求,為國家網絡安全事業保駕護航!




免責聲明:

本站系本網編輯轉載,會儘可能註明出處,但不排除無法註明來源的情況,轉載目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與本網聯繫, 來信: liujun@soft6.com 我們將在收到郵件後第一時間刪除內容!

[聲明]本站文章版權歸原作者所有,內容為作者個人觀點,不代表本網站的觀點和對其真實性負責,本站擁有對此聲明的最終解釋權。

相關焦點

  • 一個深網灰色直播APP的逆向研究
    框架如xposed或者frida,這裡選擇後者,因為可能會需要做native的分析(有沒有發現這個Activity的onCreate函數是native的?).在8秒的試看後還給你3秒選擇是否購買哦:) 作為驗證,我們直接對finish函數下手,發現禁用dialog的同時禁用finish函數,就可以繞過金幣購買的限制了,想看多久看多久。雖然現在可以無限制看片,但正事還是要做的。下一步看看是哪家對象存儲提供了服務,說不定還能找到硬編碼的key。在代碼中瞎逛,又(?)
  • [系統安全] 二.如何學好逆向分析及呂布傳遊戲逆向案例
    (參考文獻見後)一.如何學好軟體逆向技能1.軟體逆向前沿首先,怎麼學好軟體逆向技能呢?錢老師說「軟體逆向屬於搬磚活」。哈哈!的確,任何技術、任何學科方向,都是在你剛開始參與實際工作時,會覺得很好玩,當你做多了之後,就會覺得它是搬磚活。
  • 告別黑眼圈,這幾款效率提升軟體讓你分分鐘變身時間管理大師!
    那麼,如何才能提升工作效率,不讓老闆榨乾最後一滴精力,早點下班陪伴老婆孩子呢?今天就總結了幾款我認為十分好用、能有效提升工作效率的軟體,希望能真正幫到你消除黑眼圈,變身時間管理大師。Everything是一個迷你的全盤搜索工具,可以在閃電般的瞬間從海量的硬碟中找到你需要的文件,速度快到讓你難以置信。除了搜索標題之外,它還可以按文件內容進行搜索,甚至搜索一些非NTFS格式的文件也不在話下!
  • 教育軟體多少錢創新服務_胖胖龍品牌管理
    教育軟體多少錢創新服務,胖胖龍品牌管理,我們致力於「公域+私域」流量矩陣整合,助力於完善企業和電商營銷閉環,為企業和電商提供完善的網絡營銷解決方案。教育軟體多少錢創新服務, pc6下載站:安全、高速、放心的專業下載站!
  • Windows剪貼板管理軟體Ditto:改變剪貼習慣,極大提升效率
    歡迎來到IT之家軟體頻道,今天麥子為大家推薦一款Windows系統下的剪貼板管理軟體——Ditto,可以讓你在有需要時只管複製剪切,之後可以隨意粘貼,之前我們曾提到過,Ditto配合Snipaste等截圖標註軟體,可極大地提高工作效率。
  • 「極速貸」提升服務效率
    中工網訊 為了有效提升服務效率,降低運營和風險成本,郵儲銀行本著能後臺不前臺、能自動不人工、能線上不線下、能移動不駐點的原則,將傳統線下網絡和多年實踐經驗與網際網路、移動通訊、大數據、人工智慧等先進技術相融合,推進銀行三農金融服務模式邁入線上線下有機融合的「3.0時代」。
  • 這就是你要的好用的辦公軟體,電腦軟體在精不在多
    作為辦公一族,如果擁有幾款高效軟體,會對辦公效率成倍的提升,大幅度節省個人時間。小迷蟲在數年時間裡使用過大量的各類軟體,推薦幾款適合辦公族使用的良心高效軟體。一、效率神器:Quicker一個Quicker足以替代你手機裡十幾款甚至幾十款軟體,它就是一個自由的功能集成器,數百款功能,你隨意挑選自己需要的,還可以隨時卸載掉不需要的,安裝需要的。
  • 肥西康復中心積極配合殘聯走訪督查工作 更好提升康復服務效率
    肥西經開區殘聯此次走訪督查工作,通過實地查看、翻閱資料、聽取介紹以及與在訓兒童家長交流等方式,了解各家機構在康復資料的整理、訓練場所的設置、人員配備的比例、安全防護的設施以及疫情防控措施的落實等方面的具體情況!據悉,此次區殘聯走訪督查工作中肥西縣康華兒童康復中心達到各項指標要求!
  • 《高效利用工作日》:快速提升工作效率的利器
    魯網12月21日訊 低效是否是你在工作中經常遇到的困擾?明明很努力,工作卻總是做不完;明明很勤奮,卻總是停滯不前。近日,《高效利用工作日》由北京聯合出版公司出版,該書是專為工作效率低,時間不夠用,精力渙散,同事關係差,心態崩塌,參與度低,思維受限,沒有成就感等職場人士準備的高效工作手冊,助力他們快速提升工作效率,實現職場、個人進階雙突破!
  • 這些軟體能極大提高工作效率!
    其實答案很簡單,為了明年春節你們更有錢啊~作者:塗俊傑(微信:ffeels),SOM/熱愛分享,保持好奇原創投稿,未經允許,禁止轉載投稿請聯繫:tougao@27sem.com為什麼有的人每天只工作8小時,很少加班,工作上還能得到老闆的認可,「工作效率」就是秘訣之一。
  • 實測搜狗開源搜尋引擎服務框架Workflow:QPS提升12倍 具備四大特色
    當「新鮮」的Workflow被盛到面前,你很難背叛自己的胃和審美。如果你從事C++編程,想必會驚呼:「這是我的菜!」。  相見恨晚,也恰逢其時,搜狗正好開源了搜尋引擎的服務框架――Sogou C++ Workflow,該框架是搜狗公司的後端C++編程標準,是一套企業級的程序引擎,剛現世便備受好評,展現驚人的風採。
  • 澳大利亞9pm建築設計公司:使用中望CAD提升住宅設計效率與質量
    憑藉多年的行業經驗與優質的服務,9pm建築設計公司贏得維多利亞建築管理局以及眾多房地產開發商的廣泛認可。自2014年以來,9pm建築設計公司一直應用中望CAD開展項目設計相關工作,大幅度提升了設計效率與質量,從而增強了市場競爭優勢。以較低應用成本滿足使用需求,助力中小企業快速發展「我成立自己的設計公司,是為了給客戶提供更快捷更優質的服務。」
  • 信也科技推出Radar微服務框架 助力行業提升微服務治理能力
    1月6日,信也科技正式對外推出Radar微服務框架,此微服務組件如其名稱一樣,像雷達般迅速,可有效提高架構靈活性與服務可治理性。 近年來,微服務框架在各業務場景中已大量落地。信也科技在對內部系統進行微服務改造的過程中,摸索出了一條獨具特色的道路。
  • Frida之Pin碼破解實驗
    0×03 實驗內容1、編寫腳本,藉助frida對pinview進行pin碼爆破2、編寫腳本,利用反向思路對lollipin進行爆破0×04 實驗步驟1、下載fridafrida_server(https://github.com/frida/frida/releases)
  • 解密大明國際提升數字戰鬥力的「五招」「兩式」 - 軟體與服務...
    在與金蝶合作的過程中,我們的項目一直在改進,我們的規模也在擴張。通過與金蝶雲·星空研發人員溝通,了解到大明的數據量在金蝶雲·星空中排行前三。相對國外廠商幾十年的研發歷程,金蝶作為一款國產ERP軟體,能夠從無到有構建這樣一套系統,本身就是值得自豪的成就。近兩年,我們主要致力於深化業務應用的工作內容,這包括CRM和面向客戶的服務平臺實施。
  • 用好這幾個免費軟體,讓你工作效率翻10倍!
    1、GitMind GitMind是一款免費在線思維導圖軟體,非常適合工作黨來做讀書筆記、項目管理等。除了思維導圖功能,還有免費的流程圖可以使用,製作UML圖、泳道圖、組織結構圖也非常方便。2、傲軟摳圖 一鍵摳圖,人像模式能一鍵去背景,包括髮絲都可以摳的很乾淨。
  • 辦公效率低的原因 可用便籤APP提升辦公效率
    辦公的過程中,很多人都有自己的一套工作方法,不同的工作方法所帶來的工作效率是不一樣的。對於辦公效率比較低的人來說,肯定是存在原因的。辦公效率低的原因有哪些呢? 小劉在公司工作了已經滿一年的時間了,剛進入工作崗位的時候,他的工作效率就是比較低的,但是過了一陣子,就有了非常明顯的提升。