读前辈的大话设计模式(三)番外篇之设计开发原则,抒自己的读后感

本文深入解析了六大设计原则,包括单一职责原则、开放-封闭原则、依赖倒转原则、里氏代换原则、合成/聚合复用原则以及迪米特法则。通过这些原则的学习,可以帮助开发者更好地理解如何设计更加健壮、易于维护的软件系统。

这是一篇纯理论的,作为了解体会即可。

  1、 单一职责原则(Single Responsibility Principle,简称 SRP)解释:一个类,应该仅有一个引起它变化的原因。

    如果一个类承担的职责过多,就等于是把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化产生时,设计会遭受刀意想不到的破坏。

    单一职责原则判定:如果你能够想到多于一个的动机去成功改变一个类,那么这个类就具有多余一个的职责,也就是职责不再单一。

    单一职责解决的是代码的易维护、易扩展、易复用、灵活多变等问题。常见应用就是接口隔离原则,即接口的功能尽量单一。

    2、开放-封闭原则(the Open-Close Principle):尽量不要修改已有代码,将功能扩展到项目中去,即修改代码方向关闭,功能扩展方向开放。事实上,绝对的修改关闭是不可能的,无论模块是多么的封闭,都会存在一些无法对其保持封闭的的变化。既然不可能完全封闭,设计人员必须对他设计的模块的哪种变化封闭做出选择,他必须先预测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。

    3、依赖倒转原则:依赖于抽象,而不依赖于具体。好处:将来变量可以引用他的任意一个子类对象,如果是依赖具体的话,将来就只能使用一种类型。推荐面向接口编程。

    4、里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且他察觉不到父类对象和子类对象的区别,也就是说在软件里把父类都替换成他的子类,程序的行为没有发生变化,即子类必能够替换他们的父类型。

    5、合成。聚合、复用原则,即通过关联关系代替继承关系来对类中成员进行使用。这条原则,详细解释请看这篇文章 Java设计模式——合成/聚合复用原则

    6、迪米特法则:也叫最少知识原则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。强调的是类之间应该保持一种低耦合的关系。类之间的耦合关系越弱越有利于复用,当修改其中的某一个时,不会对有关系的类造成波及。

内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值