精华内容
下载资源
问答
  • android安全

    千次阅读 2013-03-22 17:45:27
    Android在迅猛发展的同时,其安全问题一直没有引起足够的重视,但在2010年6月研究人员发布Android平台的KernelRootkit以来,Android平台的安全问题引来了越来越多的关注,而同时,Android平台的恶意软件也开始流行...

      Android在迅猛发展的同时,其安全问题一直没有引起足够的重视,但在2010年6月研究人员发布Android平台的KernelRootkit以来,Android平台的安全问题引来了越来越多的关注,而同时,Android平台的恶意软件也开始流行起来。[3]

           根据以上的Android系统架构分析,可以发现在三个层面可能存在恶意软件。分别是处于最高位置的应用层(Applications),函数库层(Libraries)之上,还有Android的Linux内核中。根据编程语言的不同,也可以叫做Java层,NativeC层,Linux Kernel层[4]

           毋庸置疑,Java层安全的恶意软件或安全软件,像普通的应用程序一样,使用Java语言开发,使用Google提供的AndroidSDK,

    在恶意软件方面,无非是注册一些系统事件进行相应,比如收到短信,收到邮件等等,再就是在用户不知情的情况下侵犯手机安全,比如偷偷发短信,窃取用户位置信息,窃取用户通话等等。但是同其他Android应用程序的开发一样,这些恶意软件开发时,要为使用这些恶意功能申请权限(比如发短信权限android.permission.SEND_SMS,收短信权限android.permission.RECEIVE_SMS等等),用户在安装时对这些权限一目了然,很容易引起用户的怀疑。

           而Java层的安全软件功能更是匮乏,要知道,无论是哪一个平台的安全软件,要保证用户安全,起码要拥有对其他进程的绝对控制权限,比如结束进程,开启进程,获取进程行为等等。而Android SDK并没有提供这么强大的功能,到Android SDK 2.2版本时,通过SDK提供的API,甚至无法去强制结束一个第三方软件的进程。而目前的Java层面的安全软件,只是简单的对已安装的软件进行静态扫描,搜索有没有使用可疑的权限,或者是清理一些软件的自启动行为,主动防御、行为分析等概念在Java层上几乎不存在。总而言之Java层面的安全软件被完全束缚于SDK中,而Java语言不能直接访问内存,相对于自由的C语言来说,Java语言本身就不适合开发安全软件。

           虽然Android平台的软件要用Java开发,但是也并非全部如此。Android底层必定是一个Linux [11],在Linux内核之上又有大量的标准C函数库,在理论上,是可以编译出可以直接依靠这些函数库运行的C语言程序的。事实上,在Android系统自身中已经存在很多这样的程序,在Android的超级终端中,我们可以像在Linux的超级终端中一样调用一些常用的命令,比如ls,ps,cd,free,等等,这样的命令在Android中有几十个。其实这些命令都存在于“/system/bin”或“/system/xbin”下,而且都是C语言编写的程序。

    早在Android NDK发布以前,研究人员就已经可以利用Android的源码中的资源(.h文件等)和Linux下的编译工具(gcc,交叉编译器等)编译C语言程序,并且可以像执行这些命令一样执行这些程序,我们可以称之为Native C。

           AndroidNDK的发布,使得Native C程序的开发更加方便。AndroidNDK于

    2009年7月发布第一个版本(Release1),目前已经发布到第五个版本(Release5)。

    Android NDK使得普通的应用程序(.apk)中可以使用库文件(.so),这些库文件用C语言编写,并且在Java语言的代码中,可以通过JNI调用C语言代码。在这些C语言代码中,可以调用一些运行时函数(printf,memcpy等等),以及一些Linux中存在的函数(ptrace,waite等等),甚至是一些Android的核心API。再加之C语言对内存有绝对的控制权限,使得一些安全技术可以在这里大展拳脚,尤其是HOOK技术,这对恶意软件还是安全软件来说,都是一件好事。Android NDK的发布不仅有利于安全编程,对于其他领域的软件,尤其是需要较高效率计算,不适宜在较高层的Java语言编写的软件,比如拥有自己核心的浏览器(火狐,Opera等)和大型游戏,NativeC都给他们带来的好消息。

           在2011年三月,一个叫LBE的团队发布了一款基于主动防御的隐私安全软件,LBE隐私卫士。这是第一款正式发布的Android平台的主动防御安全软件。LBE小组曾经将Android的移植到魅族M8(原来运行Mymobile)上,其核心成员常年致力于ARM平台Linux的研究,有很扎实的Linux功底。这款LBE隐私卫士就是用Android NDK开发的,其中用到了APIHOOK技术。

           关于HOOK技术:HOOK技术无论对于安全软件还是恶意软件都是十分关键的一项技术,其本质就是劫持函数调用(在Windows中,HOOK也可以理解为窗口消息劫持),不管是Windows 还是Linux平添,HOOK在安全软件中的应用都十分广泛。

           NativeC层面的程序虽然是C语言,但是依然处于Android用户态,即Linux的用户态。因此NativeC层上只能对某一进程(当然也可以是所有进程)进行API HOOK。不管是Windows还是Linux,其用户态的每个进程都拥有独立的进程空间,要对其进行API HOOK必须进入其进程空间才能修改这个进程的代码,即必须有能力修改目标进程的内存。对于这一方面Windows和Linux采用了不同的方法。Windows没有API可以修改某一进程的内存,因此一般采用Dll注入(或称远程线程注入)的方法。而Linux则常用ptrace与plt实现API HOOK。

    在Windows中,APIHOOK的一般流程为:

    ①    OpenProcess,打开目标进程。

    ②    获取LoadLibrary的函数地址,该函数地址一般在每个进程空间内都是相同的。

    ③    VirtualAllocEx,在打开的进程中申请内存。

    ④    WriteProcessMemory,在申请的内存中写入要注入的Dll路径字符串(此处也可以直接写入需要的代码,然后CreateRemoteThread执行来进行HOOK,此方法更加隐蔽,但更加复杂困难)。

    ⑤    CreateRemoteThread,启动远程线程,入口地址为LoadLibrary的函数地址,参数为要注入的Dll路径字符串(也就是远程申请的内存地址)。

    ⑥    注入的Dll中代码会在自身被加载时开始运行。

    ⑦    找到要HOOK的API所在的函数库基址。

    ⑧    找到要HOOK的API再其函数库中的导出表所在位置。

    ⑨    修改导出表,指向自己的函数入口地址。

    ⑩    在自己的函数中调用原API。

           当然在注入成功后也可以直接修改API的开头几个字节,jmp到自己的函数,然后再jmp回去,这种方法称为InLineHOOK,InLine HOOK更不容易被检测到,但是稳定性,通用性都较差,而且操作更加复杂。

           在Linux中,APIHOOK进入目标进程空间时使用了Linux中的ptrace函数[9]。ptrace函数原本是用于调试程序用的,功能十分强大,不仅可以绑定某一进程(PTRACE_ATTACH),而且可以任意修改目标进程的内存空间(PTRACE_PEEKDATA,读内存。PTRACE_POKEDATA,写内存),甚至是寄存器(PTRACE_SETREGS,PTRACE_GETREGS)。其一般过程为:

    ①    PTRACE_ATTACH,绑定目标进程。

    ②    PTRACE_GETREGS,获取目标进程寄存器状态,并保存。

    ③    PTRACE_PEEKDATA与PTRACE_POKEDATA配合,保存原代码,写入要注入的代码到当前运行位置。

    ④    PTRACE_SETREGS,恢复寄存器状态,并继续执行,这是注入的代码开始在目标进程内执行,注入代码完成HOOK,过程与Windows下相似。

    ⑤    在HOOK完成后,注入的代码执行int3被ptrace捕获,目标进程再次暂停执行。

    ⑥    PTRACE_GETREGS,再次保存寄存器。

    ⑦    PTRACE_PEEKDATA与PTRACE_POKEDATA配合还原代码。

    ⑧    PTRACE_SETREGS,恢复寄存器,目标进程继续执行。

    ⑨    PTRACE_DETACH,撤销绑定目标进程。

    Linux下还可以LD_PRELOAD来注入代码[7]从而进行HOOK。

    在前面提到的Native C级安全软件LBE隐私卫士出现后我对其实现方法进行了研究,发现了类似的方法。LBE隐私卫士中有两个用NativeC编写的函数库,分别为libloader.so和libservice.so。其中libloader.so负责将libservice.so注入到系统进程,libservice.so在注入后负责HOOK相关的API,从而实现对这些API的监控功能。在libloader.so的导出函数中可以看到以下三个函数:




    其中inject_phonemgr,inject_server,inject_svcmgr三个函数分别负责将libservice.so注入到phonemgr,server,svcmgr三个系统进程中,在加载了LBE隐私卫士的Android手机中,在终端使用 cat /proc/<pid>/map(其中<pid>为三个系统进程的pid)可以在输出中看到,三个系统进程都加载了 libservice.so。这一点证实了我的推断。

    而在libservice.so的函数导出表中,又可以看到以下函数:




    目前只能通过函数名大体推断这些函数的具体功能,可能是通过这几个函数hook监控网络,发短信,打电话,位置服务等等功能。

    通过与LBE隐私卫士的开发团队的交流,我了解到在其使用的注入技术,ptrace似乎并不起主要作用,而由于商业机密等原因,其团队并不方便透露其具体实现细节,LBE团队毕竟是Linux方面的佼佼者,我刚刚接触Linux安全,ARM汇编代码逆向能力更是有限,目前依然不能完全了解LBE的实现细节,也只能在简单分析的基础上一些猜测。

    2010年8月2日,Spider Labs的安全专家在DefCon安全会议上发布了一个内核级别的Android Rootkit工具,这是Android推出以来公布的第一款Rootkit,这次演讲引起的巨大的影响,该Rootkit的源码也被收录在本次会议的CD中,此后到2011年初,Android市场上开始出现Rootkit级的恶意软件,而此时正式推出的安全软件才刚刚达到Native C的级别。其实AndroidRootkit的研究并不比Native C级别的难,SpiderLabs的安全专家曾经列出一个公式:Android == Linux == 20 year old Open Source OS。在Android的Linux内核层更是如此。大量的Linux内核安全专家,以及现有的Linux Rootkit的研究成果使AndroidRootkit的出现提前了很多。

    要加载内核级Rootkit,首先要将代码放进Linux内核,在这个问题上,可以将代码编译为一个“可加载内核模块”(Loadable Kernel Module,LKM),Linux内核可以动态的加载这些LKM,它与整个Linux内核拥有同样多的权限,并通过触发器激发这些代码,只要这些代码运行起来,也就意味着有能力经劫持Linux内核,即劫持关键的Linux系统调用[10],例如进程操作,文件操作,网络操作等等,就可以任意对手机进行操作,完成任何功能,比如窃取短信,悄悄打电话,GPS定位,等等,所有这些行为都不会被用户察觉,这些Rootkit可以不被内核外的任何安全软件察觉,甚至不被内核级安全软件所擦察觉,对用户的隐私,甚至财产造成极大的威胁。

    LKM加载进Linux内核后就要对系统调用进行HOOK,劫持这些调用,这这其中有以下几个难点:如何获得系统调用表(sys_call_table)的位置[5],如何在Android的源码下进行编译,如何调试这些代码。

    Android采用Linux 2.6版本的内核,而2.5及更高版本的Linux内核已经不再导出sys_call_table了,这就意味着extern void *system_call_table[];并不能得到系统调用表。但是依然可以在System.map中找到sys_call_table,而且这个地址是静态的:[12]

                                                                       

    图1.4 获取sys_call_table的地址

    要调试Android下的Linux内核并不是一件简单的事情,为了得到sys_call_table每个具体函数名及函数地址,可以用sys_write,sys_read,sys_open,sys_close等函数输出。[12]

    在这些工作完成后,就可以根据Android的源码以及这些分析结果,编写LKM,通过内核级HOOK劫持系统调用,内核级HOOK相对用户态APIHOOK更加简单,因为内核中并没有进程内存空间等概念,对所有内存有直接的访问权限,在内核级HOOK时依然可以通过修改sys_call_table或Inline HOOK两种方式,两种方式各有优缺点。

    完成编写并编译后可以通过Linux下的命令工具集Busybox中的insmod来加载内核模块:

                                                                                                                         

    图1.5 加载LKM

    该工具集中的lsmod可以列举出已经加载的内核模块,但是Rootkit中可以通过劫持相关系统调用,使自身不被lsmod列举出来,从而达到完全的隐身。[12]

           由于在root权限等方面所遇到的问题,目前Android Linux Kernel级的安全软件尚属空白。


    展开全文
  • Android安全架构

    千次阅读 2019-03-21 08:52:11
    Android安全架构安全计划概述平台安全架构Android提供的安全功能参考资料 安全计划概述 Android 安全计划的关键组成部分包括: 设计审核:Android 安全流程在开发生命周期的早期便开始了,并会在这一阶段创建大量的...

    安全计划概述

    Android 安全计划的关键组成部分包括:

    • 设计审核:Android 安全流程在开发生命周期的早期便开始了,并会在这一阶段创建大量的可配置安全模型和设计。平台的每项主要功能都会由工程和安全资源进行审核,并且适当的安全控制机制会被集成到系统架构中。
    • 渗透测试和代码审核:在平台开发期间,Android 创建的组件和开放源代码组件都要接受严格的安全审核。这些审核由 Android 安全团队、Google 的信息安全工程团队和独立的安全顾问进行。这些审核的目标是在主要版本发布之前找出存在的缺陷和可能的漏洞,并模拟将由外部安全专家在平台发布时进行的各种类型的分析。
    • 开放源代码和社区审核:Android 开放源代码项目允许任何感兴趣者对其进行广泛的安全审核。Android 还使用已经过重要外部安全审核的开放源代码技术,例如 Linux 内核。Google Play 面向用户和公司开设了一个论坛,以便直接向用户提供与具体应用相关的信息。
    • 事件响应:即使采取了所有这些预防措施,平台发布后也仍可能会出现安全问题,为此,Android 项目制定了一个全面的安全响应流程。Android 安全团队有全职成员负责监控用于讨论潜在漏洞的 Android 专用安全社区和一般安全社区,并且他们会查看提交到 Android 错误数据库中的安全错误。发现确实存在的问题后,Android 团队会启动响应流程,以便快速修复漏洞,确保将所有 Android 用户面临的潜在风险降至最低。这些云支持的响应可能包括更新 Android 平台(无线下载更新)、从 Google Play 中移除应用,以及从现场设备中移除应用。
    • 每月安全更新:Android 安全团队会为 Google Nexus 设备和所有设备制造合作伙伴提供每月更新。

    平台安全架构

    通过将传统的操作系统安全控制机制扩展到以下用途,Android 致力于成为最安全、最实用的移动平台操作系统:

    • 保护应用和用户数据
    • 保护系统资源(包括网络)
    • 将应用同系统、其他应用和用户隔离开来

    为了实现这些目标,Android 提供了以下关键安全功能:

    • 通过 Linux 内核在操作系统级别提供的强大安全功能
    • 针对所有应用的强制性应用沙盒
    • 安全的进程间通信
    • 应用签名
    • 应用定义的权限和用户授予的权限

    Android提供的安全功能

    这部分是从上面部分复制的,这也是开发者需要什么学习了解的,因此令列标题特别强调该部分,后续的文章,作为自我学习总结,根据这部分内容,不同补充完善的内容。总结以Android官方文档为指导,在全面的官方文档中,抽出技术部分作为自我学习的总结。

    有人会怀疑我的做法,官方文档难道还有删减的,这个我也很怀疑自己是否会适得其反。对于此,我的准则是:总结重点是面向开发,以应用为主,捎带指向性作用。若有不当,还请广大同仁指正。

    参考资料

    AOSP(官方文档):https://source.android.google.cn/security

    展开全文
  • Android安全机制

    千次阅读 2018-01-08 12:16:33
    道高一尺魔高一丈,自古以来就没有什么...1.Android安全机制间接  安全不管在哪个平台、哪个语言中,都是非常重要的一环。Android开发者在Android系统中建立了五道防线来保护Android系统的安全。 1.1第一道防线  

            道高一尺魔高一丈,自古以来就没有什么绝对的安全,所以Google也建立起一层层的壁垒,保护Android的核心安全,免遭外界的攻击。下面我们来看看Android中的这些安全机制。

    1.Android安全机制间接

            安全不管在哪个平台、哪个语言中,都是非常重要的一环。Android开发者在Android系统中建立了五道防线来保护Android系统的安全。

    1.1第一道防线

             代码安全机制——代码混淆proguard。

            由于Java语音的特殊性,即使是编译成Apk的应用程序也存在被反编译的风险。而proguard则是在代码层面上对Android应用程序App的第一重保护,它可以混淆关键代码、替换命名让破坏者阅读困难,同时也可以压缩代码、优化编译后的Java字节码。

    1.2第二道防线

            应用接入权限控制——AndroidMainifest文件权限声明、权限检查机制。

            任何应用程序App在使用Android受限制资源的时候,都需要显示向系统声明所需要的权限,只有当一个应用App具有相应的权限,才能在申请受限资源的时候,通过权限机制的检查并使用系统的Binder对象完成对系统服务的调用。但是这道防线也有着先天性不足,如以下几项。

    • 被授予的权限无法停止
    • 在应用申明App使用权限时,用户无法针对部分权限进行限制
    • 权限的声明机制与用户的安全理念相关

            Android系统通常按照以下顺序来检查操作者的权限。

            首先,判断permission名称。如果为空则直接返回PERMISSION_DENIED。

            其次,判断Uid。如果为0则为Root权限,不做权限控制;如果为SystemServer的Uid则为系统服务,不做权限控制;如果Uid与参数中的请求Uid不同,则返回PERMISSION_DENIED。

            最后,通过调用PackageManagerService.checkUidPermission()方法判断该Uid是否具有相应的权限。该方法去XML的权限列表和系统级的platform.xml中进行查找。

            通过上面的步骤,Android就确定了使用者是否具有某项使用权限。

    1.3第三道防线

            应用签名机制——数字证书。

            Android中所有的App都会有一个数字证书,这就是App的签名,数字证书用户保护App的作者对其App的新人关系,只有拥有相同数字签名的App,才会在升级时被认为是同一App。而且Android系统不会安装没有签名的App。

    1.4第四道防线

            Linux内核安全机制——Uid、访问权限控制。

            Android本质是基于Linux内核开发的,所以Android同样继承了Linux的安全特性,比如文件访问机制,Linux文件系统的权限控制是有user、group、other与读(r)、写(w)、执行(x)的不同组合来实现的。同样,Android也实现了这套机制,通常清空下,只有System、root用户才有权限访问到系统文件,而一般用户无法访问。

    1.5第五道防线

            Android虚拟机沙箱机制——沙箱隔离。

           Android的App运行在虚拟机中,因此才有沙箱机制,可以让应用之间互相隔离。通常情况下,不同的应用之间不能互相访问,每个App都有与之对应的Uid,每个App也运行在单独的虚拟机中,与其他应用完全隔离。在实现安全机制的基础上,也让应用者之前能够互不影响,即使一个应用崩溃,也不会导致其他应用异常。

            虽然通过以上的五道防线,仍然不能100%保证Android的核心安全,但却可以在最大程度上给破坏者增加破坏难度。从另一方面来说,这些破坏者的破解也是推动Android安全机制逐渐健全的动力。

    2.Android系统安全隐患

            虽说Android建立了N道防线来抵御破坏者的入侵,但是因为没有绝对的安全,所以在Android中也经常会找到一些突破防线的方法。

    2.1代码漏洞

            这个问题存在于世界上所有的程序中,没有谁敢保证自己的程序永远不会有BUG、有漏洞,所以遇到这种问题,大家只能尽快升级系统OS版本、更新补丁,才能杜绝利用漏洞的攻击者。比如Android的LaunchAnywhere、FakeID这些Bug,就是在代码编写的时候产生的漏洞,因此要防范这样的攻击,只有期待官方补丁才能修复了。

    2.2Root风险

            Root权限是指Android的系统管理员权限,类似于Windows系统中的Administrator。具有Root权限的用户可以访问和修改手机中几乎所以的文件。“Root”在一段时间内一度成为Android的代名词,“无Root,不Android”。的确,Root掉手机后,可以解锁很多普通用户无法完成的工作,如限制各个应用App的数据流量、系统文件管理、自定义修改系统等,但同时手机的安全性也会因此大打折扣随着Android系统越来越完善,Root的必要性也越来越低,普通用户在不Root的情况下,完全可以正常使用大部分App。需要Root权限的大多为一些开发者,由于开发的需要,不得不将手机Root。而Root后的手机,就少了一层Linux的天然屏障,整个系统核心就完全暴露在入侵者面前,在你没有察觉的情况下大肆破坏。所以,针对普通用户,希望尽量不要Root手机以免带来不必要的损失。

    2.3安全机制不健全

            由于Android的权限管理机制并不完美,所以很多手机开发商,通常会在Rom中增加自己的一套管理工具来帮助用户控制手机中应用的权限,如三星手机中的应用程序许可。

    2.4 用户安全意识

            用户对于安全隐患的察觉力也是保护手机安全的一个重要因素。用户可以通过在正规应用市场下载应用、并安装应用时通过列出的应用权限申请信息来大致判断一个应用的安全性,比如曾经热门的“XX神器”,其实没有一点技术含量,无非是你在安装了App后遍历你的联系人,并发生带有链接的短信而已。当用户在安装不明来源的App时,如果一个娱乐类型的App在申明权限时不仅需要联系人信息,还要获取发生短信的权限时,这是应该有所警惕。如果还不放心,用户可以在市场上下载一些安全类App。如LBE安全法师、360安全等,虽然这些安全类App会加重系统的负担,但是为了安全还是值得的。

    2.5Android开发原则与安全

            总所周知,Android与Ios系统一个非常显著的区别就是一个是开发系统一个是封闭系统,开放自然有开放的好处,技术进步快、产品丰富,封闭也有封闭的好处,安全性高、可控性高。Google本着开源的精神开放了Android的源代码,但随之而来的各种安全问题也让Android饱受诟病,过渡的开发与可定制化,不仅造成了Android的碎片化严重,同时也给很多不法应用以可乘之机。但可喜的是,随着Android的发展日益壮大,Google也在着手处理开发与安全的问题,相信不久的将来,这一矛盾会越来越小。

    3.Android Apk反编译

            Android的应用程序Apk文件,说到底也就是一个压缩软件,那么可以通过解压缩,获得里面的文件内容。让我们先来找一个Apk文件,然后使用解压缩工具,比如winRar、7-Zip等进行解压,最后会得到一些文件、文件夹如下图所示。

       

            解压之后我们看见了不少熟悉的东西,但是当点进去的时候,你就会发现资源文件等xml文件基本无法打开,即使打开也是如下图所示的乱码。


            这些乱码是经过Android加密过的文件。更关键的是,竟然找不到源码文件夹src。只能在res文件夹中查看非Xml的图片资源文件,不过,有些应用会把图片也加密处理,这样你就连图片也看不见了。

            既然解压Apk文件是无法获得正常的应用程序,那么看看如何使用正确的方法反编译应用程序。

            首先清楚三个重量级的工具,如图所示。


    3.1 apktool

            首先来反编译Apk文件中的Xml文件,利用apktool.jar,apktool工具下载地址

            现在命令行下进入到它所在的文件夹目录,如图所示。


            然后对test.apk执行反编译名利,如图所示。

            打开res中的XML文件,如图所示。

            此时可以正确地查看这些XML文件而不是之前的乱码了。这个工具在汉化软件的时候非常有用,可以提取资源并进行汉化,然后执行下图所示命令重新打包回去即可。

            重新打包的名利与解码的命令相似,只是需要将d改为b,并选择签名解码生成的文件夹。执行该命令后,在文件夹下就会生成两个新的文件夹,如下图 重新打包的APK就在dist目录下,如图所示。

            下一步,解决Source Code。

    3.2 Dex2jar、jd-gui

            这次需要剩下的Dex2jar金额jd-gui两位大神了,dex2jar和jd-gui下载地址

            先回到最开始解压缩工具Apk后的那个文件夹,文件夹中有一个非常重要的文件,即如图所示的dex文件。

     

            这个文件就是源代码打包后的文件,将它赋值到dex2jar的根目录下,然后执行如图所示代码。可以看到dex zjar在后台飞快的分析者,分析过程如图所示。


          最后在dex2jar目录下生成了一个jar文件,如图所示。


          当获取了jar文件后,就轮到jd-gui上场了,打开jd-gui,选择file-open file,并先择刚刚生成的classes-dex2jar.jar文件。此时,就可以查看相关的源码了。如下图所示。

            通过以上工具的帮助,完美地反编译了应用程序。不过反编译虽好,可不能过度喔,一切断电反编译都应建立在学习地基础上,而不是破坏、盗取。

    4.Android Apk加密

       由于java字节码的特殊性,使得它非常容易被反编译。因此为了能够对编译好的java class文件进行一些保护,通常会使用ProGuard来对Apk进行混淆处理,用无意义的字幕来重命名类、字段、方法和属性。当然,ProGuard不仅仅可以用来混淆代码,还可以删除无用的类、字段、方法和属性,以及删除没用的注释,最大限度地优化字节码。

            在Android Studio中,可以非常方便地使用ProGuard,在Gradle Scripts文件夹下,打开build.gradle(Module:app)文件,显示如下。


            这里地minifyEnabled属性就是控制是否启用ProGuard的开关,这个属性叫做runProguard,在ASI.1中将其改为minifyEnabled。将这个属性设置为true,即可打开ProGuard功能。proguardFiles属性用于配置混淆文件,它分为两个部分,一个是系统默认的混淆文件,它位于《SDK目录》/tools/proguard/proguard-android.txt目录下,大部分情况下,使用这个默认的混淆文件就可以了;后面一部分是项目中自定义的混淆文件,可以在项目的App文件夹下找到这个文件,在这个文件里可以定义引入的第三方依赖包的混淆规则。配置好Proguard之后,只要在使用AS到处Apk时,即可生成混淆。

    展开全文
  • Android安全之网络安全

    2019-03-14 14:42:45
    Android安全之网络安全 网络安全通常需要确保4个问题 1.确认身份,即确认收件人和发件人 2.确认信息是否正确. 3.确认信息是否完整 4.确认网络可用. 在网络中有比较知名的两个攻击问题,一个是中间人攻击,一个是重放...

    Android安全之网络安全
    网络安全通常需要确保4个问题
    1.确认身份,即确认收件人和发件人
    2.确认信息是否正确.
    3.确认信息是否完整
    4.确认网络可用.

    在网络中有比较知名的两个攻击问题,一个是中间人攻击,一个是重放攻击。
    我们从最简单的情况开始考虑。
    小王需要给小张发送一封机密信件。

    展开全文
  • 第六章 Android 安全的其它话题 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们会涉及到与 Android 安全相关的其他主题,这些主题不直接属于已经涉及的任何主题...
  • 1-1、Android安全模型 直接上图吧,这种一对多的表格一直不会编辑。 1-2、系统的安全结构 Android层级和安全措施: 层级 安全措施 应用层 接入权限、代码保护 框架层 数字证书 虚拟机层 沙箱机制 ...
  • Android 安全测试书单

    2018-09-05 23:26:34
    Android 安全测试书单 为了更好的学习安全测试 Android 安全测试书单 初阶书籍 中阶书籍 高阶书籍 初阶书籍 Android 安全攻防实战 (Keith Makan 著) 入门 3 星 泛泛而谈 Android 应用安全防护和...
  • Android安全机制 PPT版本

    千次下载 热门讨论 2014-01-27 18:32:30
    Android应用程序是运行在一个沙箱中。这个沙箱是基于Linux内核提供的用户ID(UID)和用户组ID(GID)来实现的。Android应用程序在安装的过程中,安装服务PackageManagerService会为它们分配一个唯一的UID和GID,以及...
  • Android安全机制探讨

    千次阅读 2016-08-09 10:21:09
    今天我们不聊代码,聊聊我们的安卓本身。近几年,Android操作系统的发展极其迅猛,基于Android终端市场占有率和出货量节节攀升。...针对Android安全的研究十分紧迫和必要。 Android的安全范畴主要包括硬
  • Android安全加密:对称加密

    万次阅读 多人点赞 2016-09-09 22:46:57
    Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 以上学习所有...
  • 第一章 Android 安全入门 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 是当今最流行的智能手机操作系统之一。 随着人气的增加,它存在很多安全风险,这些风险不可避免地被引入到应用程序中...
  • 浅入浅出 Android 安全:第一章 Android

    千次阅读 2016-11-27 16:52:43
    Android 安全架构的理解不仅帮助我了解 Android 的工作原理,而且为我开启了如何构建移动操作系统和 Linux 的眼界。 本章从安全角度讲解 Android 架构的基础知识。 在第 1.1 节中,我们会描述 Andro
  • Android安全- http://blog.csdn.net/SEU_Calvin/article/category/6308670 理解Android安全机制- https://blog.csdn.net/ff673551532/article/details/73002333 APP安全(二)终端安全全预览- ...
  • Android安全开发之安全使用HTTPS

    千次阅读 2016-10-08 23:21:28
    Android安全开发之安全使用HTTPS 作者:伊樵@阿里聚安全 1、HTTPS简介 阿里聚安全的应用漏洞扫描器中有证书弱校验、主机名弱校验、webview未校验证书的检测项,这些检测项是针对APP采用HTTPS...
  • Android安全模式

    万次阅读 2019-09-03 10:33:08
    设备在日常使用过程中,不可避免的会添加安装第三方...遇到这种情况,若进行恢复出厂设置,手机中的资料是无法进行备份的,但是Android系统中添加了"安全模式"这项功能,有效的避免上述情况同时来排除故障。 流程...
  • Android安全开发之浅谈密钥硬编码(来源:阿里移动安全)添加链接描述
  • Android安全防护

    千次阅读 多人点赞 2017-08-04 15:33:21
    现如今,安全问题越来越重要,越来越多 的Android开发者也开始寻求安全的保护方案。首先说一下,我做的是保险行业的应用。所以有很多安全监测的东西要过。其实一般的公司,外包什么的很少管APP的安全的。即使你的应用...
  • 现如今,安全问题越来越重要,越来越多 的Android开发者也开始寻求安全的保护方案。首先说一下,我做的是保险行业的应用。所以有很多安全监测的东西要过。其实一般的公司,外包什么的很少管APP的安全的。即使你的应用...
  •  我们在Android安全机制(1)中介绍过基于UID和GID的Android进程隔离机制。 这是利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid , 从而使得不同的 Application 之间的私有数据和...
  • 在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码、反编译资源、以及重新打包等内容。通过这些内容我们也能看出来,其实我们的程序并没有那么的安全。可能资源被反编译影响还不是很大,而...
  • android 安全机制

    千次阅读 2011-04-23 09:30:00
    第九章 Android安全访问机制 <br />  Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。系统和应用之间的安全性通过Linux的facilities(工具,功能)在进程...
  • Android安全——客户端安全要点

    千次阅读 2018-05-24 10:55:35
    一、前言: 近期facebook的隐私泄露事件...本文浅谈Android客户端的安全问题,涉及组件、WebView、存储、传输、日志、混淆、应用加固等安全漏洞及防护策略,运用更加合理的配置与防护措施来提高应用的安全级别。...
  • 我们都知道,Android程序打完包之后得到的是一个APK文件,这个文件是可以直接安装到任何Android手机上的,我们反编译其实也就是对这个APK文件进行反编译。Android的反编译主要又分为两个部分,一个是对代码的反编译...
  • Android安全输入设计与思考

    千次阅读 2015-07-10 18:07:53
    我不会顾忌别人怎么看,或者顾忌到... 本文对市面上的Android安全键盘进行了总结,详细分析了为什么采用安全键盘,怎么样实现安全键盘等问题。以及各个产品线使用的安全键盘有何优劣点。以方便开发者对自我开发安全项
  • Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程 一、数字签名1. ...
  • Android安全:禁止APP录屏和截屏

    万次阅读 热门讨论 2019-05-08 15:00:25
    Android有些APP会为了安全,禁止录屏和截屏,例如:金融、银行相关的。禁止录屏和截屏并不难,只需要在 Activity 的onCreate() 方法中添加一行代码即可: getWindow().addFlags(WindowManager.LayoutParams.FLAG_...
  • kali 安装Android安全测试框架Drozer

    千次阅读 2019-03-18 00:52:42
    Drozer是MWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一。Adb就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。 一、 安装drozer: 环境:kali 2.0 root@kali:~# git ...
  • Android安全模型

    2016-05-05 11:27:36
    android系统的开发人员已经在android平台的设计中引入了安全的机制,android系统强制所有的android应用程序使用双层安全模型,在android底层核心,依靠Linux内核提供安全特性,即每一个android的应用程序作为单独的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,179
精华内容 11,671
关键字:

android安全