【加密与解密(第四版)】第一章笔记
第一章《基础知识》
导读:什么是API?什么是Unicode?什么是小端序?只有了解这些基础知识,在加密与解密的过程中才能有的放矢地处理各种问题。本章将系统地解答这些问题。
1.1什么是加密与解密
1.1.1 软件的加密与解密
一款优秀的软件,其技术秘密往往成为他人窃取的重点。
如果一种保护技术的强度能达到让解密者在软件的生命周期内都无法将其完全破解的成度,这种保护技术就是成功的。
系统底层知识是大型软件的基础,如果这个基础没有打牢,贸然向高层设计领域进军,那么构造的软件“大厦”将会是何种质量也就可想而知了。
1.1.2 软件逆向工程
逆向工程是根据已有的产物和结果,通过分析来推导出具体的实现方法。对软件来说“可执行程序——>反编译——>源代码”的过程就是逆向工程。
逆向工程的内容可以分为三类:软件使用限制的去除或者软件功能的添加;软件源代码的再获得;硬件的复制和模拟。
一个逆向工程大师应该具备的特征:永远保持好奇心,崇尚自由;勤奋与毅力;精通至少一门编程语言;扎实的汇编功底和系统编程知识。
逆向工程是一门优雅的艺术,而不是一些低层次者手中粗陋的工具;逆向工程的目的是学习与再利用;逆向工程的精神就是“自由”。
1.1.3 逆向分析技术
通过软件使用说明和操作格式分析软件(使用软件,阅读软件说明书);静待分析技术(IDA)(通过静态分析可以了解各个模块的功能,以及整个软件的编程思路);动态分析技术(OllyDbg、WinDbg、X64/32Dbg)(静态分析很难获得中间结果;软件前一模块可能会对后一模块做一些初始化工作;有的加密程序在运行时会采用逐块解密、逐块执行的方法)
如何有效地进行动态跟踪:对软件进行粗跟踪(跳过CALL、REP、LOOP等指令);对关键部分进行细跟踪(在每次跟踪时把比较关键的中间结果或指令地址记录下来,会对下一次分析有很大的帮助)
IDA和OD的区别:
IDA是静态调试,有结构图,并且可以自动生成伪代码;OD是动态调试。
加载可执行程序时,OD是把整个空间都加载起来,而IDA只是加载了exe文件,它所关联的dll并没有加载
https://blog.csdn.net/feixiaoxing/article/details/105351395
1.2 文本字符
1.2.1 ASCII与Unicode字符集
现代的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字符编码的一个扩展,
各种编码:扩展ASCII码,不同的国家有不同的字符集。Unicode转换为utf8的规则,utf8没有大小端的问题。超过0xFFFF的Unicode字符WINAPI也无能为力(附各种字符编码表及转换表)good - findumars - 博客园
Unicode、UTF-8、UTF-16:https://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html
1.2.2 字节存储顺序
大端存储:高位字节存入低地址,低位字节存入高地址(看起来方便)
小端存储:高位字节存入高地址,低位字节存入低地址
一般来说,X86系列CPU都是小端存储,PowerPC通常是大端存储。因为网络协议也都是采用大端存储方式来传输数据的,所以有时也把大端存储方式称为网络字节序
1.3 Windows操作系统
1.3.1 Win32 API函数
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参考文档:Win32API参考手册
常用的Win32函数:常用的Win32函数清单-阿里云开发者社区
1.3.2 WOW64
WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境。类似的还有WOW32子系统,负责在32位Windows系统上运行16位应用程序。
Wow64不支持16位应用程序的执行(32位Windows支持),也不支持加载32位内核模式的设备驱动程序。Wow64进程只能加载32位dll,不能加载原生的64位dll。类似的,原生的64位进程不能加载32位的DLL。唯一列外的是,在跨越体系结构差异时,能够加载仅包含资源或数据的Dll,这是允许的,因为这些Dll只包含数据,不包含代码。
谈谈WOW64:谈谈Windows Wow64 - _懒人 - 博客园
1.3.3Windows消息机制
Windows是一个消息驱动式系统。
Windows系统中有两种消息队列:一种是系统消息队列;另一种是应用程序消息队列
深入理解Windows消息机制:https://blog.csdn.net/liulianglin/article/details/14449577
Windows消息机制基础:https://www.bilibili.com/video/BV1CU4y1t7E6
1.3.4 虚拟内存
虚拟内存并不是真正的内存,它通过映射的方法使可用虚拟地址达到4GB,每个应用程序可以获得2GB的虚拟内存,剩下的2GB留给操作系统自用。
虚拟内存原理:16 虚拟内存原理1_哔哩哔哩_bilibili
应用程序不会直接访问物理地址
使用虚拟内存的好处:简化了内存管理,弥补了物理内存的不足,可以防止多任务环境下应用程序之间的冲突。
【加密与解密(第四版)】第一章笔记相关推荐
- 概率论与数理统计学习总结(浙大第四版 第一章)
第一章 概率论的基本概念 1. 随机试验 2. 样本空间.随机事件 3. 频率与概率 4. 等可能概型(古典概型) 5. 条件概率 6. 独立性 7. 小结 1. 随机试验 随机试验:可以在相同 ...
- 计算机简史第三版第一章笔记,美的历程第一章笔记.docx
PAGE PAGE # <美的历程>读书笔记:第一章?龙飞凤舞 在参观博物馆时,面对一部分国宝,你是否曾经疑惑:面前这一堆石块瓦片.铜铁草纸, 我既无法欣赏到它们的美,也不理解为什么它们价 ...
- 机器人导论(第四版)学习笔记——第一章
机器人学导论(第四版)学习笔记--第一章 1. 概述 1.1 背景 1.2 操作臂力学和控制 1.3 符号 1. 概述 1.1 背景 工业自动化的发展带来了工业机器人的高速发展.本书聚焦机械臂的力学和 ...
- 计算机网络第七版第一章阅读
计算机网络第七版第一章阅读 第1章 概述 1.1 计算机网络在信息时代的作用 1.2 互联网概述 1.2.1 网络的网络 1.2.2 互联网基础结构发展的三个阶段 1.2.3 互联网的标准化工作 1. ...
- 数据结构(C语言)第二版 第一章课后答案
数据结构(C语言)第二版 第一章课后答案 这本书,我以后也会用,所以趁着考完试做个整理,顺便分享出来.电子资源发不出来,放评论区吧,有需要自取. 1. 简述下列概念:数据.数据元素.数据项.数据对象. ...
- 机器人导论(第四版)学习笔记——第三章
机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...
- 按照鬼哥学so变化,四,第一章的例子
跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化 听鬼哥说故事 ---------------------------------------------切割线--------------- ...
- 数字图像处理--冈萨雷斯第4版--第一章 绪论
数字图像处理--冈萨雷斯版--第一章 绪论 第一章 绪论 1.1 什么是数字图像处理 1.2 数字图像处理的起源 1.3 数字图像处理技术应用领域实例 1.3.1 伽马射线成像 1.3.2 X射线成像 ...
- 电路基础罗先觉版第一章总结
电路基础罗先觉版第一章总结 重点: ①电流电压的参考方向 一个元件的电流或电压的参考方向可以独立的任意指定.如果指定流过元件的电流的参考方向是从标以电压正极性的一端指向负极性的一端.即两者的参考方向一 ...
- 机器人导论(第四版)学习笔记——第二章
机器人学导论(第四版)学习笔记--第二章 2. 空间描述和变换 2.1 引言 2.2 描述:位置.姿态与位姿 2.3 映射:从一个坐标系到另一个坐标系的变换 2.4 算子:平行,旋转和变换 2.5 总 ...
最新文章
- Android学习笔记36:使用SQLite方式存储数据
- 保存现场数据和状态:onSaveInstanceState\onRestoreInstanceState\onCreate()
- Java 开发者每天都在做什么?
- Ping 命令完全讲解
- Codeforces Round #446 (Div. 2) D. Gluttony 构造,思维
- excel如何从字符串中截取指定字符(LEFT、RIGHR、MID三大函数)
- oracle11g怎么打开oem,oracle11g启动OEM
- 目标跟踪算法研究综述
- Python 让书法作品和 PIL 库来一场美丽的邂逅
- linux 命令杂集
- centos7下解压rar文件
- ABO区块链在医疗行业中的重要作用
- c atol()函数_atol()函数以及C ++中的示例
- 学习正则表达式 - 18位身份证号
- 地图缓存和动态地图服务
- android系统如何获得外置卡路径
- ....他乡遇故知....
- 第七讲:5.物联网开关——自动化控制任务光照控制台灯实验例程
- Wiremock的使用
- 计算机英语教学模式,英语教学模式计算机专业论文