下面我们再跟大家分享一下App安全加固的相关内容。App存在风险,我们也知道要去检测的内容了,那有问题之后要怎么办呢?有什么办法来避免这些问题?修复这些问题呢?
Android安全加固技术
源码加固
Java源码加固-dex文件加壳保护、dex函数抽取加密;
SO库加固-SO文件加壳保护、高级深度混淆、ELF数据隐藏;
Html加固;
资源文件加固-音视频加密、配置文件和数据库加密;
运行环境加固
完整性保护-签名、防二次打包;
防调试保护-双向ptrace保护、反IDAPro调试;
防篡改保护-防数据破解分析、防数据劫持;
反编译保护-反apktool、反ApkIDE、反jd-gui;
模拟器识别;
ROOT检测;
业务场景加固
密钥保护;
安全键盘;
防界面劫持;
反外挂;
清场;
通信协议加密;
iOS加固技术
高级混淆
字符串加密
指令多样化
基本块分裂
控制流引入
跳转指令插入
控制流扁平化控制流间接化
安全防护SDK
越狱检测
重签名检测
Cydia Substrate框架检测
逆向工具检测
代码注入框架检测调试器检测
安全键盘SDK
键盘字符混排
输入无回显
通过分析Android和ios两大主流平台的加固技术,这里给大家推荐了一个App整体的安全加固方案。通过静态层面、动态层面以及数据层面,多个层面全方位立体式地去进行加固防护。
静态层面,有防逆向,如DEX文件的保护、SO文件的保护、SDK的保护以及JS、H5、HTML等文件的保护,利用一些加固技术去做防逆向的保护。静态层面还有签名保护,主要是防篡改,一个是代码防篡改,一个是资源文件防篡改。将防篡改技术加入进来,嵌入之后,就能实现静态层面的防篡改。
动态层面主要是防调试,一般是通过动态调试来查看你这个平台的逻辑是什么样的,要有防动态调试的技术。还要放进程调试、防内存DUMP、防模拟器、防HOCK攻击等。
数据层面要有数据的防泄漏,像针对内存数据的保护,内存中的数据有没有加密?使用完后有没有及时释放?日志数据,有没有存储一些关键的数据?有没有存储一些敏感数据?以及在数据传输的过程中的一些加固技术要加入进来。针对页面数据的保护,有应用防截屏、应用防劫持、安全键盘等。