34、面向对象的自动取款机(ATM)软件系统设计与实现案例研究

面向对象的自动取款机(ATM)软件系统设计与实现案例研究

1. 案例研究介绍

现在我们开始进行面向对象的设计与实现案例研究,目标是设计并实现一个面向对象的自动取款机(ATM)软件系统。这个案例研究将为你提供一个简洁、节奏合理且完整的设计与实现体验。

在后续的设计过程中,我们会使用统一建模语言(UML)来执行面向对象设计(OOD)的步骤,并将这些步骤与之前学过的面向对象概念相结合。在本阶段,我们会用到六种常见的UML图来图形化地展示设计,之后还会通过继承来优化设计,最终用一个673行的Java应用程序完全实现这个ATM系统。

这不是一个简单的练习,而是一个完整的学习体验,最后会详细讲解实现设计的完整Java代码,让你初步了解行业中会遇到的实际问题。

2. 审查需求文档

设计过程从呈现一份需求文档开始,这份文档明确了ATM系统的目的和必须完成的任务,在整个案例研究中,我们会经常参考这份文档。

2.1 需求文档内容
  • 系统用途 :一家本地银行打算安装一台新的ATM,让用户(即银行客户)能够进行基本的金融交易。每个用户在银行只能有一个账户,用户可以查看账户余额、提取现金和存入资金。
  • 用户界面组成
    • 屏幕:向用户显示消息。
    • 键盘:接收用户的数字输入。
    • 现金 dispenser:向用户发放现金。
    • 存款槽:接收用户的存款信封。
  • <
内容概要:本文详细记录了对一个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、付费专栏及课程。

余额充值