安卓逆向——Frida hook java層

2020-09-18 信息安全教學


各位愛好安卓逆向的大佬們早上好,今天呢小弟不才在這裡拙劣的給大家講解一下咱們frida hook java層,望不嫌棄!

目錄

分析目標app程序

編寫hook代碼

運行命令開始hook

分析目標app程序

首先呢我們來了解一下分析目標app程序一個目的。為什麼要去分析目標app代碼邏輯呢?原因是我們要找到hook的具體類以及方法名,參數等這些基本信息,這樣才能達到我們的hook目的。

編寫hook代碼

編寫hook代碼的時候,我們此處列舉了:

A、普通方法

B、構造方法

C、重載方法

D、構造對象參數

E、修改對象屬性


我們把這個五個方法作為本次的案例。

註:填寫包名、類名、方法名、參數列表、參數類型等


我們上面這些步驟都完成以後呢,我們就可以輸入我們的hook命令,然後啟動程序觸發,hook成功顯示,我們來分析目標程序,這裡我打開jadx-gui工具,在我們的onClick點擊事件裡面,發現了5個分支,這五個分支就是走5個不同邏輯,但是這5個分支都在調用的時候,用了一個utils,這樣一個類,在調用的時候也傳入了相關的一些參數。

那麼我們先分析一下utils該類,該類有五個方法定義。


分別有int型參數,也有string類型參數,那麼該類參數被調用的時候傳入相應的一些參數,那麼最終我們要hook的就是utils這個類,以及當前程序的一個包含和utils這個類,以及方法名這些參數我們都是要牢牢記住的,還有我們的參數列表以及我們的一個參數類型。

我們分析完了之後,接著我們要進行一個代碼的編寫,我們列舉了五種代碼的編寫。

普通方法:

我們在該代碼裡面一定要填寫我們的包名以及具體的一些類名。填入類名結束之後,我們要傳入a和b兩個參數。參數也是根據相對應的參數進行在這裡填寫的,填寫完下面進行列印,兩個參數列印完畢以後返回值為5和8兩個int型,源程序是2000和5000。

構造方法:

重載方法

構造對象參數

修改對象屬性

五個方法編寫完畢之後在該程序的最下面一定要去填寫我們的目標app的一個包名。


編寫完成之後我們需要進行一個結果的驗證

啟動我們的模擬器


啟動完畢之後我們需要轉發埠,默認埠號為27042.

我們先輸入我們的hook方法命令

我們代碼的一個腳本拖到我們的cmd窗口裡面,然後回車。


回車完畢之後我們需要進行觸發。

源程序顯示的是7000,因為我們第一個參數是2000,第二個是5000,那麼被我們修改5和8之後看看能否成功。

我們會發現程序已經hook到我們的關鍵信息,看向參數說明我們已經hook成功。

Hook構造方法

Hook重載方法

Hook構造對象參數

Hook修改對象屬性

小結

我們分析了目標app,找到具體的參數和包名以及類名,同時也編寫了五種方法的具體hook,運行了cmd命令,Python java.py進行hook,啟動觸發程序,hook也成功顯示結果,我們都做到了。

本次分享如果有不懂的地方可以私聊我和我聯繫,還有免費逆向大禮包等你來領取。

相關焦點

  • 安卓安全從零到一: FRIDA hook Native基礎
    、Native層API 都是可以被 hook 的,如果自定義函數調用 Syscall 就會增加難度,對於syscall也是可以hook的但是需要自己編譯內核列印內核的系統調用(來自高維的對抗 - 逆向TinyTool自製),Unicorn列印反調試(Unicorn 在 Android 的應用),Nethunter可以直接列印syscall風控的關鍵在於檢測的項目夠多
  • Python 逆向抓取 APP 數據
    接下來由「小帥b的朋友:Houser」 給大家演示一下,如何逆向抓取 APP 數據,給你參考一下思路:所需設備和環境:設備:安卓手機抓包:fiddler+xposed+JustTrustme查殼:ApkScan-PKID脫殼:frida-DEXDump
  • 詳解Hook框架frida,讓你在逆向工作中效率成倍提升!
    一、frida簡介frida是一款基於python + javascript 的hook框架,可運行在androidioslinuxwinosx等各平臺,主要使用動態二進位插樁技術。本期「安仔課堂」,ISEC實驗室的彭老師為大家詳解frida,認真讀完這篇文章會讓你在逆向工作中效率成倍提升哦!
  • frida學習筆記3 之hook so中的方法
    hook so 常用工具SubstrateCydia-需rootfrida--需rootVA系列-非root(VA、VXP、SandVXposed)frida方式hook材料準備heibaobao.apk
  • 小生淺談Java層逆向,「Android逆向技術」
    ,今天小生就給大家介紹介紹在眾多語言中相對簡單一點的java,我們稱之為java層逆向。Java層逆向的含義由於APP是程式設計師通過java代碼編寫而來的,所以我們正常去逆向分析,目的就是還原程式設計師當時開發的代碼,這樣我們就能清楚的了解APP運行時候的代碼邏輯是怎麼樣的。
  • Frida進階-API
    同時簡單介紹下HOOK 系統函數的利器frida-trace。內存,內存還是內存。無論想對so層亦或java層進行攔截,通常都須編Java.perform。Java.vmJava.vm對象十分常用,比如想要拿到JNI層的JNIEnv對象,可以使用getEnv()。
  • 自學Android逆向的學習難點
    要學逆向開發,還是要循序漸進,先從正向開發學起,學會了安卓正向開發的原理和機制,再去學安卓逆向就簡單很多了。第三步:動手寫。可以結合android系統的具體行為和源碼,穿插著寫一些普通的app和簡單的xposed插件,先把android系統了解得差不多了,再去嘗試一些簡單的APP的逆向練手。
  • Frida腳本教程
    You may also Java.cast() the handle to java.lang.Class.onComplete: function (): called when all classes have been enumerated.
  • 安卓逆向學習之詳解Hook含義及作用
    hook英文單詞意為「鉤子」,很形象的,它的作用就是去調用或者篡改APP代碼。舉一個簡單的例子。消消樂風靡的時候大受歡迎,相信男女老幼都對這款遊戲不陌生。開心消消樂這個小遊戲,相信各位小夥伴都玩過。而在進行遊戲時,闖關是很有成就感。遊戲大神們自然是輕輕鬆鬆「unbelievable」、「amazing」!
  • Frida全平臺使用
    在不同平臺下編寫hook代碼是一件很痛苦的事情,Windows下,必須要熟悉窗口、消息傳遞機制的,而在Linux下hook底層的消息還需要重新編寫內核模塊,在Android平臺要而Frida的出現,讓一切變得簡單了,只需要會Python,會JavaScript就能夠hook任何想hook的內容。Frida is so great!
  • 花裡胡哨之突破安卓某APP低層加密
    今天給大家分享一下如何逆向分析Native層的加密,整個過程的思路值得大家借鑑,接下來小編給大家上才藝所需要的設備和環境設備:安卓手機(獲取root權限)它把函數過程寫到native 層中去了至此,逆向就完成了
  • 當Frida來「敲」門
    0x2 fridafrida是平臺原生app的Greasemonkey,說的專業一點,就是一種動態插樁工具,可以插入一些代碼到原生app的內存空間去,(動態地監視和修改其行為),這些原生平臺可以是Win、Mac、Linux、Android
  • 安卓逆向工程師面試指南【乾貨】
    Interview Guide 安卓逆向工程師崗位在近年來算是網際網路IT行業的香餑餑之一,月薪動輒上萬年薪動輒20萬,讓很多行業內兢兢業業拿一個五六千的外行人士很是羨慕。但是安卓逆向工程是專業技術要求很高的職業,外行人輕易搶不走你的飯碗,因此也有大量的人花很多金錢投資自己,學會了安卓逆向,想要入行分一杯羹。
  • Android逆向之手機環境配置
    該篇文章主要介紹在Android逆向開始之前的手機環境配置。
  • Frida進階內存漫遊
    objection基本整合了常用的各種hook功能,在逆向apk、Hook代碼、查看內存信息的時候為我們提供極大的方便。使用objection掌握常用的命令,大部分情況下是不需要寫任何代碼的。android hooking watchclasscom.fish.main.MainGameActivity 當需要調用相應的方法的方法的時候,可以看出相應的hook信息被列印出來。
  • 【iOS 原創】iOS逆向-Unity3D遊戲輔助開發
    itms-apps://itunes.apple.com/app/id1453651052Hack Features:英雄攻擊:秒殺(6666)英雄攻速:一秒5刀英雄彈道速度:總之很快敵人傷害 :1敵人彈道速度:慢得一批工具:monkeyDevIl2CppDumperIDA Pro 7.0frida-ios-dump
  • 一文入門Android逆向
    然而,它們可以啟動一個activity或serice來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它並獲取消息。廣播接收者的註冊有兩種方法,分別是程序動態註冊和AndroidManifest文件中進行靜態註冊。
  • ​【移動安全】一文入門Android逆向
    本文節主要介紹一下Android逆向常用的環境、工具、動靜態分析思路,筆者通過學習肉絲大佬分享的一些內容,加上自己一些經驗總結而來。2.2、Android系統架構Android採用分層的架構,分為四層,從高層到底層分為應用程式層(app+System apps),應用程式框架層(Java API Framework),系統運行庫和運行環境層(Libraries + android Runtime