- 安卓Frida逆向與協議分析
- 陳佳林
- 815字
- 2023-09-15 17:59:19
1.4.1 Frida介紹
官網對Frida的介紹是:Frida是平臺原生App的Greasemonkey,說得專業一點,就是一種動態插樁工具,可以插入一些代碼到原生App的內存空間去動態地監視和修改其行為,這些原生平臺可以是Windows、Mac、Linux、Android或者iOS,同時Frida還是開源的。
Greasemonkey可能看起來比較陌生,其實它是Firefox的一套插件體系,通過利用Greasemonkey插入自定義的JavaScript腳本可以定制網頁的顯示或行為方式。換言之,可以直接改變Firefox對網頁的編排方式,從而實現想要的任何功能。同時,這套插件還是“外掛”的,非常靈活機動。同樣,Frida也可以通過將JavaScript腳本插入App的內存中,對程序的邏輯進行跟蹤監控,甚至重新修改程序的邏輯,實現逆向人員想要實現的功能,這樣的方式也可以稱為Hook。
Frida目前非常火爆,該框架從Java層的Hook到Native層的Hook無所不能,雖然持久化還是要依靠Xposed和Hookzz等開發框架,但是Frida的動態和靈活對逆向及自動化逆向幫助非常大。
Frida為什么這么火爆呢?
動靜態修改內存實現作弊一直是剛需,比如金山游俠,本質上Frida做的是跟它一樣的事情。原則上是可以用Frida把金山游俠,包括CheatEngine等“外掛”做出來的。當然,現在已經不是直接修改內存就可以高枕無憂的年代了。建議讀者也不要這樣做,要知道做外掛的行為是違法的,學安全先學法。
在逆向的工作上也是一樣的道理,使用Frida可以“看到”平時看不到的東西。出于編譯型語言的特性,機器碼在CPU和內存執行的過程中,其內部數據的交互和跳轉對用戶來說是看不見的。當然,如果手上有源碼,甚至哪怕有帶調試符號的可執行文件包,就可以使用GDB、LLDB等調試器連上去調試查看。
那如果沒有,是純黑盒呢?如果仍舊要對App進行逆向和動態調試,甚至自動化分析以及規模化收集信息,此時我們需要的是擁有細粒度的流程控制和代碼級的可定制體系以及不斷對調試進行動態糾正和可編程調試的框架,Frida做這種工作可以說是游刃有余。
另外,Frida使用的是Python、JavaScript等“膠水語言”,這也是它火爆的一個原因:可以迅速地將逆向過程自動化,并整合到現有的架構和體系中去,為發布“威脅情報”“數據平臺”甚至“AI風控”等產品打好基礎。