Coder Social home page Coder Social logo

frida-apk-unpack's Introduction

Frida-Apk-Unpack

基于Frida的脱壳工具

参考

dstmath的frida-unpack https://github.com/dstmath/frida-unpack

xiaokanghub的Frida-Android-unpack https://github.com/xiaokanghub/Frida-Android-unpack

对脚本功能做了优化,适配了更多平台,加强了对于各安卓版本的通用性

目前测试过Android4.4(貌似frida对Android4.4兼容并不好) Android5.1 Android6.0 Android7.1

0x0 frida环境搭建

frida环境搭建,参考frida官网:frida。

0x1 原理说明

利用frida hook libart.so中的OpenMemory或OpenCommon(Android N以后)方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出。

0x2 脚本用法

在手机上启动frida server端 执行 frida -U -f com.xxx.xxx -l dumpDex.js --no-pause 脱壳后的dex保存在/data/data/应用包名/目录下

0x3 适用环境

普通加固可以脱壳,对于类抽取等加固脱出的只是个空壳,需要做指令Dump以及Patch到脱出的Dex文件中

0x4 参考链接

https://www.frida.re/docs/home/

https://github.com/dstmath/frida-unpack

https://github.com/xiaokanghub/Frida-Android-unpack

0x5 声明

本工具仅用于学习交流,不得用于违法行为,如作他用所承受的法律责任一概与作者无关(下载使用即代表你同意上述观点)

frida-apk-unpack's People

Contributors

guoqiang1993 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

frida-apk-unpack's Issues

请求适配安卓11

已知安卓10以上需要改成 libdexfile.so 但是还是报错 请求适配!!! 感谢大佬

TODOs

Ideas

  • Remove duplicated message of Android version
  • Silence exceptions when we cannot find dex\035 headers
  • Cleanup the message logs
  • Support Android 10 and vdex format
  • Add project description to the repo
  • Improve timestamp
  • Print sizes in KB, MB
[ edu@xps Frida-Apk-Unpack]  (fix_android_version)>  frida -U -f com.anonytun.android --no-pause -l dexDump.js 
     ____
    / _  |   Frida 12.8.20 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://www.frida.re/docs/home/
Spawning `com.anonytun.android`...                                      
[22:00:13:979] Android Version: 9
[22:00:14:007] index 857 function name: _ZN3art16ArtDexFileLoader10OpenCommonEPKhmS2_mRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPKNS_10OatDexFileEbbPS9_NS3_10unique_ptrINS_16DexFileContainerENS3_14default_deleteISH_EEEEPNS_13DexFileLoader12VerifyResultE
[22:00:14:009] processName com.anonytun.android
[22:00:14:010] Android Version: 9
Spawned `com.anonytun.android`. Resuming main thread!                   
[Pixel 2::com.anonytun.android]-> [22:00:14:051] magic : dex035
[22:00:14:052] dex_size :43028
[22:00:14:053] dump dex success, saved path: /data/data/com.anonytun.android/43028.dex

[22:00:14:086] magic : dex035
[22:00:14:086] dex_size :14396
[22:00:14:086] dump dex success, saved path: /data/data/com.anonytun.android/14396.dex
                                                                                                                                                                                             
[22:00:14:094] magic : dex035
[22:00:14:094] dex_size :10824
[22:00:14:095] dump dex success, saved path: /data/data/com.anonytun.android/10824.dex

Error: access violation accessing 0xdbd00
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
[22:00:15:518] magic : dex035
[22:00:15:518] dex_size :97868
[22:00:15:519] dump dex success, saved path: /data/data/com.anonytun.android/97868.dex

[22:00:15:521] magic : dex035
[22:00:15:521] dex_size :97868
[22:00:15:522] dump dex success, saved path: /data/data/com.anonytun.android/97868.dex

[22:00:15:534] magic : dex035
[22:00:15:535] dex_size :17488
[22:00:15:535] dump dex success, saved path: /data/data/com.anonytun.android/17488.dex

Error: access violation accessing 0x79e30
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
[22:00:15:566] magic : dex035
[22:00:15:566] dex_size :484664
[22:00:15:567] dump dex success, saved path: /data/data/com.anonytun.android/484664.dex

Error: access violation accessing 0x15a68
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x9b0
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x1310
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
[22:00:15:722] magic : dex035
[22:00:15:722] dex_size :8027020
[22:00:15:722] dump dex success, saved path: /data/data/com.anonytun.android/8027020.dex

[22:00:15:751] magic : dex035
[22:00:15:751] dex_size :8219756
[22:00:15:752] dump dex success, saved path: /data/data/com.anonytun.android/8219756.dex

[22:00:15:780] magic : dex035
[22:00:15:781] dex_size :8323264
[22:00:15:781] dump dex success, saved path: /data/data/com.anonytun.android/8323264.dex

[22:00:15:811] magic : dex035
[22:00:15:811] dex_size :8735872
[22:00:15:812] dump dex success, saved path: /data/data/com.anonytun.android/8735872.dex

[22:00:15:840] magic : dex035
[22:00:15:841] dex_size :8315336
[22:00:15:841] dump dex success, saved path: /data/data/com.anonytun.android/8315336.dex

[22:00:15:862] magic : dex035
[22:00:15:862] dex_size :5934492
[22:00:15:863] dump dex success, saved path: /data/data/com.anonytun.android/5934492.dex

[22:00:15:903] magic : dex035
[22:00:15:904] dex_size :8027020
[22:00:15:904] dump dex success, saved path: /data/data/com.anonytun.android/8027020.dex

[22:00:15:930] magic : dex035
[22:00:15:931] dex_size :8219756
[22:00:15:931] dump dex success, saved path: /data/data/com.anonytun.android/8219756.dex

[22:00:15:957] magic : dex035
[22:00:15:958] dex_size :8323264
[22:00:15:958] dump dex success, saved path: /data/data/com.anonytun.android/8323264.dex

[22:00:15:986] magic : dex035
[22:00:15:986] dex_size :8735872
[22:00:15:987] dump dex success, saved path: /data/data/com.anonytun.android/8735872.dex

[22:00:16:013] magic : dex035
[22:00:16:014] dex_size :8315336
[22:00:16:014] dump dex success, saved path: /data/data/com.anonytun.android/8315336.dex

[22:00:16:033] magic : dex035
[22:00:16:034] dex_size :5934492
[22:00:16:034] dump dex success, saved path: /data/data/com.anonytun.android/5934492.dex

Error: access violation accessing 0x1900
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x74e4a4
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x26a14
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x428
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196
Error: access violation accessing 0x5ba1c
    at checkDexMagic (/dexDump.js:126)
    at /dexDump.js:196

手上正好有个sdk,自己编译后测试

[03:50:57:489] Android Version: 7
script.js:225
[03:50:57:535] index 3510 function name: ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9
script.js:225
[03:50:57:536] processName com.alipay.sdk.pay.demo
script.js:225
[03:50:57:536] Android Version: 7
script.js:225
undefined
然后就结束了
这是什么原因呢
雷电模拟器 显示 版本为:7.12

Android 10 support

ART's library locations:

sargo:/ # find / 2>/dev/null|grep libart.so                                                                               
/apex/com.android.runtime/lib64/libart.so
/apex/com.android.runtime/lib/libart.so
/apex/com.android.runtime@1/lib64/libart.so
/apex/com.android.runtime@1/lib/libart.so
/system/apex/com.android.runtime.release/lib64/libart.so
/system/apex/com.android.runtime.release/lib/libart.so

Radare2

Exports

$ r2 libart.so
[0x0012d000]> iEq~+opencom,openme,dexfile
0x00562a08 276 art::verifier::VerifierDeps::VerifyDexFile(art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::verifier::VerifierDeps::DexFileDeps const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::Thread*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x00522edc 628 art::verifier::MethodVerifier::MethodVerifier(art::Thread*, art::DexFile const*, art::dex::CodeItem const*, unsigned int, bool, bool, bool)
0x0044ce24 60 art::OatFile::FindOatClass(art::DexFile const&, unsigned short, bool*)
0x0051f934 24 art::VdexFile::VerifierDepsHeader::HasDexSection() const
0x0051f8e8 24 art::VdexFile::VerifierDepsHeader::IsVerifierDepsVersionValid() const
0x001640cc 112 art::FindInClassPath(char const*, unsigned long, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x001dd3a4 296 art::optimizer::ArtDecompileDEX(art::DexFile const&, art::dex::CodeItem const&, art::ArrayRef<unsigned char const> const&, bool)
0x0044af04 3364 art::OatDexFile::GetOatClass(unsigned short) const
0x00168838 1156 art::ClassLinker::SetupClass(art::DexFile const&, art::dex::ClassDef const&, art::Handle<art::mirror::Class>, art::ObjPtr<art::mirror::ClassLoader>)
0x0055e058 512 art::verifier::VerifierDeps::AddFieldResolution(art::DexFile const&, unsigned int, art::ArtField*)
0x0056292c 220 art::verifier::VerifierDeps::ValidateDependencies(art::Thread*, art::Handle<art::mirror::ClassLoader>, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x001603bc 344 art::ClassLinker::AppendToBootClassPath(art::DexFile const&, art::ObjPtr<art::mirror::DexCache>)
0x0055f054 76 art::verifier::VerifierDeps::MaybeRecordClassResolution(art::DexFile const&, art::dex::TypeIndex, art::ObjPtr<art::mirror::Class>)
0x0044ac54 112 art::OatDexFile::OatDexFile(art::OatFile const*, art::DexFile const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x0056395c 2876 art::verifier::VerifierDeps::VerifyFields(art::Handle<art::mirror::ClassLoader>, art::DexFile const&, std::__1::set<art::verifier::VerifierDeps::FieldResolution, std::__1::less<art::verifier::VerifierDeps::FieldResolution>, std::__1::allocator<art::verifier::VerifierDeps::FieldResolution> > const&, art::Thread*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x001944dc 3136 art::ClassLoaderContext::OpenDexFiles(art::InstructionSet, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<int, std::__1::allocator<int> > const&)
0x0016c028 724 art::ClassLinker::IsDexFileRegistered(art::Thread*, art::DexFile const&)
0x003f4e50 624 art::mirror::DexCache::InitializeDexCache(art::Thread*, art::ObjPtr<art::mirror::DexCache>, art::ObjPtr<art::mirror::String>, art::DexFile const*, art::LinearAlloc*, art::PointerSize)
0x001d85e8 580 art::annotations::HasDeadReferenceSafeAnnotation(art::DexFile const&, art::dex::ClassDef const&)
0x0044aa08 588 art::OatDexFile::OatDexFile(art::OatFile const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned char const*, unsigned char const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, unsigned int const*, art::DexLayoutSections const*)
0x0055def8 352 art::verifier::VerifierDeps::AddClassResolution(art::DexFile const&, art::dex::TypeIndex, art::ObjPtr<art::mirror::Class>)
0x0044aef4 16 art::OatDexFile::IsBackedByVdexOnly() const
0x00163474 404 art::ClassLinker::AllocDexCache(art::ObjPtr<art::mirror::String>*, art::Thread*, art::DexFile const&)
0x00520b48 8 art::VdexFile::GetQuickeningInfoTableOffset(unsigned char const*) const
0x0019f27c 204 art::ThrowAbstractMethodError(unsigned int, art::DexFile const&)
0x0016b4a0 1960 art::ClassLinker::LoadMethod(art::DexFile const&, art::ClassAccessor::Method const&, art::Handle<art::mirror::Class>, art::ArtMethod*)
0x004505cc 992 art::OatFileAssistant::LoadDexFiles(art::OatFile const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*)
0x0052022c 432 art::VdexFile::OpenAllDexFiles(std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0055c4c8 1880 art::verifier::VerifierDeps::MergeWith(std::__1::unique_ptr<art::verifier::VerifierDeps, std::__1::default_delete<art::verifier::VerifierDeps> >, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x0055f188 2844 art::verifier::VerifierDeps::Encode(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const
0x0051f900 52 art::VdexFile::VerifierDepsHeader::IsDexSectionVersionValid() const
0x0056160c 1588 art::verifier::VerifierDeps::DexFileDeps::Equals(art::verifier::VerifierDeps::DexFileDeps const&) const
0x00337c14 3328 art::jit::Jit::CompileMethodsFromProfile(art::Thread*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, art::Handle<art::mirror::ClassLoader>, bool)
0x0055d904 192 art::verifier::VerifierDeps::GetMethodDeclaringClassStringId(art::DexFile const&, unsigned int, art::ArtMethod*)
0x0015ed3c 2016 art::ClassLinker::RegisterDexFileLocked(art::DexFile const&, art::ObjPtr<art::mirror::DexCache>, art::ObjPtr<art::mirror::ClassLoader>)
0x0044ae28 188 art::OatDexFile::OpenDexFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x00331254 280 art::RemoveNativeDebugInfoForDex(art::Thread*, art::DexFile const*)
0x0014457c 932 art::ArtMethod::FindDexMethodIndexInOtherDexFile(art::DexFile const&, unsigned int)
0x00163608 196 art::ClassLinker::AllocAndInitializeDexCache(art::Thread*, art::DexFile const&, art::LinearAlloc*)
0x004cd5a4 940 art::RuntimeCallbacks::ClassPreDefine(char const*, art::Handle<art::mirror::Class>, art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::dex::ClassDef const&, art::DexFile const**, art::dex::ClassDef const**)
0x00520b88 616 art::VdexFile::GetQuickenedInfoOf(art::DexFile const&, unsigned int) const
0x00520b50 20 art::VdexFile::GetQuickenInfoOffsetTable(unsigned char const*, art::ArrayRef<unsigned char const> const&) const
0x00411374 556 art::register_dalvik_system_DexFile(_JNIEnv*)
0x00164fc8 2624 art::ClassLinker::DefineClass(art::Thread*, char const*, unsigned long, art::Handle<art::mirror::ClassLoader>, art::DexFile const&, art::dex::ClassDef const&)
0x00454860 7904 art::OatFileManager::OpenDexFilesFromOat(char const*, _jobject*, _jobjectArray*, art::OatFile const**, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*)
0x00528f18 288 art::verifier::MethodVerifier::CreateVerifier(art::Thread*, art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::dex::ClassDef const&, art::dex::CodeItem const*, unsigned int, art::ArtMethod*, unsigned int, bool, bool, bool, bool, bool, unsigned int)
0x00456740 468 art::OatFileManager::OpenDexFilesFromOat(std::__1::vector<art::MemMap, std::__1::allocator<art::MemMap> >&&, _jobject*, _jobjectArray*, art::OatFile const**, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*)
0x005610c8 504 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::ArrayRef<unsigned char const>)
0x001d7a78 936 art::annotations::GetNativeMethodAnnotationAccessFlags(art::DexFile const&, art::dex::ClassDef const&, unsigned int)
0x0016e8fc 584 art::ClassLinker::VerifyClassUsingOatFile(art::DexFile const&, art::ObjPtr<art::mirror::Class>, art::ClassStatus&)
0x00154b60 17428 art::ClassLinker::InitWithoutImage(std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0055ccd0 360 art::verifier::VerifierDeps::GetClassDescriptorStringId(art::DexFile const&, art::ObjPtr<art::mirror::Class>)
0x00169630 1236 art::ClassLinker::LoadSuperAndInterfaces(art::Handle<art::mirror::Class>, art::DexFile const&)
0x005612c0 280 art::verifier::VerifierDeps::ParseVerifiedClasses(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::ArrayRef<unsigned char const>)
0x00456914 2084 art::OatFileManager::OpenDexFilesFromOat_Impl(std::__1::vector<art::MemMap, std::__1::allocator<art::MemMap> >&&, _jobject*, _jobjectArray*, art::OatFile const**, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >*)
0x00196464 2156 art::ClassLoaderContext::CreateClassLoader(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&) const
0x005cda40 8 art::WellKnownClasses::dalvik_system_DexPathList__Element_dexFile
0x001d834c 668 art::annotations::MethodContainsRSensitiveAccess(art::DexFile const&, art::dex::ClassDef const&, unsigned int)
0x005213d8 420 art::VdexFile::MatchesDexFileChecksums(std::__1::vector<art::DexFile::Header const*, std::__1::allocator<art::DexFile::Header const*> > const&) const
0x0044aee4 16 art::OatDexFile::GetOatClassOffset(unsigned short) const
0x00159fdc 352 art::ClassLinker::AppendToBootClassPath(art::Thread*, art::DexFile const&)
0x005cd418 32 art::RuntimeArgumentMap::NoDexFileFallback
0x00185158 1408 art::ClassLinker::CreateWellKnownClassLoader(art::Thread*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, _jclass*, _jobject*, _jobject*)
0x00521ec8 2436 _ZN3art8verifier13ClassVerifier11VerifyClassEPNS_6ThreadEPKNS_7DexFileENS_6HandleINS_6mirror8DexCacheEEENS7_INS8_11ClassLoaderEEERKNS_3dex8ClassDefEPNS_17CompilerCallbacksEbNS0_15HardFailLogModeEjPNSt3__112basic_stringIcNSK_11char_traitsIcEENSK_9allocato
0x0055f0a0 72 art::verifier::VerifierDeps::MaybeRecordFieldResolution(art::DexFile const&, unsigned int, art::ArtField*)
0x0055ef0c 188 art::verifier::VerifierDeps::MaybeRecordVerificationStatus(art::DexFile const&, art::dex::ClassDef const&, art::verifier::FailureKind)
0x00448988 432 art::ElfOatFile::InitializeFromElfFile(int, art::ElfFile*, art::VdexFile*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x005204e4 124 art::VdexFile::GetNextDexFileData(unsigned char const*) const
0x0051f990 12 art::VdexFile::DexSectionHeader::DexSectionHeader(unsigned int, unsigned int, unsigned int)
0x0055c234 324 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, bool)
0x005647ac 2792 art::verifier::VerifierDeps::VerifyMethods(art::Handle<art::mirror::ClassLoader>, art::DexFile const&, std::__1::set<art::verifier::VerifierDeps::MethodResolution, std::__1::less<art::verifier::VerifierDeps::MethodResolution>, std::__1::allocator<art::verifier::VerifierDeps::MethodResolution> > const&, art::Thread*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x001857b4 20 art::ClassLinker::CreatePathClassLoader(art::Thread*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x0055cc20 88 art::verifier::VerifierDeps::GetDexFileDeps(art::DexFile const&)
0x0051f94c 68 art::VdexFile::VerifierDepsHeader::VerifierDepsHeader(unsigned int, unsigned int, bool, unsigned int, unsigned int)
0x003f23dc 152 art::mirror::Class::FindTypeIndexInOtherDexFile(art::DexFile const&)
0x00450c4c 8 art::OatFileAssistant::OdexFileStatus()
0x0055f130 88 art::verifier::VerifierDeps::MaybeRecordAssignability(art::DexFile const&, art::ObjPtr<art::mirror::Class>, art::ObjPtr<art::mirror::Class>, bool, bool)
0x00457138 1916 art::OatFileManager::RunBackgroundVerification(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, _jobject*, char const*)
0x00523154 124 _ZN3art8verifier14MethodVerifier12VerifyMethodEPNS_6ThreadEjPKNS_7DexFileENS_6HandleINS_6mirror8DexCacheEEENS7_INS8_11ClassLoaderEEERKNS_3dex8ClassDefEPKNSD_8CodeItemEPNS_9ArtMethodEjPNS_17CompilerCallbacksEbNS0_15HardFailLogModeEbjPNSt3__112basic_string
0x0015ecf0 76 art::ClassLinker::FindDexCacheDataLocked(art::DexFile const&)
0x0055e258 512 art::verifier::VerifierDeps::AddMethodResolution(art::DexFile const&, unsigned int, art::ArtMethod*)
0x0044acc4 260 art::OatDexFile::OatDexFile(art::TypeLookupTable&&)
0x0055f0e8 72 art::verifier::VerifierDeps::MaybeRecordMethodResolution(art::DexFile const&, unsigned int, art::ArtMethod*)
0x0055c4c0 8 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x0029455c 392 art::hiddenapi::InitializeDexFileDomain(art::DexFile const&, art::ObjPtr<art::mirror::ClassLoader>)
0x0044ae1c 12 art::OatDexFile::FileSize() const
0x0019595c 268 art::ClassLoaderContext::CheckDexFilesOpened(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const
0x003376f0 168 art::jit::Jit::RegisterDexFiles(std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > > const&, art::ObjPtr<art::mirror::ClassLoader>)
0x0055ea88 976 art::verifier::VerifierDeps::AddAssignability(art::DexFile const&, art::ObjPtr<art::mirror::Class>, art::ObjPtr<art::mirror::Class>, bool, bool)
0x001d7e20 656 art::annotations::FieldIsReachabilitySensitive(art::DexFile const&, art::dex::ClassDef const&, unsigned int)
0x0055ce38 2764 art::verifier::VerifierDeps::GetIdFromString(art::DexFile const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x00524a3c 536 art::verifier::MethodVerifier::VerifyMethodAndDump(art::Thread*, art::VariableIndentationOutputStream*, unsigned int, art::DexFile const*, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>, art::dex::ClassDef const&, art::dex::CodeItem const*, art::ArtMethod*, unsigned int, unsigned int)
0x00560738 2448 art::verifier::VerifierDeps::DecodeDexFileDeps(art::verifier::VerifierDeps::DexFileDeps&, unsigned char const**, unsigned char const*)
0x00451908 784 art::OatFileAssistant::AnonymousDexVdexLocation(std::__1::vector<art::DexFile::Header const*, std::__1::allocator<art::DexFile::Header const*> > const&, art::InstructionSet, unsigned int*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0055daec 192 art::verifier::VerifierDeps::GetFieldDeclaringClassStringId(art::DexFile const&, unsigned int, art::ArtField*)
0x0044aa08 588 art::OatDexFile::OatDexFile(art::OatFile const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned char const*, unsigned char const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, art::LengthPrefixedArray<art::IndexBssMappingEntry> const*, unsigned int const*, art::DexLayoutSections const*)
0x0055cc78 88 art::verifier::VerifierDeps::GetDexFileDeps(art::DexFile const&) const
0x00160010 544 art::ClassLinker::OpenImageDexFiles(art::gc::space::ImageSpace*, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0055c234 324 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, bool)
0x001843a0 3512 art::ClassLinker::CreateWellKnownClassLoader(art::Thread*, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::Handle<art::mirror::Class>, art::Handle<art::mirror::ClassLoader>, art::Handle<art::mirror::ObjectArray<art::mirror::ClassLoader> >)
0x00331078 476 art::AddNativeDebugInfoForDex(art::Thread*, art::DexFile const*)
0x0044bc54 136 art::OatDexFile::FindClassDef(art::DexFile const&, char const*, unsigned long)
0x00197750 460 art::ClassLoaderContext::FlattenOpenedDexFiles() const
0x00565558 112 art::verifier::VerifierDeps::IsInDexFiles(char const*, unsigned long, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::DexFile const**) const
0x0051fc54 1496 art::VdexFile::OpenAtAddress(unsigned char*, unsigned long, bool, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x005cda18 8 art::WellKnownClasses::dalvik_system_DexFile_cookie
0x00563224 1444 art::verifier::VerifierDeps::VerifyClasses(art::Handle<art::mirror::ClassLoader>, art::DexFile const&, std::__1::set<art::verifier::VerifierDeps::ClassResolution, std::__1::less<art::verifier::VerifierDeps::ClassResolution>, std::__1::allocator<art::verifier::VerifierDeps::ClassResolution> > const&, art::Thread*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x0015e604 144 art::ClassLinker::AddExtraBootDexFiles(art::Thread*, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >&&)
0x0051f99c 696 art::VdexFile::OpenAtAddress(unsigned char*, unsigned long, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x00445c7c 616 art::OatFileBase::Setup(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x0044d068 188 art::OatDexFile::AssertAotCompiler()
0x0044adc8 84 art::OatDexFile::~OatDexFile()
0x00520b64 24 art::VdexFile::GetQuickenInfoOffsetTable(art::DexFile const&, art::ArrayRef<unsigned char const> const&) const
0x0044bcdc 252 art::OatDexFile::MadviseDexFile(art::DexFile const&, art::MadviseState)
0x00443e4c 8 art::OatHeader::SetOatDexFilesOffset(unsigned int)
0x001d9bc4 1324 art::annotations::GetLineNumFromPC(art::DexFile const*, art::ArtMethod*, unsigned int)
0x00448fb8 172 art::OatFile::OpenWithElfFile(int, art::ElfFile*, art::VdexFile*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x003f50c0 2144 _ZN3art6mirror8DexCache4InitEPKNS_7DexFileENS_6ObjPtrINS0_6StringEEEPNSt3__16atomicINS0_12DexCachePairIS6_EEEEjPNS9_INSA_INS0_5ClassEEEEEjPNS9_INS0_18NativeDexCachePairINS_9ArtMethodEEEEEjPNS9_INSI_INS_8ArtFieldEEEEEjPNS9_INSA_INS0_10MethodTypeEEEEEjPNS_
0x0051f990 12 art::VdexFile::DexSectionHeader::DexSectionHeader(unsigned int, unsigned int, unsigned int)
0x0044bc28 44 art::OatDexFile::GetQuickenedInfoOf(art::DexFile const&, unsigned int) const
0x00168fb8 1656 art::ClassLinker::LoadClass(art::Thread*, art::DexFile const&, art::dex::ClassDef const&, art::Handle<art::mirror::Class>)
0x00443e44 8 art::OatHeader::GetOatDexFilesOffset() const
0x0051f8d0 24 art::VdexFile::VerifierDepsHeader::IsMagicValid() const
0x005203dc 264 art::VdexFile::Unquicken(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, bool) const
0x0052157c 704 art::VdexFile::MatchesBootClassPathChecksums() const
0x00562b1c 1800 art::verifier::VerifierDeps::VerifyAssignability(art::Handle<art::mirror::ClassLoader>, art::DexFile const&, std::__1::set<art::verifier::VerifierDeps::TypeAssignability, std::__1::less<art::verifier::VerifierDeps::TypeAssignability>, std::__1::allocator<art::verifier::VerifierDeps::TypeAssignability> > const&, bool, art::Thread*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x001d80b0 668 art::annotations::MethodIsReachabilitySensitive(art::DexFile const&, art::dex::ClassDef const&, unsigned int)
0x0044ac54 112 art::OatDexFile::OatDexFile(art::OatFile const*, art::DexFile const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x0055c4c0 8 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x001681bc 1660 art::ClassLinker::RegisterDexFile(art::DexFile const&, art::ObjPtr<art::mirror::ClassLoader>)
0x00167e5c 864 art::ClassLinker::SizeOfClassWithoutEmbeddedTables(art::DexFile const&, art::dex::ClassDef const&)
0x0052183c 612 art::VdexFile::MatchesClassLoaderContext(art::ClassLoaderContext const&) const
0x00270a98 540 art::gc::space::ImageSpace::GetBootClassPathChecksums(std::__1::vector<art::gc::space::ImageSpace*, std::__1::allocator<art::gc::space::ImageSpace*> > const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&)
0x0044acc4 260 art::OatDexFile::OatDexFile(art::TypeLookupTable&&)
0x00520df0 856 art::VdexFile::WriteToDisk(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::verifier::VerifierDeps const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x00185824 176 art::ClassLinker::InsertDexFileInToClassLoader(art::ObjPtr<art::mirror::Object>, art::ObjPtr<art::mirror::ClassLoader>)
0x0044adc8 84 art::OatDexFile::~OatDexFile()
0x0055efc8 140 art::verifier::VerifierDeps::RecordClassVerified(art::DexFile const&, art::dex::ClassDef const&)
0x005cda20 8 art::WellKnownClasses::dalvik_system_DexFile_fileName
0x00520560 1512 art::VdexFile::UnquickenDexFile(art::DexFile const&, unsigned char const*, bool) const
0x0044e3bc 1472 art::OatFileAssistant::DexLocationToOdexFilename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, art::InstructionSet, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051f94c 68 art::VdexFile::VerifierDepsHeader::VerifierDepsHeader(unsigned int, unsigned int, bool, unsigned int, unsigned int)
0x005610c8 504 art::verifier::VerifierDeps::VerifierDeps(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::ArrayRef<unsigned char const>)
0x003f4e10 44 art::mirror::ClassExt::SetOriginalDexFile(art::ObjPtr<art::mirror::Object>)
0x0055ee58 180 art::verifier::VerifierDeps::MaybeRecordClassRedefinition(art::DexFile const&, art::dex::ClassDef const&)
0x0016c2fc 1100 art::ClassLinker::FindDexCache(art::Thread*, art::DexFile const&)
0x0055dbac 644 art::verifier::VerifierDeps::GetStringFromId(art::DexFile const&, art::dex::StringIndex) const
0x005655c8 1420 art::verifier::VerifierDeps::VerifyInternalClasses(art::DexFile const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::vector<bool, std::__1::allocator<bool> > const&, std::__1::vector<bool, std::__1::allocator<bool> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x003f4e48 8 art::mirror::ClassExt::SetPreRedefineDexFile(art::DexFile const*)
0x004509ac 36 art::OatFileAssistant::HasOriginalDexFiles()
0x00520b7c 12 art::VdexFile::UnquickenDexFile(art::DexFile const&, art::DexFile const&, bool) const
0x00449c54 3508 art::OatFile::GetOatDexFile(char const*, unsigned int const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
0x005cd7d0 8 art::WellKnownClasses::dalvik_system_DexFile
0x0015c82c 6844 _ZN3art11ClassLinker13AddImageSpaceEPNS_2gc5space10ImageSpaceENS_6HandleINS_6mirror11ClassLoaderEEEP13_jobjectArrayPKcPNSt3__16vectorINSD_10unique_ptrIKNS_7DexFileENSD_14default_deleteISH_EEEENSD_9allocatorISK_EEEEPNSD_12basic_stringIcNSD_11char_traitsIc
0x00450448 388 art::OatFileAssistant::LoadDexFiles(art::OatFile const&, char const*)
0x00449950 272 art::OatFile::OpenFromVdex(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::unique_ptr<art::VdexFile, std::__1::default_delete<art::VdexFile> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x00450c5c 540 art::OatFileAssistant::DexChecksumUpToDate(art::VdexFile const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0015c82c 6844 _ZN3art11ClassLinker13AddImageSpaceEPNS_2gc5space10ImageSpaceENS_6HandleINS_6mirror11ClassLoaderEEEP13_jobjectArrayPKcPNSt3__16vectorINSD_10unique_ptrIKNS_7DexFileENSD_14default_deleteISH_EEEENSD_9allocatorISK_EEEEPNSD_12basic_stringIcNSD_11char_traitsIc
0x003f50c0 2144 _ZN3art6mirror8DexCache4InitEPKNS_7DexFileENS_6ObjPtrINS0_6StringEEEPNSt3__16atomicINS0_12DexCachePairIS6_EEEEjPNS9_INSA_INS0_5ClassEEEEEjPNS9_INS0_18NativeDexCachePairINS_9ArtMethodEEEEEjPNS9_INSI_INS_8ArtFieldEEEEEjPNS9_INSA_INS0_10MethodTypeEEEEEjPNS_
0x00521ec8 2436 _ZN3art8verifier13ClassVerifier11VerifyClassEPNS_6ThreadEPKNS_7DexFileENS_6HandleINS_6mirror8DexCacheEEENS7_INS8_11ClassLoaderEEERKNS_3dex8ClassDefEPNS_17CompilerCallbacksEbNS0_15HardFailLogModeEjPNSt3__112basic_stringIcNSK_11char_traitsIcEENSK_9allocato
0x00523154 124 _ZN3art8verifier14MethodVerifier12VerifyMethodEPNS_6ThreadEjPKNS_7DexFileENS_6HandleINS_6mirror8DexCacheEEENS7_INS8_11ClassLoaderEEERKNS_3dex8ClassDefEPKNSD_8CodeItemEPNS_9ArtMethodEjPNS_17CompilerCallbacksEbNS0_15HardFailLogModeEbjPNSt3__112basic_string


[0x0012d000]> iEq~+vdex
0x0051f934 24 art::VdexFile::VerifierDepsHeader::HasDexSection() const
0x0051f8e8 24 art::VdexFile::VerifierDepsHeader::IsVerifierDepsVersionValid() const
0x0044aef4 16 art::OatDexFile::IsBackedByVdexOnly() const
0x00520b48 8 art::VdexFile::GetQuickeningInfoTableOffset(unsigned char const*) const
0x0052022c 432 art::VdexFile::OpenAllDexFiles(std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051f900 52 art::VdexFile::VerifierDepsHeader::IsDexSectionVersionValid() const
0x00520b88 616 art::VdexFile::GetQuickenedInfoOf(art::DexFile const&, unsigned int) const
0x00520b50 20 art::VdexFile::GetQuickenInfoOffsetTable(unsigned char const*, art::ArrayRef<unsigned char const> const&) const
0x005213d8 420 art::VdexFile::MatchesDexFileChecksums(std::__1::vector<art::DexFile::Header const*, std::__1::allocator<art::DexFile::Header const*> > const&) const
0x00448988 432 art::ElfOatFile::InitializeFromElfFile(int, art::ElfFile*, art::VdexFile*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x005204e4 124 art::VdexFile::GetNextDexFileData(unsigned char const*) const
0x0051f990 12 art::VdexFile::DexSectionHeader::DexSectionHeader(unsigned int, unsigned int, unsigned int)
0x004455a4 412 art::OatFileBase::LoadVdex(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051f94c 68 art::VdexFile::VerifierDepsHeader::VerifierDepsHeader(unsigned int, unsigned int, bool, unsigned int, unsigned int)
0x00451908 784 art::OatFileAssistant::AnonymousDexVdexLocation(std::__1::vector<art::DexFile::Header const*, std::__1::allocator<art::DexFile::Header const*> > const&, art::InstructionSet, unsigned int*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x00445444 352 art::OatFileBase::LoadVdex(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051fc54 1496 art::VdexFile::OpenAtAddress(unsigned char*, unsigned long, bool, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051f99c 696 art::VdexFile::OpenAtAddress(unsigned char*, unsigned long, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x00520b64 24 art::VdexFile::GetQuickenInfoOffsetTable(art::DexFile const&, art::ArrayRef<unsigned char const> const&) const
0x00448fb8 172 art::OatFile::OpenWithElfFile(int, art::ElfFile*, art::VdexFile*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x0051f990 12 art::VdexFile::DexSectionHeader::DexSectionHeader(unsigned int, unsigned int, unsigned int)
0x0051f8d0 24 art::VdexFile::VerifierDepsHeader::IsMagicValid() const
0x005203dc 264 art::VdexFile::Unquicken(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, bool) const
0x00451c18 240 art::OatFileAssistant::IsAnonymousVdexBasename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x0052157c 704 art::VdexFile::MatchesBootClassPathChecksums() const
0x0052183c 612 art::VdexFile::MatchesClassLoaderContext(art::ClassLoaderContext const&) const
0x00520df0 856 art::VdexFile::WriteToDisk(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, art::verifier::VerifierDeps const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)
0x00520560 1512 art::VdexFile::UnquickenDexFile(art::DexFile const&, unsigned char const*, bool) const
0x0051f94c 68 art::VdexFile::VerifierDepsHeader::VerifierDepsHeader(unsigned int, unsigned int, bool, unsigned int, unsigned int)
0x00520b7c 12 art::VdexFile::UnquickenDexFile(art::DexFile const&, art::DexFile const&, bool) const
0x00449950 272 art::OatFile::OpenFromVdex(std::__1::vector<art::DexFile const*, std::__1::allocator<art::DexFile const*> > const&, std::__1::unique_ptr<art::VdexFile, std::__1::default_delete<art::VdexFile> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
0x00450c5c 540 art::OatFileAssistant::DexChecksumUpToDate(art::VdexFile const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)

https://android.googlesource.com/platform/art/+/master/runtime/vdex_file.h#114

Imports

$ r2 libart.so
[0x0012d000]> iiq~+opencom,openme,dexfile
sym.imp.art::DexFile::FindClassDef(art::dex::TypeIndex) const
sym.imp.art::DexFile::FindTypeId(char const*) const
sym.imp.art::DexFile::FindMethodId(art::dex::TypeId const&, art::dex::StringId const&, art::dex::ProtoId const&) const
sym.imp.art::DexFile::PrettyMethod(unsigned int, bool) const
sym.imp.art::EncodedArrayValueIterator::EncodedArrayValueIterator(art::DexFile const&, unsigned char const*)
sym.imp.art::DexFile::PrettyType(art::dex::TypeIndex) const
sym.imp.art::ArtDexFileLoader::Open(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*) const
sym.imp.art::ArtDexFileLoader::Open(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*) const
sym.imp.art::DexFileLoader::GetDexCanonicalLocation(char const*)
sym.imp.vtable for art::ArtDexFileLoader
sym.imp.art::Instruction::DumpString(art::DexFile const*) const
sym.imp.art::DexFile::FindCodeItemOffset(art::dex::ClassDef const&, unsigned int) const
sym.imp.art::DexFile::ReadSignedInt(unsigned char const*, int)
sym.imp.art::DexFile::ReadUnsignedInt(unsigned char const*, int, bool)
sym.imp.art::DexFile::ReadSignedLong(unsigned char const*, int)
sym.imp.art::DexFile::ReadUnsignedLong(unsigned char const*, int, bool)
sym.imp.art::DexFileLoader::IsMultiDexLocation(char const*)
sym.imp.art::ArtDexFileLoader::GetMultiDexChecksums(char const*, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, int, bool*) const
sym.imp.art::DexFileLoader::GetMultiDexLocation(unsigned long, char const*)
sym.imp.art::TypeLookupTable::Create(art::DexFile const&)
sym.imp.art::ProfileCompilationInfo::GetClassesAndMethods(art::DexFile const&, std::__1::set<art::dex::TypeIndex, std::__1::less<art::dex::TypeIndex>, std::__1::allocator<art::dex::TypeIndex> >*, std::__1::set<unsigned short, std::__1::less<unsigned short>, std::__1::allocator<unsigned short> >*, std::__1::set<unsigned short, std::__1::less<unsigned short>, std::__1::allocator<unsigned short> >*, std::__1::set<unsigned short, std::__1::less<unsigned short>, std::__1::allocator<unsigned short> >*) const
sym.imp.art::ProfileCompilationInfo::GetProfileDexFileKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
sym.imp.art::ProfileCompilationInfo::DexFileData::AddMethod(art::ProfileCompilationInfo::MethodHotness::Flag, unsigned long)
sym.imp.art::ProfileCompilationInfo::GetOrAddDexFileData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)
sym.imp.art::GetVdexFilename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
sym.imp.art::ArtDexFileLoader::OpenZip(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::vector<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> >, std::__1::allocator<std::__1::unique_ptr<art::DexFile const, std::__1::default_delete<art::DexFile const> > > >*) const
sym.imp.art::DexFileLoader::IsMagicValid(unsigned char const*)
sym.imp.art::DexFileLoader::IsVersionAndMagicValid(unsigned char const*)
sym.imp.art::CompactDexFile::IsMagicValid(unsigned char const*)
sym.imp.art::ArtDexFileLoader::Open(unsigned char const*, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, art::OatDexFile const*, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::unique_ptr<art::DexFileContainer, std::__1::default_delete<art::DexFileContainer> >) const
sym.imp.art::DexLayoutSections::Madvise(art::DexFile const*, art::MadviseState) const
sym.imp.art::dex::tracking::RegisterDexFile(art::DexFile const*)
sym.imp.art::DexFile::DisableWrite() const
sym.imp.art::ArtDexFileLoader::Open(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, art::MemMap&&, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
sym.imp.art::DexFileLoader::OpenWithDataSection(unsigned char const*, unsigned long, unsigned char const*, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, art::OatDexFile const*, bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const
sym.imp.art::DexFile::GetProtoIndexForCallSite(unsigned int) const
sym.imp.art::DexFile::FindTryItem(art::dex::TryItem const*, unsigned int, unsigned int)
sym.imp.art::DexFile::FindStringId(char const*) const

执行后报错

安卓4.4的盒子,执行后报错,但是目标apk却成功执行了,这玩意是某60加固的,assets目录下有libjiagu.so和libjiagu_x86.so
具体信息如下:
frida -H 192.168.1.2 -f com.fengyun.live -l dexDump.js

Connected to 192.168.1.2 ([email protected])

Failed to spawn: java.lang.SecurityException: Not allowed to start activity Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.fengyun.live cmp=com.fengyun.live/com.tv.core.main.LiveActivity }

在/data/data/com.fengyun.live/目录下也没找到dex或者odex文件,门外汉问问要怎么搞……

关于免root的的frida执行咨询。

对于免root脱壳大佬有什么建议吗?我现在能注入免root xposed框架,也能System.load 运行frida服务器。但是执行你说的这个指令就提示Failed to spawn: unable to spawn other apps when embedded

关于基于frida的脱壳有一些不了解

首先十分抱歉我没有看雪的账号所以不知道怎样能联系您只好在这里提issue了

我想问一下对于乐固的方法里全是nop的问题。dstmath和xiaokangpwn的版本可以获取方法吗?还有就是这个方法(以及另外两个方法)适配所有手机cpu的架构吗?(我的是arm64v8的)

感谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.