首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 )

文章目录 一、禁用 dex2oat 简介 二、TurboDex 中禁用 dex2oat 参考示例 一、禁用 dex2oat 简介 ---- 在上一篇博客 【Android 逆向】ART 函数抽取加壳 (...ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 ) 分析了 dex2oat 机制 的运行过程 , 即将 Dex 字节码文件 转为 Oat 字节码文件 , 其目的是为了 提高运行效率...禁用 dex2oat , 在 【Android 逆向】ART 函数抽取加壳 ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 ) 二、禁用 dex2oat 机制源码分析 章节...Hook 【Android 逆向】ART 函数抽取加壳 ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 ) 博客中介绍的过程 , 实现了 禁用 dex2oat 的功能 ; 其中文介绍如下...函数实现的 , 与 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 ) 二、禁用 dex2oat 机制源码分析 4、exec_utils.cc

45040
您找到你想要的搜索结果了吗?
是的
没有找到

【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )

文章目录 前言 一、搜索 dex2oat 源码 二、dex2oat.cc#main 主函数源码 前言 在 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc...中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 ) 博客中 , 将 dex 文件编译为 oat 文件 , 编译过程是由 dex2oat 可执行程序完成的 , 这是一个有...main 函数的可执行程序 ; 一、搜索 dex2oat 源码 ---- 进入源码搜索页面 http://aospxref.com/android-8.0.0_r36/ , " Project " 中...源码路径是 /art/dex2oat/dex2oat.cc ; 二、dex2oat.cc#main 主函数源码 ---- dex2oat.cc#main 主函数中 , 调用了 art::Dex2oat...注:Dex2Oat类 // 在这种情况下,不应破坏运行时。 if (!

25030

【胖虎的逆向之路】04——脱壳(一代壳)原理&脱壳相关概念详解

() 最后进入了Dex2Oat,这就进入了Dex2Oat的编译流程 反之如果我们在下面Dex2Oat的流程中通过Hook相关方法或execv或execve导致dex2oat失败,我们就会返回到OpenDexFilesFromOat...编译流程 Dex2oat是google公司为了提高编译效率的一种机制,从Android8.0开始实施,一些加壳厂商实现抽取壳往往会禁用Dex2oat,而针对整体加壳没有禁用的Dex2Oat也成为了脱壳点...,而如果我们不禁用dex2oat,execve函数是用来调用dex2oat的二进制程序实现对dex文件的加载,我们这时候找到dex2oat.cc这个文件,找到main函数 /art/dex2oat/dex2oat.cc...Dex2Oat /art/dex2oat/dex2oat.cc static dex2oat::ReturnCode Dex2oat(int argc, char** argv) { *****...********************************* dex2oat::ReturnCode setup_code = dex2oat->Setup(); dex2oat::

47520

【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat 操作 HOOK 点介绍 | 集成 InLineHook )

文章目录 一、禁用 dex2oat 操作 HOOK 点介绍 二、集成 InLineHook 在 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat...机制源码分析 ) 【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 ) 两篇博客中 , 简单介绍了 禁用 dex2oat...机制 的原理 , 下面开始 实现 dex2oat 禁用功能 ; 一、禁用 dex2oat 操作 HOOK 点介绍 ---- dex2oat 机制 的实现流程中 , 其中需要调用 exec_utils.cc...exec_utils.cc#ExecAndReturnCode ; 二、集成 InLineHook ---- 在上个章节介绍的 exec_utils.cc 源码 编译后的二进制代码被封装到了 libc 库 中 ; 禁用 dex2oat

46010

【Android 逆向】ART 函数抽取加壳 ⑤ ( unistd.h#execve 函数分析 | 使用自定义的 myexecve 函数替换 libc.so#execve 函数 )

execve 函数分析 二、使用自定义的 myexecve 函数替换 libc.so#execve 函数 在 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat...机制源码分析 ) 【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 ) 两篇博客中 , 简单介绍了 禁用 dex2oat...机制 的原理 , 下面开始 实现 dex2oat 禁用功能 ; 在 【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat 操作 HOOK 点介绍 | 集成 InLineHook...字节码文件 , 这里将需要拦截的字节码都放在 dex2oat 目录中 , 检测到 dex2oat 目录 , 就退出 ; 不需要拦截的 , 直接调用原函数执行 ; 源码示例 : // 用于接收 Android...目录中 if (strstr(__file, "dex2oat")) { return 0; } else { // 不需要拦截的 , 直接调用原函数执行

34220

【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 )

机制 : 如果 禁用 dex2oat 的编译过程 , 则 恢复 被抽取的 函数指令 , 不在受 该条件限制 , 不是必须在 dex2oat 之前恢复 , 可以稍晚一些再恢复函数指令 ; 如果选择第一种方案..., 在 dex2oat 之前进行恢复 , 这没有任何意义 , dex2oat 编译后 , 生成的 oat 文件是完整的 , 此时 可以 完整的将 oat 文件 dump 到 SD 卡中 , 基本等于没有加固..., 还是一个一代壳 ; 因此 , 大部分加固厂商 , 选择 禁用 dex2oat 机制 ; 这样处于安全考虑 , 牺牲了应用的运行效率 ; 二、禁用 dex2oat 机制源码分析 ---- 在之前的博客章节...// TODO:为什么dex2oat会这样做?...Dex2Oat(args, error_msg)) { // 手动删除oat和vdex文件。这样可以确保没有垃圾 // 如果进程意外死亡,则剩余。

40330

Android各版本虚拟机的Dexopt区别

在ROM OTA或者恢复出场设置后 , 会要进行dex2oat根据当前ROM进行重新编译生成.oat文件....优点 : 运行时省电 , 运行速度快 缺点 : 由于安装APK时触发dex2oat , 需要编译成native code , 导致安装时间过长 由于dex2oat生成的文件较大 , 会占用较多的空间...目的是为了避免不必要的验证Dex文件合法性的过程,例如首次安装时进行dex2oat时会校验Dex 文件各个section的合法性,这时候使用的compiler filter 为了照顾安装速度等方面,并没有采用全量编译...,当app启动后,运行一段时间后,收集了足够多的jit 热点方法信息,Android会在后台重新进行dex2oat, 将热点方法编译成机器代码,这时候就不用再重复做验证Dex文件的过程了 .odex...Compiler-fileter 在dex2oat的时候 , 会有一个目标编译类型 , 会有以下几类 , 根据时机不同dex2oat的编译方式也会不同 verify:只运行 DEX 代码验证。

3.1K21

【Android 逆向】ART 函数抽取加壳 ④ ( 对 libc.so#execve 函数进行内联 HOOK 操作 )

文章目录 一、对 libc.so#execve 函数进行内联 HOOK 操作 在 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析...) 【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 ) 两篇博客中 , 简单介绍了 禁用 dex2oat 机制...的原理 , 下面开始 实现 dex2oat 禁用功能 ; 在 【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat 操作 HOOK 点介绍 | 集成 InLineHook ) 博客中...函数 定义在 bionic/libc/include/unistd.h 中 , 在 exec_utils.cc 中进行调用 ; 使用 在 【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat

49720

【Android 逆向】ART 函数抽取加壳 ⑥ ( 函数抽取后续操作 “ 还原被抽取的函数 “ | LoadClass 类加载 | LoadClassMembers 类成员加载 )

LoadClass 类加载操作 三、class_linker.cc#LoadClassMembers 类成员加载操作 在 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat...机制源码分析 ) 【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 ) 两篇博客中 , 简单介绍了 禁用 dex2oat...机制 的原理 , 下面开始 实现 dex2oat 禁用功能 ; 在 【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat 操作 HOOK 点介绍 | 集成 InLineHook...下面还需要 在源码中找到一个时机点 , 还原 被抽取的函数 ; 函数抽取加壳 操作 , 打包到 APK 应用中的 Dex 字节码文件中函数是被抽取出来的 , 执行前必须将函数还原 , 第一步 关闭 dex2oat

29920

大厂Android启动优化-出其不意的优化手段

3 dex2oat Android ART虚拟机后,可以将dex文件预先的翻译处理成机器码直接运行,在Android 5 - 7版本,dex处理是在app安装的时候处理的,但是由于dex2oat性能影响较大...,安装的时候将耗时过长,Android 7后改为安装的时候不做翻译,运行时还是解释执行,运行时的时候记录运行的函数等信息,在手机闲置的情况下去把这些热方法做dex2oat,下次运行直接运行机器码。...但是系统判断闲置的条件比较苛刻,导致大部分情况下app没有被dex2oat,另外互联网app快速发展,发版速度较快,所以dex2oat的利用率低,通过app自己手动调用系统dex2oat达到快速将app...系统记录热方法的数据文件存在 /data/misc/profiles/cur/0/packageName/primary.prof下,我们可以通过FileObserver监听这个这个文件修改判断是否需要dex2oat...dex2oat可以通过shell命令执行cmd package compile -m speed-profile -f packageName 4 Redex Linux 文件系统从磁盘读文件的时候,会以

1.3K20

Android虚拟机的JIT编译器

原理 在APK安装的时候,PackageManagerService会调用dex2oat通过静态编译的方式,来将所有的dex文件(包括Multidex)编译oat文件。...罗老师的图 优点与缺点 优点 运行时会超级快 在运行时省电,也节省各种资源 缺点 在系统更新的时候,所有app都需要进行dex2oat的操作,耗费的时间太长 在app安装的过程中,所耗费的时间也越来越长...编译以及优化来提升经常使用的这些功能 避免为了一些不常用的代码而付出资源(编译、存储等等) 混编模式的实现 在JIT的过程中,生成Offline的Profile Offline Profile的文件格式 使用AOT增强过后的编译器(dex2oat...64位的So,并且对于加壳的So会出现一些问题 参考资料 Understanding JIT Compilation and Optimizations Android profile-guided dex2oat

1.4K40

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券