提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:蒋永|2017-03-10 10:56:39.000|阅读 235 次
概述:Android应用安全这个话题如今已经变为越来越热门的话题,本文带大家简单梳理一下一些相关概念,如果有补充和看法, 欢迎在评论中指出来哦~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Android应用安全这个话题如今已经变为越来越热门的话题,本文带大家简单梳理一下一些相关概念,如果有补充和看法, 欢迎在评论中指出来哦~
Android开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java应用非常容易被反编译,Android自然也不例外。只要利用apktool等类似的反编译工具,就可以通过安装包获取源代码。Google为了保护开发者的知识产权,为Android提供了ProGuard混淆方案,以增加反编译后源码阅读,但对于Android开发老司机和逆向工程师来说,解读还原出源代码只是时间问题。
ProGuard是针对Java应用的保护,并不是专门针对Android应用的,Android虽然使用Java开发,但是毕竟不是跑在JVM上,所以安装包结构和普通的Java应用还是区别多多。如果你对免费的ProGuard放心不下,可考虑试试付费的混淆方案DexGuard,除了拥有ProGuard的功能外,还包含资源混淆,字符串加密,类加密和dex文件分割等。
虽然代码混淆是最为基础的保护措施,不过国内仍有不少应用还是裸奔的,其中还包括一些大厂应用(此处不表)。
Android黑产里面,有一个叫做二次打包,也称为重打包。即通过反编译正版应用后,可以获得smali源码,往其中注入代码或者修改相应业务逻辑后,再利用新的签名进行重新打包,并发布到应用市场去,很多无良开发者就是通过这种方式去破解一些付费应用或者往其中注入广告代码来获利。简单梳理一下重打包的基本流程:
为了与二次打包做对抗,可以在应用内的关键功能入口增加校验签名的检测,如果发现应用签名非正版,则强制关闭应用或者限制用户使用。加签名校验代码时,可以考虑:
当然,不要以为放在JNI就高枕无忧,对于JNI层,同样可以进行代码注入,来暴力破解你签名校验的逻辑,只不过相比Java层的,JNI层所需成本更高,这样也就能拦截掉一部分逆向人员的歪主意。
加壳的原理是通过加密原应用的安装包中的dex文件,其主要操作方式大致如下:
这种通过隐藏dex文件的方式加壳方式,最终是利用ClassLoader在内存中解密并进行动态加载运行。而如果是修改dex文件的加壳方式,其主要是抽取DexCode中的字节码指令后用零去填充,或者修改方法属性等操作,其修复时机则是运行时在内存中做相应的修正工作。
通过加壳得到的安装包如果不进行脱壳操作,逆向人员就无法拿到真正的dex文件,也就无从分析。这里可以看看使用360加固的一个应用的结构在没脱壳前的安装包结构只有寥寥几个类,而正真的安装包中的dex文件则被藏起来了,这进一步加大了逆向的难度。关于加壳,市面上已经有很多成熟企业加固方案可以使用,如梆梆安全、爱加密、360加固保等,如果不是专门研究这块的开发者去自行开发一套加壳方案,显然不太现实。
加壳也只是提高被逆向的门槛,对于功力不够的逆向开发者而言,只能就此作罢,而对于逆向老鸟来说,脱壳同样这是外包时间问题罢了。此外,对应用加壳还要留意平台兼容性问题,如此前某著名加固产品就出现过在ART虚拟机不兼容问题,以及将会影响项目使用某些热修复技术。
你是不是曾以为没有拿到源代码就不可以调试Android应用了?然而并不是,只要反编译后拿到smali代码工程,再加上smalidea调试神奇,分分钟在Android Studio调试应用给你看,具体操作并不复杂,可以参照我文末提供的资料。即使你把核心代码放到了JNI层,我也可以祭出神器IDA Pro继续调试给你看,更何况,实际开发中能放进JNI层实现的核心代码实在有限。
为了对抗动态调试,可以考虑在源码中随意穿插相关的检测代码,在检测到动态调试时,直接进程自杀,异常退出虚拟机,大致实现如下:
/**
* 检测动态调试
*/
public void detectedDynamicDebug(){
if (!BuildConfig.DEBUG){
if (Debug.isDebuggerConnected()){
//进程自杀
int myPid = android.os.Process.myPid();
android.os.Process.killProcess(myPid);
//异常退出虚拟机
System.exit(1);
}
}
}
以上只是一个简单的例子,市面上很多加固产品做了更多的动态调试对抗措施。
数据保护这个主要例举以下几点:
资源保护同样可以提高逆向分析的难度,但个人觉得只对逆向小白有效,可以考虑引入试试,目前比较知名的方案就是微信和美团两家的了。
应用安全的攻防就是这么一个相爱相杀又相辅相成的过程,对于客户端能做到的安全防范也是有限的,更多的还是应该结合后台业务分析来实现相应的对抗机制,对于中小企业而言,没有专门的安全人员去研究对抗方案,选择市面上成熟的加固方案是一个不错的选择。而对于大企业来说,内部早已有了自己的安全中心,自然也有自己的一系列对抗方案,包括在后端生成每个用户的画像来判别用户类型等等。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
CEETRON Envision是一款功能强大的CAE数据分析与可视化工具包,凭借其卓越的数据提取、分析、渲染能力,能够帮助工程师和开发人员提升分析效率、改善工作流程,并通过高效的数据共享报告和生成功能,进一步优化团队协作与决策过程。
Burp Suite是一款专业的Web应用安全测试工具,集成了Proxy、Scanner、Intruder等功能,帮助渗透测试人员识别和修复Web应用中的安全漏洞,是提升Web应用安全性和防护能力的必备利器。
2024年对于FastReport来说是充满挑战和收获的一年。FastReport在多个领域取得了重要突破和创新成果,不仅不断优化现有产品,
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢