赞
踩
将java代码转换为Dalvik字节码
将res资源文件、AndroidManifest.xml等配置文件编译为二进制文件
将DEX文件转换为jar包或者Smali文件
将二进制资源文件还原为资源源码文件
编译与反编译是相对的过程,转换过程分别由编译器和反编译器实现。
ApkTool命令使用:
执行java -jar apktool.jar d demo.apk
命令,会生成以下文件和目录。
dex2jar命令使用:
执行d2j-dex2jar.bat demo.apk
命令,生成jar包。
jd-gui配合dex2jar使用,用来查看dex2jar生成的jar包
逆向分析:漏洞挖掘、协议分析
二次打包:盗版、破解。
代码混淆:Java代码、C/C++代码、JS/HTML代码
应用加固:Dex文件、SO文件、资源文件。
Dex加固方案演进
动态加载–>dex内存加载–>dex指令抽取–>虚拟机加固–>java2c>
整个演进方向是从Java到C/C++,本地方法的安全性大于Java。 粒度也由方法缩小到指令。
壳和被加固的dex耦合性增加,增大脱壳难度。
Android加壳框架原理为Proxy/Delegate Application,即使用自定义的代理Application类作为程序入口(修改AndroidMani.xml),在代理Application中完成壳的解密操作,最后启动原来的Application。
ProxyApplication:框架会提供一个ProxyApplication的抽象基类(abstract class),使用者需要继承这个类,并重载其initProxyApplication()方法,在其中改编surrounding,入替换ClassLoader等。
DelegateApplication:即应用原有的Application,应用从getApplication()等方法中取的的都是DelegateApplication。
在ProxyApplication中实现如下内容
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。