软件保护技术-备课.doc
文本预览下载声明
软件保护技术 备课笔记
步山岳
计算机工程系
第1章 基础知识
1.1文本编码方式
美国信息交换标准码(ASCII: American Standard Code for Information Interchange)是一个七位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,总共128个代码。如“1”的ASCII码是31H(48D),“A”的ASCII码是41H(65D),“a”的ASCII码是61H(97D)。
由于计算机通常用一个“字节( byte)”8位二进制的存储单位来进行信息交换,因此,ASCII码在计算机中用8位来表示,最高位补0。其他字符集,是对ASCII码的扩展,例如ANSI(American National Standards Institute)、Symbol、OEM等字符集是8位字符集,值在127以下的部分是和ASCII相同。
Unicode也是ASCII的一个扩展。在Unicode用两个字节来表示,是一种双字节编码机制的字符集,可表示65536个字符,使用0~65535之间的双字节无符号整数对每个字符进行编码,本书把Unicode称宽字符(Widechars)
在Unicode中,所有的7位ASCII码都被扩充为16位,高位扩充的是零。如“pediy”,它的ASCII码是:
0x70 0x65 0x64 0x69 0x79
其Unicode码的十六进制是:
0x0070 0x0065 0x0064 0x0069 0x0079
Intel处理器存放数据时,低位字节存入低地址,高位字节存入高地址。
注意:内存地址编号是“上(左)”为低地址编号,“下(右)”为高地址编号,看图1.1。
1.2 Windows API函数
1.2.1什么是API函数
1.什么是API函数?
API函数是提供应用程序运行所需要的窗口管理、图形设备接口、内存管理等各项服务功能的函数,提供这些功能以函数库的形式组织在一起,形成了Windows应用程序编程接口(API Application Programming Interface),简称WinAPI。
看图1.2,Win API子系统将API调用转换成Windows操作系统的系统服务调用,在它的下面是Windows的操作系统核心,而它的上面则是Windows应用程序。可以说Win API是构筑Windows框架的核心基石。
API函数从Windows 1.0支持不到450个函数,到现在己有几千个函数。
2.API函数在计算机或操作系统的什么地方?
API函数在计算机或操作系统的什么地方:动态链接库DLL(Dynamic-Link Library),Windows运转的核心就是“动态链接”。
3.什么是动态链接库DLL?
DLL就是包含了若干个函数、类和资源的库文件,它可以被其它可执行文件(如.EXE文件和其它DLL文件)动态调用。
4.动态链接库的优点
使用DLL的使多个应用程序,甚至是不同语言编写的应用程序可以共享一个DLL文件,真正实现了“资源共享”,同时,节省内存,减少交换操作,节省磁盘空间DLL自己不能直接执行,但其他程序可以调用 DLL 中的一个实例。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。内存DLL中,如:
Kernel32..dll:包括进程与线程控制、内存管理、文件访问等,提供操作系统核心功能服务;
User32.dll:负责处理用户接口,包括键盘和鼠标输入、窗口和菜单管理等;
Gdi32.dll:图形设备接口,允许程序在屏幕和打印机上显示文本和图形;
Kernel、User和GDI是Windows三个主要的动态链接库。
Advapi32.dll:包括对象安全性、注册表操作;
COMCTL32.DLL:通用控件;
COMDLG32.DLL:公共对话框;
SHELL32.DLL:用户界面外壳;
DIBENG.DLL:图形引擎;
NETAPI32.DLL:网络。
6.DLL文件位置
在Windows NT/2000/XP中,这些DLL文件通常位于系统安装目录里的Windows\SYSTEM或Windows\S YSTEM32子目录中。
1.2.2 什么是句柄
句柄(Handle)是Windows用来标识被应用程序所建立或使用的对象的唯一整数值(32位,
显示全部