手机如何反编译apk 如何反编译

1、前言APP客户端作为直接和用户接触的媒介,是公司是非常重要的信息资产 。但由于系统本身的一些风险和破解工具的泛滥,使得破解移动应用变得易如反掌 。移动应用安全性成为了大家都在的焦点 。并在此基础上探讨如何做相关的安全测试 。
本篇将要介绍是反编译的技术手段以及反反编译的一些基本策略 。
2、反编译
未经保护的移动应用有许多弱点可被轻易攻击 。比如注入恶意软件,窃取知识产权,破解内购、二次打包,盗取敏感数据等等 。而这些操作的前提都是要进行 反编译 。
这里我用Android系统的apk安装包作为例子,展开来介绍下 。
2.1 常用的反编译工具
Android系统因其比较开放,且主要代码由java编写,所以相应的反编译工具比较多 。例如apktool、jeb、jdJUI、jadx、MT管理器等等 。iOS端则有IDA、Hopper之类的软件 。
2.2 反编译效果
未经安全处理应用的java层反编译效果,代码及逻辑清晰可见,毫无秘密 。

手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
手机如何反编译apk 如何反编译

文章插图
不过值得注意的是,给应用套一层壳后,会存在部分兼容性问题,这都要“归功”于Android系统及机型的多样性 。
3.3 其他方案
核心代码由c/c层面实现 。经过编译的c/c代码会生成一个ELF格式文件 。想要分析这种格式的文件,要比分析java难度大得多,而且会牵扯到大量汇编语言知识点 。而且ELF文件本身也可以被“修改”、“加固”,例如抹去section信息等,同时又不影响其加载过程 。通过这些手段,可以让静态分析的难度大大的提升 。
还有一些其他的方案,如dex加固、动态加载等等 。它们背后的原理其实都是一样的,对关键代码、文件进行修改、隐藏,只有在应用运行的时候才开始解密并执行 。
4、安全性测试
基于这些反编译工具特点及反反编译的策略,我们就可以组织与其对应的反编译安全测试 。
1、应用是否能够被常用的反编译工具识别,并且得到核心代码 。
2、应用是否对代码进行了混淆,是否可以轻易还原逻辑 。
【手机如何反编译apk 如何反编译】3、应用是否采用了加固措施 。

    推荐阅读