色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在AOSP12中查看binder調用信息呢?

哆啦安全 ? 來源:黃大官AOSP ? 2023-11-27 09:40 ? 次閱讀

查看binder調用信息

http://aospxref.com/android-12.0.0_r3/xref/frameworks/base/core/java/android/os/BinderProxy.java

部分APP不會使用常規的framework api調用系統的一些函數獲取信息,但是如果他自己構建binder調用的信息獲取,最后都會跑到這個函數中去。

關鍵函數transact

打印調用信息關鍵函數:

public boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {


}

進入native層監控:

595publicnativebooleantransactNative(intcode,Parceldata,Parcelreply,
596intflags)throwsRemoteException;

對應native代碼:

http://aospxref.com/android-12.0.0_r3/xref/frameworks/base/core/jni/android_util_Binder.cpp
#1553

1548  static const JNINativeMethod gBinderProxyMethods[] = {
1549       /* name, signature, funcPtr */
1550      {"pingBinder",          "()Z", (void*)android_os_BinderProxy_pingBinder},
1551      {"isBinderAlive",       "()Z", (void*)android_os_BinderProxy_isBinderAlive},
1552      {"getInterfaceDescriptor", "()Ljava/lang/String;", (void*)android_os_BinderProxy_getInterfaceDescriptor},
1553      這里{"transactNative",      "(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z", (void*)android_os_BinderProxy_transact},
1554      {"linkToDeath",         "(Landroid/os/IBinder$DeathRecipient;I)V", (void*)android_os_BinderProxy_linkToDeath},
1555      {"unlinkToDeath",       "(Landroid/os/IBinder$DeathRecipient;I)Z", (void*)android_os_BinderProxy_unlinkToDeath},
1556      {"getNativeFinalizer",  "()J", (void*)android_os_BinderProxy_getNativeFinalizer},
1557      {"getExtension",        "()Landroid/os/IBinder;", (void*)android_os_BinderProxy_getExtension},
1558  };

上面是函數綁定,具體實現是:

1382  static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,
1383          jint code, jobject dataObj, jobject replyObj, jint flags)

發現一個好東西,把java的對象轉c++中對象,也就是對象中的一些字段信息轉到c++中的class中去。

Parcel* data = parcelForJavaObject(env, dataObj);

發現這里模塊有log工具的

1405ALOGV("Javacodecallingtransacton%pinJavaobject%pwithcode%"PRId32"
",
1406  target,obj,code);
可以使用ALOG進行參數打印,比如binder的操作碼code,和調用目標的class等等。 上面的日志工具文件:
http://aospxref.com/android-12.0.0_r3/xref/frameworks/ex/framesequence/jni/utils/log.h

如果編譯user版本,log關閉的,通常為了規避檢測,我們都會編譯user版本的系統。

28  /*
29   * Normally we strip ALOGV (VERBOSE messages) from release builds.
30   * You can modify this (for example with "#define LOG_NDEBUG 0"
31   * at the top of your source file) to change that behavior.
32   */
33  #ifndef LOG_NDEBUG
34  #ifdef NDEBUG
35  #define LOG_NDEBUG 1
36  #else
37  #define LOG_NDEBUG 0
38  #endif
39  #endif

LOG_NDEBUG==1表示不打印VERBOSE日志

LOG_NDEBUG==0表示打印VERBOSE日志

在這個頭文件頂部,增加

#define LOG_NDEBUG 0

主動激活打印日志,或者再增加一個開關來控制是否打印,增加pid過濾也可以的。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2973

    瀏覽量

    104939
  • Framework
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8623
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7017

原文標題:AOSP12中查看binder調用信息

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

收藏 人收藏

    評論

    相關推薦

    如何查看及更改函數/函數塊的調用環境

    是循環執行,當一個功能塊被多個外部函數/函數塊調用時,我們應如何查看某一次調用時的內部變量?這涉及到函數塊的調用環境問題,今天這篇文章,我
    的頭像 發表于 11-17 09:08 ?1022次閱讀
    如何<b class='flag-5'>查看</b>及更改函數/函數塊的<b class='flag-5'>調用</b>環境

    何在labview調用Matlab程序

    大家好!我是新手,想問下如何在labview調用Matlab程序?謝謝
    發表于 05-05 17:10

    怎樣查看labview調用的庫函數的來源等信息

    怎樣查看labview調用的庫函數的來源等信息?再看程序時碰到一個可函數調用節點,不知道怎樣怎樣添加的它,也不知道他的作用(它的輸入是個數組,貌似是找這個數組的指針的),求助~
    發表于 12-27 10:57

    請問各位如何在CCS4.2查看DSP/BIOS配置的任務的狀態?

    如題:請問各位如何在CCS4.2查看DSP/BIOS配置的任務的狀態,是就緒,阻塞還是運行態?謝謝。
    發表于 07-30 08:08

    請問如何使用execl調用shell命令查看文件信息

    如何使用execl調用shell命令查看文件信息
    發表于 04-09 06:37

    何在華為手機,平板查看申請試用HarmonyOS 2.0版本需反饋的基本信息

    何在華為手機,平板查看申請試用鴻蒙HarmonyOS 2.0版本需反饋的基本信息
    發表于 05-24 16:21

    何在stm32使用printf函數打印串口信息

    為什么在中斷中使用printf函數會導致中斷異常?如何在stm32使用printf函數打印串口信息
    發表于 12-01 07:37

    何在Probe Response幀和Beacon幀添加指定的Vendor IE信息

    信息,IE由ID、Length(有效載荷長度,單位為字節)和Payload構成。請問一下R329如何在WiFi Softap模式添加自定義Vendor IE?如何在Probe Response幀和Beacon幀
    發表于 12-29 06:40

    如何正確查看firmware版本信息

    在解決客戶問題的過程,多數問題都是因為版本沒有對齊導致的,從驅動到firmware再到etf測試工具。如何查看firmware版本信息?如何正確查看XRADIO相關版本的
    發表于 12-29 07:27

    openHarmony IPC數據調用的過程分享

    的本地Binder對象。 };2.3 binder_transaction_data這個數據不僅包含了flat_binder_object的純數據,也包含的cmdID以及發送者的其他
    發表于 03-30 09:26

    何在STM32CubeMonitor查看/顯示變量表

    何在 STM32CubeMonitor 查看/顯示變量表,就像在 STM Studio 中一樣?
    發表于 12-07 07:35

    何在keil調試模式下查看FreeRTOS消息隊列的情況

    何在keil調試模式下查看FreeRTOS消息隊列的情況
    發表于 05-05 10:18

    何在IDEA查看依賴關系

    Maven提供了mvn dependency:tree來查看依賴關系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有類似的功能,這篇文章簡單說明一下如何在IDEA查看
    的頭像 發表于 10-17 09:48 ?1.9w次閱讀

    何在同步的Rust方法調用異步代碼

    在同步的 Rust 方法調用異步代碼經常會導致一些問題,特別是對于不熟悉異步 Rust runtime 底層原理的初學者。
    的頭像 發表于 03-17 09:18 ?2183次閱讀

    Andorid系統binder是什么意思

    binder是什么?可以理解為Andorid系統的一種進程間通信的方式,雖然Android系統基于Linux,但是它并沒有采用Linux自帶的進程間通信方式,而是采用了更高效的binder,理解
    的頭像 發表于 10-07 15:13 ?779次閱讀
    Andorid系統<b class='flag-5'>中</b><b class='flag-5'>binder</b>是什么意思
    主站蜘蛛池模板: xxnx18日本| 99热这里精品| 神马电影我不卡国语版| 欧美午夜不卡在线观看| 奶头从情趣内衣下露了出来AV| 久久91精品国产91| 交换年轻夫妇HD中文字幕| 国内精品九九视频| 国产在线视频在线观看| 国产露脸无码A区久久蘑菇| 国产精品AV色欲蜜臀在线| 国产AV99激情久久无码天堂| 成人天堂资源WWW在线| 村妇偷人内射高潮迭起| 高H短篇辣肉纯肉| 国产精品久久久久影院色老大| 国产精品美女久久久久AV超清| 国产乱对白精彩在线播放| 果冻传媒2021精品在线观看| 精品无码一区二区三区不卡| 久久天天躁狠狠躁夜夜呲| 快插我我好湿啊公交车上做| 妈妈的朋友5在线观看免费完整版中文| 乱淫67194| 秋霞电影院兔费理论观频84mb| 日韩AV爽爽爽久久久久久| 伸进同桌奶罩里摸她胸作文| 外国xxxx| 亚洲区视频在线观看| 伊人影院中文字幕| 69久久国产精品热88人妻| qvod 在线| 国产精品 中文字幕 亚洲 欧美| 国产伦子沙发午休系列资源曝光 | 久久亚洲成a人片| 麻豆精品传媒一二三区 | 99re热视频这里只有精品| 99久久婷婷国产综合精品青草| WW.国产人妻人伦精品| 国产69精品久久久久观看软件 | 免费人妻AV无码专区五月|