前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】Dalvik 函数抽取加壳 ① ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )

【Android 逆向】Dalvik 函数抽取加壳 ① ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )

作者头像
韩曙亮
发布2023-03-30 09:39:32
1.6K0
发布2023-03-30 09:39:32
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

前言

函数抽取 加壳 , 是 二代壳 技术 ;

一、Dalvik 下的函数指令抽取与恢复


函数指令 抽取 : 进行函数抽取加壳 , 首先要熟悉 dex 文件的结构 , 需要定位 dex 字节码文件中 , 函数指令 的偏移地址 ; 将 dex 文件中的函数指令 , 先抽取出来 ;

函数指令恢复 : 可以选择在 下面的

2

个时间点 , 恢复函数指令 ;

二、dex 函数指令恢复时机点


1、dex 函数指令恢复

将 dex 中的函数指令 , 抽取出来后 , 还要在合适的时机 , 将抽取出来的函数指令恢复回去 ;

如果要针对 函数 抽取 加壳 的 应用 , 进行 脱壳 , 需要 找准 函数指令 恢复的时机点 ;

《Android中实现「类方法指令抽取方式」加固方案原理解析 | 作者 : 姜维》 博客中 , 选择的指令还原的时机是 native 层的 dexFindClass 时 ;

截图来自 《Android中实现「类方法指令抽取方式」加固方案原理解析 | 作者 : 姜维》博客
截图来自 《Android中实现「类方法指令抽取方式」加固方案原理解析 | 作者 : 姜维》博客

( 图片来自 《Android中实现「类方法指令抽取方式」加固方案原理解析 | 作者 : 姜维》 博客 )

2、Android 源码中搜索 dexFindClass 函数

在 Android 源码路径中 , 搜索上述 dexFindClass 函数 ;

进入 http://androidxref.com/4.4.4_r1 页面 , 搜索 dexFindClass 函数 , 该函数定义在 dalvik/libdex/DexFile.cpp#dexFindClass 中 ;

在这里插入图片描述
在这里插入图片描述

3、类加载流程 : 加载、链接、初始化

这里在回顾下之前的 类加载 流程 博客 : 【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 ) , 类加载的过程涉及到 加载 , 链接 , 初始化 操作 ;

在这里插入图片描述
在这里插入图片描述

在上述类加载流程中 , 有很多时机点可以选择 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、Dalvik 下的函数指令抽取与恢复
  • 二、dex 函数指令恢复时机点
    • 1、dex 函数指令恢复
      • 2、Android 源码中搜索 dexFindClass 函数
        • 3、类加载流程 : 加载、链接、初始化
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档