ARM平台代码保护之虚拟化背景:现在由于手机APP安全性缺乏导致用户敏感数据泄露的例子越来越多,尤其涉及经济金融、电商支付、手游类的案例不断,相关APP开发者应该从开发阶段到运营阶段都关注APP安全防护问题,今日在此分享一个与App安全防护的技术 —— 代码保护之虚拟化。1.1什么是代码虚拟化?我们知道程序的执行,是依靠CPU对于符合规范的指令集的解析处理。如果将原指令集通过自定义规范进行变形处理,生成新的指令集(称之为虚拟指令集),CPU将无法识别虚拟指令。此时若配合能够解析虚拟指令集的解释器(称之为虚拟机),就可以达到不直接通过CPU而是通过虚拟机来执行虚拟指令。这个过程就叫做代码的虚拟化。1.2为何将代码虚拟化?为了避免App资源被窃取、网络协议被破解、游戏被外挂摧毁等情况出现,越来越多的开发者不得不投入更多的时间和精力来考虑代码安全问题。但在移动平台上,攻和防却是不对等的,攻击者往往比防御者拥有更高级别的权限。随着技术材料的普及,使得移动平台的逆向分析变得容易,也有众多安全高手推出了很多加壳产品,虽说加壳以后对抗静态分析会有不错的效果,可是运行后会在内存里暴露原本的代码,从而使得攻击者抓住窗口期dump内存,再进行必要的修复,即可在IDA里面进行阅读分析。 将代码虚拟化后,可防止上述情况的发生,即使被dump,IDA也无法阅读被虚拟化的代码,因为程序运行时并不会将虚拟指令集还原为原生指令集。所以攻击者只能转而去分析逻辑复杂性极高的虚拟机。这样大大地增加了代码分析的难度和所需要的时间,若配合混淆等手段,相信绝大部分攻击者会望而却步。当然,为了相对的安全也会付出相对的损失。虚拟指令集的执行效率会比原生指令集稍低一些,所以被虚拟化保护的代码往往都是最关键最核心的部分。1.3如何将代码虚拟化?基于上述理论,我们发现有最关键的两个部分是必需的,一是新的指令集,二是虚拟机。对于新的指令集,我们可以暂且将一些带有opcode的指令进行变形,生成的数据直接回填回原文件。将文件拖进IDA后会发现指令已经错乱,达到抵抗静态分析的目的。 此时若运行程序,会发生crash,因为还缺了虚拟机。为什么叫虚拟机?因为需要模拟出当前代码运行所需要的环境,包括寄存器、堆栈等。将所需的虚拟环境初始化后,解析执行虚拟指令,同时注意保护和恢复现场。1.4如何使用相关的加固技术?市面上已有的加固产品如腾讯御安全等,已经实现了ARM平台的代码虚拟化保护功能,并综合了安卓加密压缩壳、安卓apk代码混淆等主流功能,对于动静态分析有着较强的防御能力。同时,应用安全加固服务完全基于二进制文件操作,无需移动应用开发者提供源代码,技术比较靠谱的第三方安全服务商可以建议开发者使用。1.5其余代码加固技术有?有关代码保护的另一项技术是:代码混淆,市面的代码加固保护技术更多的是两者的综合。代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。其解释如下:程序P经过混淆变换为P‘,若P没有结束或错误结束,那么P’也不能结束或错误结束;而且P‘程序的结果应与程序P具有相同的输出。否则P’不是P的有效的混淆。目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation)和预防混淆(preventive obfuscation)这四种类型。[查看全文]
本帖最后由 好害羞的的说~ 于 2016-9-1 20:10 编辑
[flash]http://static.hdslb.com/miniloader.swf?aid=6020693&page=1[/flash]
膜拜大神啊啊啊,回复看计算器观看Bad apple的正确姿势(附教程链接)
那么这次也是来到北京参观了一下本次isc 2016的各个场馆和听了一下hackpwn的议题
每年不变的,John A. Davis 这个前米军少将的演讲。不过说实话功力惊人。能实实在在的催眠下面的听众,大会场是基本没有什么干货的。
另外一位来自俄罗斯的小哥则毫无疑问的称为了颜值担当hhh
由于上午场馆基本不开放,等到下午的时候进入展馆去参观。
基本上目前各大安全厂商的重点仍然是放在了云端waf/web防御上。以及最近随着炒作火起来的工控安全和智能家居的安全。
除了帮妹子领厂商的小礼物之外没有什么可做的事情,于是搞一搞360展位的终端机
基本上没什么设防,用打印调出文件浏览器
随后切到软键盘就搞出cmd了
不过没有域,拿来也没什么用的样子。
后来进入了hackpwn的场馆听他们的议题。
前几个都比较水,第一个攻击汽车超声波感应器还是用的arduino..
一开始用了5V的驱动电压,很明显只能干扰到几米的距离
后来他们用上了20v的信号generator,明显距离远多了。
不过说实话,这玩意也就目前能干扰一下倒车雷达的水平。
另一个PC手机交叉感染->来自icesword团队的东西,则有一点像badusb的感觉,插入后自动调用手机上的可执行exe
顺便见识了一下古河师父的vulcan团队的edge+surface内核漏洞
可惜没有太多的技术细节,不过确实厉害啊
最后最水,却也是最受妹子们欢迎的一个议题
娃娃机微信支付的逻辑漏洞,基本上就是无限次数随便抓。
第一天到此为止就是这样啦
[查看全文]
看了<让你的H漫工口什么的远离家长和熊孩子的视线的简单好办法> 发现作者放在weibo里的文件在审核中下不下来,以至无法完全了解全文..但根据后面所述"而且你藏再多东西现实的容量也才几kb"这一性质推断出的,可能利用了某种文件夹管理软件修改了系统设置达到了隐藏和伪装目的.但终究由于无法下载到weibo里的文件而无法确定具体方法..
于是乎..鄙人也在穷极无聊之下来给大家推荐其它的方法,不知道会不会和上面雷同(PS:我简单介绍,对电脑有一定了解自然会明白)
我说介绍的方法要求.."文件们"都被集中管理在某一个或几个分区...
1.对分区直接修改达到目的:前提"文件们"被集中的分区只是存储文件用没有安装任何应用程序,因为以下操作会造成安装在该分区的应用无法使用...文件在不用时在"管理"中"磁盘管理"-选中该分区,选"更改驱动器号和路径"选"删除驱动器号"这样不用加密,也不用装软件和插件.这些东西就消失了...除非是可以直接操作硬盘数据的软件,否则任何形式的搜索在盘符恢复之前都不可能找到那些东西.就像从来没存在过似得,要使用时只需重复之前的动作把最后一步改为"添加驱动器号"按自己喜好分配个新盘符,这样消失的东西就又出现在眼前.
2.利用注册表隐藏分区:这个方法好处1:后期操作简单,2:不会影响被设置的分区内安装的应用程序运行,但缺点是1:初期设置比较麻烦2:杀毒软件扫描全盘时明细会显示出来,3:全盘搜索也容易暴露,4:连接U盘等存储类外设也可能或暴露有隐藏分区的事实..方法简略介绍(但因为前期很麻烦,鄙人能简略就简略了),1:先算出需要隐藏分区的值,复数分区就是各分区值相加,2:在注册表中建立子键输入算出来的值,3:重启即可,4:在系统中是看不到任何东西的,需要使用直接在地址栏输入路径即可比如隐藏的是G盘,只需在地址栏输入"G:"(不含引号)即可.后期操作确实很方便.当然对于不懂电脑的父母和孩子安全系数还是很高...如有需要留言吧..
个人还是主推方法1,毕竟是最安全的方法
[查看全文]
本帖最后由 噩の红莲 于 2015-8-16 21:38 编辑
米那桑,相信大家很多都是玩windos系统的吧……今天我给大家介绍一下linux
linux和windows一样,都是操作系统,不同的是,#26xlinux的源代码是公开的,由遍布全世界的程序员一起开发和维护,所以有许多发行版,而且免费,#8xwindows…………你懂的……
不过,早期的linux的操作都是在命令端口完成,所以很少人问津,不过随着时代的发展……越来越多漂亮的桌面环境出现……所以如今的linux和windos相差无几,不过很多人因为用惯了windows……加上linux的宣传力度不够,受众不广,所以大家很少有人知道这个操作系统,而且相对win来说,linux的门槛较高(我也是折腾了好久……#24x),所以即使有小白想入门,也十分困难……
好啦,说了那么久就行了……#17x现在进入正题
[查看全文]