官术网_书友最值得收藏!

1.1 Frida框架介紹

Frida框架是一款基于Python和JavaScript語言進(jìn)行Hook[1]和代碼調(diào)試的框架,簡單易學(xué)的編程語言配合強(qiáng)大的Hook功能,極大降低了逆向分析的門檻。不習(xí)慣Python語言也沒關(guān)系,F(xiàn)rida的CLI工具也可以直接注入JavaScript代碼,而且Frida框架存在多種語言綁定,如Node.js、Swift、.NET、Qml等。本書主要采取Python語言進(jìn)行腳本編寫。

Frida框架可以說是為逆向開發(fā)和安全研究人員量身定做的動態(tài)插樁工具,開發(fā)人員可以將自己編寫的代碼注入App應(yīng)用程序的內(nèi)存空間之中,監(jiān)控和修改其中的代碼邏輯。Frida可以Hook任意關(guān)鍵函數(shù),追蹤加密的API接口,甚至在進(jìn)程中調(diào)用本地函數(shù),所有的操作都不需要進(jìn)行煩瑣的編譯工作或重新啟動程序。此外,F(xiàn)rida框架還支持全平臺運(yùn)行,包括Windows、macOS、Linux、iOS和Android等,因此Frida框架成為逆向界的寵兒。

Frida框架包括客戶端和服務(wù)端兩個(gè)部分,如圖1-1所示,其中客戶端一般安裝在個(gè)人計(jì)算機(jī)上,而服務(wù)端安裝于移動端。客戶端提交JavaScript代碼之后,服務(wù)端會運(yùn)行提交的JavaScript代碼,兩者之間存在一個(gè)用于交互的雙向通信通道。其中客戶端通常使用Python腳本編寫,用于喚醒移動設(shè)備上的服務(wù)端,而Python腳本中編寫的Hook代碼則使用JavaScript語言,會經(jīng)由客戶端提交后,在服務(wù)端執(zhí)行。

·圖1-1 Frida通信方式

熟知Android安全防護(hù)和逆向開發(fā)的人員對Xposed框架肯定不會陌生。Xposed框架是一款A(yù)ndroid Hook框架,可以在不修改apk的情況下對應(yīng)用進(jìn)行自定義,其相比于Frida框架的優(yōu)勢是具有非常多功能強(qiáng)大的模塊,能夠脫離個(gè)人計(jì)算機(jī)直接在Android端運(yùn)行,還可以讓其他用戶下載安裝使用。

所謂“聞道有先后,術(shù)業(yè)有專攻”,F(xiàn)rida框架更像是為專業(yè)的安全開發(fā)人員準(zhǔn)備的調(diào)試工具。雖然不像Xposed框架一樣編譯模塊給用戶使用,但是卻可以方便地對Android應(yīng)用進(jìn)行調(diào)試分析,分析協(xié)議之后可以使用其他編程語言進(jìn)行協(xié)議復(fù)現(xiàn)。此外,Xposed框架只能對Java層代碼進(jìn)行Hook,而Frida框架處理Java層代碼和so層代碼都游刃有余。

如今,隨著開發(fā)人員對應(yīng)用安全的重視,越來越多的Android應(yīng)用開始在so層進(jìn)行參數(shù)加密,協(xié)議分析也不得不深入到so層之中,F(xiàn)rida框架的優(yōu)勢也就體現(xiàn)出來了。

主站蜘蛛池模板: 西昌市| 巴彦淖尔市| 卢氏县| 扶沟县| 江源县| 平昌县| 商城县| 保德县| 阳西县| 温泉县| 罗田县| 齐齐哈尔市| 朝阳市| 巫溪县| 榆社县| 山东省| 诸城市| 盈江县| 永胜县| 久治县| 鄂托克前旗| 潢川县| 杂多县| 彭阳县| 洱源县| 宝兴县| 西华县| 乌兰县| 安顺市| 潜江市| 兴安县| 青神县| 华池县| 平昌县| 通城县| 松原市| 峨眉山市| 格尔木市| 德化县| 留坝县| 会同县|