Android安全防护之旅---字符串批量加密工具(AndStringGuard)原理介绍

一、支付宝防护策略

现在很多应用在为了安全对应用做了很多防护方式,之前我也介绍了很多防护策略:Android中几行代码让你的应用变得更加安全;文中也提到了应用安全防护的最终目标是防止别人看到你的代码,我们也知道这里的最终方式都是加固操作,但是加固有一些缺点,而这些确定导致现在很多公司应用并不会去选择他,所以一些其他的防护策略就出来了,包括防hook,防调试等操作。今天我们再来看一下如何把应用中的常量字符串信息进行加密,这个意义还是很大的,而这个主要是看到支付宝应用中是这么做的:

640?wx_fmt=png

看到支付宝内部的字符串信息全部使用Base64进行编码操作了,这样做的目的也很简单,因为我们在进行反编译破解的时候如果是这么直接的字符串信息,那么对于破解就太简单了,我们可以直接全局搜索字符串信息很快定位到我们想要的地方,如果这种加密操作我们全局搜索字符串信息肯定是找不到的。但是支付宝这种的加密算法就太简单了,我们可以写一个解密方法然后在直接操作即可。

 

二、工具编写

我们可能知道把代码中的字符串常量进行加密之后可以防护,但是如果项目中的常量字符串很多,这样手动去替换是很麻烦的,而且每个开发者不可能总是记住这件事的,无意中就定义了一个常量就操作了,所以我们需要写一个自动脚本在项目编译期间自动替换即可,这个工具就是我们本文需要介绍的重点。工具其实不难,因为是编译器,那么我们可能需要对编译后的class文件进行操作,我们知道Android中项目编译流程如下:

640?wx_fmt=png

我们写好这个工具然后利用gradle脚本,在编译后的class文件做操作即可,那么这个工具其实也很简单,输入class文件,输出就是加密之后的class文件了,为什么操作class文件呢,首先操作class文件有一个很好的工具asm和javassist,本人偏向于asm,著名的热修复框架Robust就是依靠这个工具进行操作的:Android热修复框架Robust原理解析

『ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值