原文链接:https://blog.csdn.net/justFWD/article/details/51164281

某梆加固企业版还是会调用系统的dvmDexFileOpenPartial 接口,因此可以这里添加hook

51df6008-52cd50__unpackedDex.dmp即是dump出来的dex,拖到jeb里,可以看到这些函数都是空的

汇编显示,大片的指令都为nop,这些指令都被抽掉了,执行之前才会还原。

它hook了dvmResolveClass还动态加解密指令

可以看到,它执行了两次___Decrypt_dvmResolveClass,解密完等原始dvmResolveClass执行完后,还会再把指令清掉。

之前网上有还原娜伽抽代码的教程,是把解密算法还原出来,用算法来解密的,不过___Decrypt_dvmResolveClass函数的流程图如下图所示:

还是挺复杂的,弄出算法的成本相当高。

还是另想办法。第C838行的BLX R3就是在调用原始dvmResolveClass函数,这时指令已经被还原了。那么我们在这个点做hook,把代码还原出来。

  先来看下dvmResolveClass函数的实现

输入参数有ClassObject* referrer, u4classIdx,这里的classIdx经过测试,似乎经常飘乎不定,并不可用。需要通过referrer->descriptor得到类名后,再定位到对应的class_data_item

dexClsIndex是通过类名计算出来的实际classIdx,patchDexMethod通过referrer将Method里面的指令写到第一步dump出来的dex里的对应位置上。

虽然大部分类都的代码都被还原了,但还是存在这样的类:

还有一些类没有被还原出来,因为dvmResolveClass只会还原加载过的类,对于那些没有加载的类,也是无能为力。 加载的时候会自动调用dvmResolveClass,需要想办法让所有的类都预先加载起来。可以Hook Dalvik_dalvik_system_DexFile_defineClassNative函数,原始dex加载时,枚举所有的DexClassDef,对所有的class,调用dvmDefineClass进行类加载。

这样会就把之前没有还原到的类给补全。

(创建了一个Android逆向分析群,欢迎有兴趣的同学加入,群号码:376745720)

某梆企业版加固脱壳及抽代码还原方法--dvmResolveClass相关推荐

  1. 某梆企业版加固脱壳及抽代码还原方法

    某梆加固企业版还是会调用系统的dvmDexFileOpenPartial 接口,因此可以这里添加hook 51df6008-52cd50__unpackedDex.dmp即是dump出来的dex,拖到 ...

  2. 梆梆企业版加固技术之防篡改剖析

    (本文仅限于技术讨论,不得用于非法途径,造成不良后果,与作者无关) 本篇主要介绍梆梆安全加固防篡改的原理和方法.选择梆梆,是因为其在防篡改方面是比较突出的.如果后续有时间会陆续将梆梆企业版使用的加固技 ...

  3. php加固apk,脱壳再打包某梆梆免费加固APP

    Apk: 梆梆免费加固apk,非2019最新版. 准备工具: Apktool dex-tools-2.1-SNAPSHOT smali-2.3.4 DexExtractor jd-gui 整体也是这个 ...

  4. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )

    文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...

  5. python 工程结构加固_【安卓逆向】360加固-脱壳修复

    360加固-脱壳修复 最近花了一些时间学习逆向脱壳,这方面一直投入的时间比较少.样本经过某加固宝进行加固,这里简单记录一下脱壳过程和思路,感谢某数字公司对安全加固的无私贡献,让我有机会小小的提高一下这 ...

  6. 基于dalvik模式下的Xposed Hook开发的某加固脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109 这段时间好好的学习了一下Android加固相关的知识和流程也大致把A ...

  7. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmContinueOptimizati() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | D ...

  8. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )

    文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...

  9. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )

    文章目录 前言 一.DexFile.loadDexFile 函数分析 二.DexFile 构造函数分析 三.DexFile.openDexFile 函数分析 前言 上一篇博客 [Android 逆向] ...

最新文章

  1. 只有你想不到,没有它做不到——可随时变身的模块化机器人
  2. 古代password
  3. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...
  4. 开发日记-20190803 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 19
  5. NODE-WEBKIT教程(12)全屏
  6. centos ezhttp mysql_Windows 访问CentOS上Mysq配置说明
  7. C++总结笔记(五)——构造函数和析构函数
  8. linux spidev 应用_嵌入式Linux设备树语法总结
  9. Thinking in Java Reading Note(5.初始化与清理)
  10. 图像处理——alpha融合
  11. 基本的广告法违禁词、违规词以及敏感词大全
  12. 简述c、c++和java三大语言特性
  13. sql函数—Lpad、Rpad
  14. Python爬取小姐姐美照
  15. 检测屏幕.html,15款html5响应式网站跨屏幕测试工具
  16. 台式计算机中的CPU指的是,电脑硬件认识之什么是电脑的CPU(cpu详细介绍)
  17. HMACSHA1 加密算法
  18. Placing Lampposts ,UVa 10859 树形dp
  19. java 1 2 等于_java 判断语句中一个等于号和两个等于号的区别是什么?
  20. 【Android实战】保存QQ账号与密码

热门文章

  1. Baby拍时尚大片,小露香肩秀完美侧颜,五官精致宛如芭比娃娃
  2. CentOS7安装Oracle 11gR2 图文详解
  3. 进程间的五种通信方式介绍
  4. 使用自定义字体包太大导致加载太慢解决办法 用font-spider字蛛解决自定义字体包太大的问题
  5. 2019零基础学Android第1课——Android开发环境搭建
  6. cmd代码表白_学会这些(滑动关机、应用多开、QQ微信消息攻击、表白神器),逼格瞬间提升1000倍...
  7. LQ0015 质因数个数【数论】
  8. wps excel中怎样对比两列中的数据,并且把相同的数据粘贴在结果列。
  9. 小红书用户消费心理及种草价值:后疫情时代消费心理研究
  10. tesla p100 linux,Ubuntu16.04深度学习开发环境配置(TeslaP100+cuda9.0+tensorflow)