在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

動態(tài)分析so文件中的JNI函數(shù)

哆啦安全 ? 來源:編碼安全 ? 2023-04-10 11:18 ? 次閱讀

APP逆向過程中,需要對dex文件和elf文件進(jìn)行分析,又因現(xiàn)在各APP都有各種代碼保護(hù)手法,因此都需要進(jìn)行動態(tài)分析。

今天就分享下對elf文件也就是so文件中動態(tài)分析so文件中JNI函數(shù)的方案。

jnitrace它是基于frida基礎(chǔ)上的一個工具,它是一個動態(tài)分析追蹤SO文件中的JNI API調(diào)用的工具,它可以進(jìn)行指定SO文件進(jìn)行跟蹤JNI調(diào)用。

基礎(chǔ)知識

1、JavaVM 和 JNIEnv

JNI 它定義了兩個關(guān)鍵數(shù)據(jù)結(jié)構(gòu):JavaVM和JNIEnv。它們本質(zhì)上都是指向函數(shù)表的二級指針。(在 C++ 版本中,它們是一些類,這些類具有指向函數(shù)表的指針,并具有每個通過該函數(shù)表間接調(diào)用的 JNI 函數(shù)的成員函數(shù)。)JavaVM 提供“調(diào)用接口”函數(shù),可以利用此類來函數(shù)創(chuàng)建和銷毀 JavaVM。

JNIEnv 提供了大部分 JNI 函數(shù), so中的原生函數(shù)都會收到 JNIEnv 作為第一個參數(shù)。該 JNIEnv 將用于線程本地存儲。因此無法在線程之間共享 JNIEnv。如果一段代碼無法通過其他方法獲取自己的 JNIEnv,應(yīng)該共享相應(yīng) JavaVM,然后使用 GetEnv 發(fā)現(xiàn)線程的 JNIEnv。

a28c0bfe-d6bf-11ed-bfe3-dac502259ad0.png

JNIEnv 和 JavaVM 的 C 聲明與 C++ 聲明不同。"jni.h" include 文件會提供不同的類型定義符,具體取決于該文件是包含在 C 還是 C++ 中。因此不建議在這兩種語言包含的頭文件中添加 NIEnv 參數(shù)。

2、spawn和attach注入?yún)^(qū)別

Frida支持spawn和attach兩種啟動方式。

attach模式下,F(xiàn)rida會附加到當(dāng)前的目標(biāo)進(jìn)程中,即需要App處于啟動狀態(tài),這也意味著它只能從當(dāng)前時(shí)機(jī)往后Hook;

spawn模式下,F(xiàn)rida會自行啟動并注入進(jìn)目標(biāo)App,Hook的時(shí)機(jī)非常早,好處在于不會錯過App中相對較早(比如App啟動時(shí)產(chǎn)生的參數(shù)),缺點(diǎn)是假如想要Hook的時(shí)機(jī)點(diǎn)偏后,則會帶來大量干擾信息,嚴(yán)重甚至?xí)?dǎo)致server崩潰。

attach注入:APP啟動后再 hook,不能 hook APP的啟動階段。

spawn注入 :重啟 APP,適合 hook APP啟動階段。

基本操作

jnitrace使用需要配合python環(huán)境和frida工具(版本需要配套好)

a2a35d0e-d6bf-11ed-bfe3-dac502259ad0.png

這個jnitrace安裝后主要核心的實(shí)現(xiàn)功能都在jnitrace.py和jnitrace.js

a2c041ee-d6bf-11ed-bfe3-dac502259ad0.png

a2e5642e-d6bf-11ed-bfe3-dac502259ad0.png

下圖是jnitrace.py中主要功能:首先判斷連接設(shè)備的方式 是以remote_device還是usb_device,接著默認(rèn)采用spawn的注入方式,在去執(zhí)行jnitrace.js文件中的hook功能,最后在輸出執(zhí)行后的數(shù)據(jù)。

a2f24004-d6bf-11ed-bfe3-dac502259ad0.png

下圖是jnitrace.js的關(guān)鍵功能點(diǎn),注入后實(shí)際功能還是調(diào)用到底層的dlopen。

a30e7bde-d6bf-11ed-bfe3-dac502259ad0.png

實(shí)踐分析

Frida啟動后會往要hook的進(jìn)程中注入frida的so文件

a31d83cc-d6bf-11ed-bfe3-dac502259ad0.png

下圖是所有功能組成的解析

a3401018-d6bf-11ed-bfe3-dac502259ad0.png

通過jnitrace -l libxxx.so com.xxx.xxx 可以打印輸出so中的jni函數(shù),以及這些jni函數(shù)的調(diào)用獲取數(shù)據(jù)

a356c6f0-d6bf-11ed-bfe3-dac502259ad0.png

a372e272-d6bf-11ed-bfe3-dac502259ad0.png

a396db5a-d6bf-11ed-bfe3-dac502259ad0.png

通過 jnitrace -l libxxx.so com.xxx.xxx -i RegisterNatives 可以查看到so中的所有動態(tài)注冊的函數(shù)。

a3af5612-d6bf-11ed-bfe3-dac502259ad0.png






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2987

    瀏覽量

    107364
  • C++語言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    7250
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86395

原文標(biāo)題:App逆向之so分析方法

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    在單片機(jī)上實(shí)現(xiàn)動態(tài)加載功能

    本項(xiàng)目是一個在單片機(jī)(如:STM32)上實(shí)現(xiàn)動態(tài)加載功能的函數(shù)庫,與Windows的dll,Linuxso類似,可以將代碼
    發(fā)表于 05-30 11:04 ?2187次閱讀

    android的surface

    使用libhgl.so庫。在libs/EGL/egl.cpp文件,選擇使用這兩個庫的一個,主要操作在eglGetDisplay()函數(shù)
    發(fā)表于 03-04 15:54

    Linux系統(tǒng)動態(tài)庫與靜態(tài)庫函數(shù)的使用介紹

    。相對于靜態(tài)函數(shù)庫,動態(tài)函數(shù)庫在編譯的時(shí)候并沒有被編譯進(jìn)目標(biāo)代碼,你的程序執(zhí)行到相關(guān)函數(shù)時(shí)才調(diào)用該函數(shù)庫里的相應(yīng)
    發(fā)表于 04-02 16:21

    Linux系統(tǒng)動態(tài)庫與靜態(tài)庫函數(shù)的使用介紹

    必須有。相對于靜態(tài)函數(shù)庫,動態(tài)函數(shù)庫在編譯的時(shí)候并沒有被編譯進(jìn)目標(biāo)代碼,你的程序執(zhí)行到相關(guān)函數(shù)時(shí)才調(diào)用該函數(shù)庫里的相應(yīng)
    發(fā)表于 09-29 11:31

    8168的demos里如何加.so動態(tài)鏈接庫

    8168的demos里如何加c++文件生成的 .so動態(tài)鏈接庫
    發(fā)表于 06-21 11:56

    Linux系統(tǒng)動態(tài)庫與靜態(tài)庫函數(shù)的使用介紹

    main.c調(diào)用了hello.c實(shí)現(xiàn)的函數(shù),使用靜態(tài)庫的方式編譯得到一個可執(zhí)行文件main_a 2、動態(tài)動態(tài)庫的后綴為*.
    發(fā)表于 07-04 05:33

    芯靈思SinlinxA33開發(fā)板的安卓控制LED-2-JNI基礎(chǔ)

    語句塊來加載動態(tài)庫} } 程序?qū)崿F(xiàn)測試java代碼javah -jni Hello 生成Hello .h 打開Hello .h 文件里面已經(jīng)寫好C函數(shù)的名字C代碼將C
    發(fā)表于 02-22 16:55

    JNI類的傳遞

    怎樣去創(chuàng)建JNI要傳遞的類?從JNI得到返回類的信息是什么?
    發(fā)表于 09-30 09:18

    如何在普通的鴻蒙工程中使用編譯好的SO文件

    DevEco Studio 默認(rèn)創(chuàng)建了libs目錄,所以將之前編譯好的SO文件直接拷貝到libs目錄即可。2.2 引入 JNITools 文件
    發(fā)表于 03-25 10:06

    請問C++項(xiàng)目如何編譯成可在OpenHarmony3.1環(huán)境下使用的動態(tài)so文件

    以前的Linux環(huán)境的C++項(xiàng)目,可以通過在CMakeList文件設(shè)置使用的工具鏈,編譯出各個開發(fā)平臺下可以使用的so文件。請問,我現(xiàn)在在開發(fā)平臺上,燒錄OpenHarmon V3.
    發(fā)表于 06-06 16:41

    ARM啟動文件的__main, 介紹了C啟動函數(shù)的設(shè)計(jì)

    ARM啟動文件的__main, 介紹了C啟動函數(shù)的設(shè)計(jì)
    發(fā)表于 09-20 09:34 ?9次下載
    ARM啟動<b class='flag-5'>文件</b><b class='flag-5'>中</b>的__main, 介紹了C啟動<b class='flag-5'>函數(shù)</b>的設(shè)計(jì)

    JNI java調(diào)用so動態(tài)庫方法

    JNI Java調(diào)用so包相關(guān)問題總結(jié),出現(xiàn)了很多問題,按照操作應(yīng)該不會發(fā)生不到so包的錯誤,其實(shí)最后出現(xiàn)的也是說加載不到libpython2.7.x.so.1,我就納悶了,怎么和py
    發(fā)表于 11-28 13:13 ?3642次閱讀

    Android下的DEX文件SO文件梳理總結(jié)

    android逆向分析、脫殼破解分析過程免不了和android的各種文件格式打交道(so、dex、xml、art、oat等等)。
    的頭像 發(fā)表于 11-04 09:32 ?8699次閱讀

    Vivado ML版動態(tài)函數(shù)交換的技術(shù)進(jìn)步

    電子發(fā)燒友網(wǎng)站提供《Vivado ML版動態(tài)函數(shù)交換的技術(shù)進(jìn)步.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 09:32 ?0次下載
    Vivado ML版<b class='flag-5'>中</b><b class='flag-5'>動態(tài)函數(shù)</b>交換的技術(shù)進(jìn)步

    在單片機(jī)上實(shí)現(xiàn)動態(tài)加載功能的函數(shù)庫介紹

    本項(xiàng)目是一個在單片機(jī)(如:STM32)上實(shí)現(xiàn)動態(tài)加載功能的函數(shù)庫,與Windows的dll,Linuxso類似,可以將代碼
    的頭像 發(fā)表于 11-09 10:55 ?2086次閱讀
    主站蜘蛛池模板: 看免费一级片 | 亚洲免费mv | 午夜一区二区免费视频 | 一区二区三区在线免费 | 欧美激情αv一区二区三区 欧美激情第一欧美在线 | 欧美成人一区二区三区在线视频 | 成年全黄大色大黄 | 欧美成人全部费免网站 | 亚洲男人的天堂久久香蕉 | 日本一本一道久久香蕉免费 | 午夜视频日本 | 欧美日本一区二区三区生 | 三级在线观看免播放网站 | 起碰免费视频 | 新版天堂中文在线8官网 | 国产精品欧美一区二区 | 一级特黄aaa大片免费看 | 国产黄mmd在线观看免费 | 春宵福利网站 | 一级国产特黄aa大片 | 日本xxxⅹ69xxxx护士 | 在线中文字幕第一页 | 人人做人人澡人人人爽 | 一级做a爱片久久毛片 | 欧美在线播放 | 国产午夜免费一区二区三区 | 天天操天天射天天爽 | 黄色网免费观看 | 青青操久久 | 色香蕉在线观看 | 男女爱爱免费 | 亚洲欧美一区二区久久香蕉 | 国产美女视频免费 | 午夜免费福利视频 | 天堂中文在线www | 轻点灬大ji巴太粗太长了啊h | 失禁h啪肉尿出来高h | 日本高清色视频在线观看免费 | 成人亚洲精品 | 夜夜夜爽| 欧美亚洲一区二区三区在线 |