【加密与解密(第四版)】第一章笔记

第一章《基础知识》

1.1 什么是加密与解密

如果一种保护技术的强度能达到让解密者在软件的生命周期内都无法将其完全逆向的成度,这种保护技术就是成功的。逆向工程是根据已有的产物和结果,通过分析来推导出具体的实现方法;对软件来说“可执行程序——>反编译——>源代码”的过程就是逆向工程。

逆向工程的内容可以分为三类:软件使用限制的去除或者软件功能的添加;软件源代码的再获得;硬件的复制和模拟。逆向工程是一门优雅的艺术,而不是一些低层次者手中粗陋的工具;逆向工程的目的是学习与再利用;逆向工程的精神就是“自由”。

软件逆向的合法性探讨:https://zhuanlan.zhihu.com/p/453234609、https://zhuanlan.zhihu.com/p/561385390、https://bbs.kanxue.com/thread-198992.htm、https://www.gov.cn/guoqing/2021-10/29/content_5647633.htm

关键句:“单纯软件反向工程行为的“复制”部分在新旧《著作权法》背景下都属于合理使用。在不具备后续的销售盗版软件或向他人提供避开技术手段的措施的前提下,软件反向工程很难被认定为侵犯著作权。但实践中反向工程多数是为了后续商业目的而实施的,不可避免会伴随着研发人员将破解内容告知委托人甚至委托人将破解技术原样或修改后进行销售等行为。在此类案件中,实施反向工程的研发人员是否承担法律责任还有待进一步的探讨和研究。”

“反向工程作为一种反向解析他人产品设计思路的技术,不应当完全否定,当然也不能任其随意应用,而应当在正常的市场秩序框架下,规范其合理的使用,发挥积极作用,推动创新发展。这一司法导向正如美国最高法院在1989年的BONITO BOATS, INC. v. THUNDER CRAFT BOATS, INC.一案判决书中所讲,“尺寸的改变和各种要素的组合可以在所属领域带来重要的进步。公共领域中的机械产品或化学制品的反向工程常常带来重要的技术进步。反向工程的竞争现实可以刺激发明人,使其产生动机去开发符合严格的专利性要求的发明。””

静态分析技术(IDA)和动态分析技术(OllyDbg、WinDbg、X64/32Dbg)

IDA和OD的区别:

(1)IDA是静态调试,有结构图,并且可以自动生成伪代码;OD是动态调试。

(2)加载可执行程序时,OD是把整个空间都加载起来;而IDA只是加载了exe文件,它所关联的dll并没有加载。

1.2 文本字符

现代的ASCII是一个7位的编码标准,编码的取值范围是00h-7Fh,共128个字符。由于计算机通常用字节这个8位的存储单位来信息交换,因此不同的计算机厂商对ASCII进行了扩充,增加了128个附加字符,他们的值在127以上是不统一的。取值范围变成了00h-FFh,例如ANSI、Symbol、OEM等字符集。其中ANSI是系统预设的标准文字存储格式。

扩展ASCII码:扩展ASCII 字符是从128 到255(0x80-0xff)的字符。许多基于x86的系统都支持使用扩展(或“高”)ASCII。它将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。针对扩展的ASCII码,不同的国家有不同的字符集,所以它并不是国际标准。

Unicode是ASCII字符编码的一个扩展,各种编码:

https://www.cnblogs.com/findumars/p/5006175.html

Unicode、UTF-8、UTF-16:https://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html

大端存储:高位字节存入低地址,低位字节存入高地址(看起来方便)

小端存储:高位字节存入高地址,低位字节存入低地址。一般来说,X86系列CPU都是小端存储,PowerPC通常是大端存储。

因为网络协议也都是采用大端存储方式来传输数据的,所以有时也把大端存储方式称为网络字节序

1.3 Windows操作系统

API的英文全称为“Application Programming Interface”(应用程序编程接口),Windows运转的核心是动态链接。Windows提供了丰富的应用程序可利用的函数调用,这些函数采用动态链接库(DLL)实现。在早期,Windows的主要部分只需要在3个动态链接库中实现,他们分别代表Windows的3个主要子系统,叫作Kernel(操作系统核心功能服务)、User(负责处理用户接口)、GDI(图形设备接口)。虽然Win API是一个基于C语言的接口,但是Win API中的函数可以由用不同语言编写的程序调用。

在Win32 API函数字符集中,“A”表示ANSI(单字节),“W”表示Widechars(即Unicode,宽字节)。每个以字符串为参数的Win32函数在操作系统中都有这两种方式的版本。

Win32 API参考文档:http://www.yfvb.com/help/win32sdk/

常用的Win32函数:https://developer.aliyun.com/article/226746

WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境。类似的还有WOW32子系统,负责在32位Windows系统上运行16位应用程序。谈谈WOW64:https://www.cnblogs.com/lanrenxinxin/p/4977488.html

Windows是一个消息驱动式系统。Windows系统中有两种消息队列:一种是系统消息队列;另一种是应用程序消息队列。

深入理解Windows消息机制:https://blog.csdn.net/liulianglin/article/details/14449577

消息的来源:由操作系统产生、用户触发事件转换、由另一个消息产生。SDK方式下的程序实现过程:WinMain——>MSG结构体——>注册窗口——>创建窗口——>显示窗口——>刷新窗口——>消息循环——>WindowsProc

Windows消息机制基础:https://www.bilibili.com/video/BV1CU4y1t7E6

虚拟内存并不是真正的内存,它通过映射的方法使可用虚拟地址达到4GB,每个应用程序可以获得2GB的虚拟内存,剩下的2GB留给操作系统自用。

虚拟内存原理:https://www.bilibili.com/video/BV1yW411S7UL

应用程序不会直接访问物理地址使用虚拟内存的好处:简化了内存管理,弥补了物理内存的不足,可以防止多任务环境下应用程序之间的冲突。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NovFif

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值