Android应用实现「类方法指令抽取方式」加固方案原理解析

一、前言

Android中加固方案一直在进步,因为新的加固方案出来就会被人无情的破解脱壳了,从第一代加固方案落地加密dex文件,第二代加固方案不落地加密dex文件,在到第三代加固方案类方法抽取,以后后面的更多加固方案来说都是安全的进步,关于脱壳方案网上有很多资料,但是加固方案却没多少资料,因为有些加固方案是一些加固公司的商业机密不可泄露的,所以我们现在看到的网上加固方案还是以前的加固方案,不了解以前的加固方案同学,可以去看我写的逆向大黄书「Android应用安全防护和逆向分析」有详细介绍,而本文就来介绍如何实现类方法抽取方案来实现应用加固。


二、指令抽取方案

首先不多说,这种方案依赖的技术就是拦截系统的加载类函数,然后进行类方法指令还原。所以这个技术必须了解,好在我们在之前一篇文章中已经详细介绍了:如何在native层拦截系统函数实现应用方法指令篡改,不了解的同学可以看这篇文章:Android中通过Hook系统函数实现运行时篡改方法执行逻辑;本文的技术是依赖于这篇文章,如果这篇文章没看明白,那么本文将很难看懂。一定要先看这篇文章。不多说了,我们在介绍加固方案主要从两方面入手,一方面是如何进行指令抽取,一方面是如何进行指令还原,所以下面先来介绍如何进行类方法的指令抽取功能。


我们还是先用之前的工程作为案例:


在这个类中,我们定义了一个获取密码的方法:


现在为了安全,我们先将这个方法信息置空,可以先用010Editor工具查看这个方法的指令信息,可以下载Dex模板即可。

看到这个方法包含了3个指令,那么我们如何将其设置成0呢?这里就需要自己写个工具了,因为我们不能依赖于这个工具手动去置空,那就太不智能了。这个就需要借助之前介绍dex文件格式解析的时候那个源码了。我们需要做一下改动就可以实现这个功能。dex文件格式解析源码下载地址:

https://github.com/fourbrother/parse_androiddex

是个java工程,下载之后直接导入Eclipse即可。代码逻辑不做分析了,不了解的同学看之前的一篇文章:Android中Dex文件格式解析;我们的目的就是想置空指定方法的的指令数据,那么直接去解析方法指令的那块逻辑即可:

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值