【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )
文章目錄
- 一、報(bào)錯(cuò)信息
- 二、問(wèn)題分析
一、報(bào)錯(cuò)信息
從 DEX 文件加載 Activity 組件 , 運(yùn)行時(shí)報(bào)如下錯(cuò)誤 ;
2021-12-12 14:02:52.432 5342-5342/com.example.classloader_demo E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.classloader_demo, PID: 5342java.lang.VerifyError: Verifier rejected class androidx.appcompat.app.WindowDecorActionBar: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode(androidx.appcompat.view.ActionMode$Callback) failed to verify: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode(androidx.appcompat.view.ActionMode$Callback): [0x2A] register v0 has type Precise Reference: androidx.appcompat.app.WindowDecorActionBar$ActionModeImpl but expected Reference: androidx.appcompat.view.ActionMode (declaration of 'androidx.appcompat.app.WindowDecorActionBar' appears in /data/app/com.example.classloader_demo-F2fgfWcEO4AIIt49r9aB1w==/base.apk)at androidx.appcompat.app.AppCompatDelegateImpl.initWindowDecorActionBar(AppCompatDelegateImpl.java:557)at androidx.appcompat.app.AppCompatDelegateImpl.getSupportActionBar(AppCompatDelegateImpl.java:537)at androidx.appcompat.app.AppCompatDelegateImpl.onPostResume(AppCompatDelegateImpl.java:679)at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:241)at android.app.Activity.performResume(Activity.java:7325)at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3814)at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3854)at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)二、問(wèn)題分析
這是從 Dex 文件中加載 Activity 組件類 , 然后啟動(dòng)該 Activity 組件 , 報(bào)上述錯(cuò)誤 ;
Activity 組件類加載成功 , 執(zhí)行時(shí)報(bào)錯(cuò) ;
錯(cuò)誤是與類加載方式相關(guān) ;
加載該 Activity 組件類時(shí) , 先創(chuàng)建 DexClassLoader , 并設(shè)置其 父類節(jié)點(diǎn)為 BootClassLoader , 然后使用 DexClassLoader 實(shí)例對(duì)象作為 PathClassLoader 的父節(jié)點(diǎn) ;
最終加載到該 Activity 組件并啟動(dòng)該組件時(shí) , 報(bào)上述錯(cuò)誤 ;
使用 【Android 逆向】啟動(dòng) DEX 字節(jié)碼中的 Activity 組件 ( 替換 LoadedApk 中的類加載器 | 加載 DEX 文件中的 Activity 類并啟動(dòng)成功 ) 中的方案是可以執(zhí)行成功的 ;
總結(jié)
以上是生活随笔為你收集整理的【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 逆向】启动 DEX 字
- 下一篇: 【Android 逆向】启动 DEX 字