日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 )

發(fā)布時間:2025/6/17 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、獲取對象類型分析
  • 二、替換 Application 時機





一、獲取對象類型分析



在 【Android 安全】DEX 加密 ( Application 替換 | 獲取 ContextImpl、ActivityThread、LoadedApk 類型對象 | 源碼分析 ) 博客中分析了獲取 ContextImpl , ActivityThread , LoadedApk 類型的對象的方法 ,

  • ContextImpl : 從 Application 的 attachBaseContext(Context base) 方法中獲取 ContextImpl 對象 , ContextImpl 對象就是該方法的參數(shù) ;
  • ActivityThread : 從 ContextImpl 對象中獲取其 ActivityThread mMainThread 成員變量 ;
  • LoadedApk : 從 ContextImpl 對象中獲取其 LoadedApk mPackageInfo 成員變量 ;




二、替換 Application 時機



替換 Application 操作 , 必須在 onCreate 方法中執(zhí)行 ;


因為在 ActivityThread 中 , Application app = data.info.makeApplication(data.restrictedBackupMode, null) 代碼創(chuàng)建 Application ,

其本質(zhì)是調(diào)用 LoadedApk 的 makeApplication 方法 , 在該方法中調(diào)用了 Instrumentation 的 newApplication 方法 ,

Instrumentation 的 newApplication 方法 , 最后會調(diào)用 Application 的 attachBaseContext 方法 ;

attachBaseContext 執(zhí)行完畢后 , ContextImpl , ActivityThread , LoadedApk 中的 Application 相關(guān)的成員才被賦值 ;

如果要替換的話 , 一定要等到 上述 Application 相關(guān)成員賦值完成后 , 再去替換 , 才能最終替換調(diào) Application ;

Application 的 onCreate 方法回調(diào)時 , ContextImpl , ActivityThread , LoadedApk 中的 Application 相關(guān)的成員已經(jīng)賦值完畢 , 此時我們?nèi)√鎿Q掉這些成員中的 Application , 即可完成 Application 的替換操作 ;


因此 必須在 onCreate 方法中替換 Application , 不能在 attachBaseContext 中替換 ;

總結(jié)

以上是生活随笔為你收集整理的【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。