王者荣耀python基础15 —面像对象的次第设计

无异于、Android中加密算法

及一样篇文章已介绍了Android中网锁屏密码算法原理,这里当来总结说一下:

先是种植:输入密码算法

用输入的当众密码+设备的salt值,然后操作MD5和SHA1之后以转发成hex值进行拼接即可,最终加密信息保存至地面目录:/data/system/password.key中

老二栽:手势密码算法

用九宫格手势密码被的触及数据转发成对应之字节数组,然后直接SHA1加密即可。最终加密信息保存及本地目录中:/data/system/gesture.key中

 

面向对象的程序设计

次、锁机样本原理分析

在直达一样篇稿子中也说到了,为什么要扣押锁机密码加密算法,因为近来玩王者荣耀,下了一个外挂,结果于锁机了,太坑了,所以就来分析现在市场中经锁机来勒索钱财的样书制作原理:

王者荣耀 1

大部还是使用了系的装置管理器来收获权力进而修改密码,然后提醒而用更开设备才能够行,这样的样书经非正规之动名称与图标来诱导用户下载安装授权,一般小白用户以玩农药,什么还不管了,直接从网上搜一个安就从头操作了,结果为自己坑了,所以下载软件一定要是失去正规的运用市场去。别瞎下充斥使,而如此的锁机样本一般都是会见挑加固,不过可惜他们为节省成本且是故了非企业版的免费版加固,脱壳就比较简单了,然后逆向分析代码就可找到他安装的锁机密码,然后解密即可。

倘面如果是一个略带白用户被锁机了,几乎很不便化解,因为此时设备为锁屏了,连接电脑吗是内需授权的,但是得先解锁,那么即使见面发现自己的手机以及捡拾到之平等,没法操作了,不过可以选择拷贝rom到sd下,然后开展刷机或者恢复,这样的成本就非常非常了。所以毫无疑问要小心。

 

平、面向对象的次序设计简介

其三、root权限修改锁机密码

解析了了方的锁机样本之后,我们知晓现阶段都是这种需要授权操作,而这种授权一看便时有发生涂改锁屏密码,一个总人口上当后后面可能就是没有人于受骗了,所以我们得想到其他的方式开展重新加狠的招制作样本。而地方提到的装置管理器有好多用处的,以前用为预防被用户卸载,也申请了是权力。因为要是一个施用具有了设备管理器就不见面叫卸载了,因为他的权力已经挺高了。不可知让卸载。不过好以安页面查看有多少用拥有这个权力:

王者荣耀 2

为安全起见,像这种权一般都是一旦选拒绝的,安全性非常惊险。一旦授权了,不堪设想。

既然如此前同一首我们就知道了,设备的锁机加密算法,而且为懂得他有哪里,何不利用root权限来拓展简单操作无需申请权限即可修改锁机密码,而对这些纪念耍游戏使用辅助工具,对于root权限他们是好承受之,因为他们并不知道root之后是干嘛呢?以为是再度好之体验游戏效果。有了root权限之后,我们尽管大概了。直接打一个新的密码,不管是手势密码还是复杂字符密码,然后经加密算法加密,然后在写入到指定的key文件。重开设备生效即可。代码这里虽非多说了,原理非常简单:

王者荣耀 3

这样我们得以组织一个九宫格手势密码,或者是数字密码,然后加密得到内容,在形容及key文件被:

王者荣耀 4

下一场我们不怕可写一个简便的锁机样本应用了,直接拿修改的密码加密内容写副到应用沙盒文件被,然后以以文件覆盖网的密码key文件,最后还得再开设备生效。当然这里是改了字符密码,我们为更大化操作,可以把手势密码为操作一下,这样便管用户设备用的是呀种档次密码都好修改成功了。

 

  1、面向对象程序设计的出于来。

季、解决指纹锁问题

上面就应用root权限修改了用户之锁机密码,但是此地来一个题目,就是今天游人如织设备就支持指纹锁了,而且指纹锁未来吧是大势,那么一旦一个设施所以了依纹锁,该怎么收拾?对于地方利用设备管理器权限就无奈操作了。但是对root权限我们还是可以操作,我们当解析了锁机密码加密过程被发觉,系统会把当前锁机类型值保存至数据库中:

王者荣耀 5

这个价值在 /data/system/locksettings.db 数据库中,我们好翻:

王者荣耀 6

此是十进制数据,我们可以转账成为十六进制就是0x60000了,然后我们查阅代码他对应之凡啊种类型:

王者荣耀 7

即便复杂的字符密码类型,当然还起其它类,这个概念在DevicePolicyManager.java类吃。那么到这边我们就算出思路了,如果设备的品种是指纹锁,那么我们可改者表格数据被的这个字段将那个变成手势密码还是是字符密码类型,然后以拿修改后底马上简单种植档次密码写副到key文件,重开设备就即可以过滤了负纹锁密码了。因为我们有矣root权限,读写这数据库文件不难了,而具体落实代码这里就是被了,感兴趣的同桌可以尝试操作一下。

 

对于今各种恶意锁机软件,Google官方在不同版本都为出了防范方案(以下内容摘自安全网络):

Android L(Android 5.0-5.1)

以首Android版本被,通过getRunningTasks方法而得到当前运作栈顶程序,但自Android
5.0由该方法被弃用,同时getRunningAppProcesses与getAppTasks方法的利用也遭遇了限定,由此抑制了劫持Activity类勒索软件之面世。

Android M(Android 6.0)

大部手机勒索软件之惯用手法是通过SYSTEM_ALERT_WINDOW权限来开辟特定系统项目窗口并将那出示在装有其他应用程序和窗口之上,以此达到锁定用户设备的目的。Android
M的出现使得勒索软件制马人在实践手机勒索时遇上了千篇一律十分瓶颈——动态权限申请,由于自Android
M起,SYSTEM_ALERT_WINDOW开始给列为一种危险程度较高的权杖而给突出处理——即用用户动态授权。这同改观意味着要勒索软件之目标体系吧Android
M,其就是不可知要以往一律在用户毫无防备的场面下锁定用户设备,而是一定有一个用户授权等,这对准勒索软件之迈入于及了肯定程度的遏止作用。

Android N(Android 7.0-7.1)

及事先版本可随机设置或重置锁屏密码不同之是,Android
N中明确规定,第三在用开发者只能以DevicePolicyManager.resetPassword为无密码设备安装初始密码,而休可知重置或脱已有的设备密码。Android
N中对于resetPassword
API所添加的界定能挡住木马对曾经产生锁屏密码的重置,从而令一些勒索软件失效。

 

如若对此窗口样式锁机最为常见,就是以WindowManager设置最高权力,导致设备点击任何地方尚未反应,而当Android
O中一度指向这窗口权限做了严重限制:Android
O预览版一经公布就叫了勒索软件致命打击,新体系禁用了5种植窗口。如下图所示,其中包括3种勒索软件常用的系统窗口类型,窗口置顶类勒索木马“赖以生存”的体系窗口类型为拘以了。

 

以Android
O之前版本中,勒索软件通过调用特定系统窗口类型将自家窗口完全盖在第三在应用程序与另外系统窗口之上,用户无法响应其他窗口,由此设备为锁定;但以Android
O中,这几栽具有置顶权限的体系窗口类型被弃用,勒索软件制作者找不顶其它能够一心覆盖第三在应用程序与另外系统窗口的窗口类型,窗口置顶类锁屏将无法尽。

于Android
6.0之前,使用系统类窗口进行手机勒索十分简约,只需要在AndroidManifest清单文件被申请SYSTEM_ALERT_WINDOW权限即可使TYPE_SYSTEM_ALERT、TYPE_SYSTEM_ERROR等大级别窗口,用户打开手机勒索软件后无论是需附加操作还是来不及做出反应,系统窗口就曾经置顶,手机即时被锁定。

自Android 6.0于至Android
7.1,Android系统开启动态权限模型,SYSTEM_ALERT_WINDOW权限开始受列为一宗特殊权,尽管该权力级别(Signature)不是Dangerous,但开发者在用前为非得动态获得用户授权,只有当用户展开授权后,应用才可以无限制行使TYPE_SYSTEM_ALERT、TYPE_SYSTEM_OVERLAY、TYPE_SYSTEM_ERROR等高级别窗口。在马上同号,用户通过一样码Action——MANAGE_OVERLAY_PERMISSION打开装“在其余使用之上层显示”页面,如下图所展示,用户手动允许后,系统高级别窗口权限放,此时即可成功应用这些窗口进行手机勒索。

 

 

    我们前面虽说上过了面向过程的程序,它的着力是面向过程,一步一步之计划性好了底流水线,虽然大的降了程序的复杂度,但是一个计划

五、技术总结

暨此处,我们便分析了哪修改Android中锁屏密码,主要发生有限种办法:

先是种植:利用设备管理器权限,直接用系统提供的api修改

次栽:利用root权限和锁屏密码算法一直修改系统锁机密码文件内容

假若就简单栽办法操作完成以后都得重开设备生效,而对这有限种艺术各有利弊,不过对于部分游戏外挂root权限一般都是所有的,所以亚种植是极其出色方案。而对部分日常恶意使用root权限很少,可以以第一栽办法进行操作是无与伦比优质方案。

 

加密算法源码:https://github.com/fourbrother/AndroidScreenOffPwd

 

      好了之流水线只能满足一个主次后期的可是扩大性差,所以为了化解面向过程的先后可扩大性差的老毛病,产生了面向对象的次第。他是解决了

六、安全提醒

可到这里,是否对这些黑心锁机软件用户就不能够幸免为?当然可以免,只要您不用产生歪想法,比如你玩游戏为何想到外挂?你怎么设去下充斥哪些不好的运,因为你心有私心。如果您是一个幼稚的用户,可能无会见选取外渠道下载应用,会失去正规的商海中下载应用,这样你莫可能吃折腾,如果您是一个心无杂念的用户,肯定不会见随便授权为使用,不会见选取root设备。那么究其原因,哪些非法分子就是用同粗片人之歪念心里,制作了之样本开始勒索。而如果要让讹了,第一时间是想到的团结解决,刷机或者恢复,不可进行到钱解决,因为对此那些勒索钱财的,不可放纵,就是不要受钱。宁愿不要手机,也未吃你。当然最终还想想说Android中的是装置管理器权限特别是修改密码这操作自其实为用户设备丢失,进行定点擦除数量要涂改密码来避免手机再次多信息于窃取弄的,但是这样的api被乱用之后为是匪成立之,如果可以期待系统能更的优化这等同块的作用。

      面向过程遭到不过扩大性差的题目,如果程序用扩大就可以针对需要扩大的某对象单独进行修改,就见面马上反映到整个程序体系受到,不需

      牵一发而动全身。

    注释:像操作系统的开机流程,他就是一定给一个面向过程的次,一步一步设计好了之,但是比如我们打的皇帝荣耀中之英雄人物,他们就是是同样

       个面向对象的次,因为某个英雄要上加新的艺时就是可以在这个英雄的靶子中添加。

  2、面向对象程序的得失。

    1.优点:解决了程序的只是扩展性,对某一样次对象的独立修改就足以立即反应及全体体系中,一般下叫次变动需求较深之软件被,比较

     
  游戏,人物之特色与技能都是面向对象程序大展身手的好地方。

    2.缺陷:可控性差,无法为面向过程的次第设计流水线式的得很精准的预计问题之处理流程及结果,面向对象的顺序要开便由对象期间的

       
交互解决问题,即便是上帝为无从预计最终结出。于是我们常看看一个玩耍人有同参数的修改极有或致阴霸的技能出现,一刀子砍死

        3单人口,这个玩就失去平衡。

次、类及对象

  1、对象同接近的概念

    在大胆联盟,每个玩家选择一个赴汤蹈火,每个英雄都起谈得来之性状与同技术,特征就是数据性,技能便方法属性,特征及技术的结合体就一个目标。

    在同等组对象被,从她们之表征以及技巧中提取共有的情就是是近似,类是同等特征以及技术的结合体。

  2、python中目标和接近的象征方法。

    在python中,用变量表示特征,用函数表示技术,因而类是变量和函数的结合体,对象是变量和办法(指向类的函数)的结合体

三、类简介

  1、创建一个近乎。

    class
类名:

        ’类的文档字符串’
#一定给概念了单变量(特性)也堪是字符串,统称为类的多少有。

        
类体#相当给概念了只函数(技能),统称为类的函数部分。

  2、类的打算。

    1.作用1凡性质引用(引用=增删改查):

      1.1引用类的数额性,该属性和具目标/实例共享。

       
格式为:类名.变量名(类中定义之变量的变量誉为)#可由此print(类名.变量名)来查阅相呼应的价值

      1.2引用类的函数属性,该属性和具目标/实例共享。

       
格式为:类名.函数(类中定义之函数)#只是经过print(类名.函数)来查看相对应之价

      1.3剔除除类的特性

       
格式为 :del 类名.变量名(类吃定义之函数)

      1.4增加类的性质

       
格式为 :类名.需要加的变量名=‘ 字符串’

    
2.意图2凡是实例化(__init__与self)

     
 2.1.类叫加括号就是实例化,会自行触发__init__函数的运转,可以据此她来呢每个实例定制好的表征。

      
2.2.self的意是在实例化时自动将目标/实例本身传为__init__的率先个参数,self可以是随意名字,但是瞎几把写别人就是看无亮堂了。

  3、查看一个看似。

    1.格式:dir(类名)#识破的是一个名列表

    2.格式:类名.__dict__#查出的凡一个字典,key为属性名,value为属性值

季、对象简介

  1、对象是关于类设事实上在的一个例,先有相近更发生对象。

  2、对象/实例只出一样栽意向:属性引用

  3、对象/实例本身只是生数据性,但是python的class机制会将类的函数绑定到对象及,称为对象的不二法门,或者叫绑定方法,绑定方法唯一绑定一个对象

    同一个近似的办法绑定到不同之靶子及,属于不同的点子,内存地址都未会见同样。

五、
类名称空间和对象/实例名称空间

  
1、创建一个像样就会创一个近似的称号空间,用来囤类中定义之享有名字,这些名字称为类的特性

  
2、类闹一定量种特性:数据性与函数属性之中接近的多寡性是共享为持有目标的而类的函数属性是绑定到持有目标的:

 
 3、创建一个靶/实例就会创一个对象/实例的称空间,存放对象/实例的名,称为对象/实例的特性。在obj.name会先从obj自己之名称空间里寻找

    name,找不至则失去接近吃追寻,类为查找不顶即摸索父类…最后还找不交就废来好

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website