0
点赞
收藏
分享

微信扫一扫

【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )

文章目录

  • 一、加壳特征识别
  • 1、函数抽取 与 Native 化加壳的区分
  • 2、VMP 加壳与 Dex2C 加壳的区分

一、加壳特征识别

1、函数抽取 与 Native 化加壳的区分

​函数抽取 与 Native 化加壳的区别 :​

  • ​函数抽取 :​ 没有将函数 Java 代码转为 Native 代码 , 函数体无效 ;
  • ​VMP 加壳 :​ 将函数 Java 代码转为 Native 代码 ;
  • ​Dex2C 加壳 :​ 将函数 Java 代码转为 Native 代码 ;

如果函数是 非 Native 函数 , 并且 函数体 无效 , 说明这是 函数抽取 加壳 ;

如果函数是 Native 函数 , 说明这是 VMP 加壳 或者 Dex2C 加壳 ;

2、VMP 加壳与 Dex2C 加壳的区分

VMP 壳的核心原理是 Dalvik 解释器 , 对于每个 VMP 保护的函数来说 , 都有一个 VMP 解释器 ; 只有一个解释器 , 所有的函数共享这个解释器 ; 这样就导致了 每个函数的逻辑都很相似 ;

​函数的注册地址相同 ;​

Dex2C 壳对每个 Java 函数进行词法句法分析 , 生成对应的 C 代码 , 然后编译成 so 动态库 , 每个函数的内容都是不同的 ;

​函数的注册地址不同 ;​

​VMP 加壳与 Dex2C 加壳的区分 :​

  • 函数的 注册地址相同 , 并且 函数逻辑相似 , 则使用的是 VMP 加壳 ;
  • 函数的 注册地址不同 , 并且 函数逻辑不相似 , 则使用的是 Dex2C 加壳 ;
举报

相关推荐

0 条评论