反编译apk(手机如何反编译apk)
APP客户端作为直接和用户接触的媒介,是公司是非常重要的信息资产。但由于系统本身的一些风险和破解工具的泛滥,使得破解移动应用变得易如反掌。移动应用安全性成为了大家都在的焦点。并在此基础上探讨如何做相关的安全测试。
本篇将要介绍是反编译的技术手段以及反反编译的一些基本策略。
未经安全处理应用的java层反编译效果,代码及逻辑清晰可见,毫无秘密。
未经安全处理的native二进制文件反编译效果,代码逻辑及执行流程清晰明了。
通过上面的图可以看到,无论是java层代码还是c层代码,如果不加以适当的防护,都可以被反编译工具轻易的读取信息。
经过反编译后,我们实际上拿到的对应java层的代码其实是smali代码。它是用于Dalvik(Android虚拟机)的反汇编程序实现的。
OLLVM(Obfuscator-LLVM)是旨在提供一套开源的针对LLVM的代码混淆工具,以增加对逆向工程的难度。它是基于LLVM实现的,LLVM是一个编译器框架,并且得益于LLVM的设计,OLLVM适用LLVM支持的所有语言(C, C , Objective-C, Ada 和 Fortran)和目标平台(x86, x86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ, 和 XCore)。
下图展示了一个加固后的应用反编译情况,原始代码均被隐藏了,只展示壳应用的部分代码。壳的解密代码则全部被放进了native层中,这样可以提高应用被破解逆向的难度。
不过值得注意的是,给应用套一层壳后,会存在部分兼容性问题,这都要“归功”于Android系统及机型的多样性。
3.3 其他方案
核心代码由c/c 层面实现。经过编译的c/c 代码会生成一个ELF格式文件。想要分析这种格式的文件,要比分析java难度大得多,而且会牵扯到大量汇编语言知识点。而且ELF文件本身也可以被“修改”、“加固”,例如抹去section信息等,同时又不影响其加载过程。通过这些手段,可以让静态分析的难度大大的提升。
还有一些其他的方案,如dex加固、动态加载等等。它们背后的原理其实都是一样的,对关键代码、文件进行修改、隐藏,只有在应用运行的时候才开始解密并执行。
4、安全性测试
基于这些反编译工具特点及反反编译的策略,我们就可以组织与其对应的反编译安全测试。
1、应用是否能够被常用的反编译工具识别,并且得到核心代码。
2、应用是否对代码进行了混淆,是否可以轻易还原逻辑。
3、应用是否采用了加固措施。
相关推荐
- 湖北三江航天建筑工程有限公司以 60925996.99 元中标红林总装厂房二期工程
- 江西省天久地矿建设集团有限公司中标龙里县城区排涝工程勘测
- 北京中和联信供应链管理有限公司中标山地农业科技创新基地植物表型研究设备采购及伴随服务(重新招标)项目,中标金额 7764000 元
- 霸州市佳理鑫五金制品厂中标新乐市第三中学采购项目
- 河北泽辉市政工程有限公司等为路南区乡村振兴环境综合治理项目(一期)一标段工程总承包(EPC)(二次)中标候选人
- 河北石府建设工程有限公司10110736.93元中标高铁片区景观提升项目施工三标段
- 中基恒源建设有限公司中标高铁片区(含新华商业广场)景观提升项目施工五标段,中标价 13430852.95 元
- 九芝堂换帅完成工商变更
- 山西建设投资集团有限公司为大宁县水果供应链基地运营配套建设项目施工(二次)第一中标候选人
- 浙江宁慈建设工程有限公司以97028327元中标慈溪市城市生活垃圾收转运一体化建设项目(一期)
