本文主要介绍什么是反编译、常用的反编译工具以及如何防止反编译等内容。
1.什么是反编译?
编译是指将某种编程语言写成的源代码转换成另一种编程语言;反编译是指是将已编译好的程式还原到未编译的状态,也就是找出程序的源代码。不法分子通过对APP反编译,可以推测出APP的算法、原理、结构、逻辑、敏感数据等核心要素,进而达到破解、篡改、广告植入、二次打包、仿冒/钓鱼应用等目的。
2.常用的APK反编译工具:
baksmali/smali: baksmali 能将二进制 dex 文件转化为 smali 文本文件用于分析,smali 则能将 smali 文件重新编译为 dex 文件;
Apktool : 整合了 baksmali/smali 用于处理 dex 文件, 另外实现了 res 资源文件(比如layout / strings等)的反编译;
AxmlPrinter : 用于将二进制形式的 AndroidManifest.xml 转换为文本形式的 AndroidManifest.xml;
dex2jar: 能将 dex 转化为 jar 文件;
jd-gui: 能将 jar 文件反编译为 java 源代码;
Ida Pro: 主要用于反编译 Apk 中的 So 文件,也支持将 dex 文件反编译为类似smali 语法的文本形式指令。
从以上反编译工具可以看出,反编译工具主要分三种功能:
反编译资源,如 AndroidManifest.xml、layout.xml;
反编译 Dex 文件,或者进一步将 Dex 文件转换为 Java 代码;
反编译 So 文件。
3.如何防止反编译
通过对移动应用进行全面加固保护,可以全面提升APP安全等级,有效防止应用被逆向分析、反编译、二次打包等,点击免费试用Android应用加固服务。
关于如何有效防止反编译,可以通过以下文章详细了解: