软件安全-基础知识

软件加解密

不同于其他传统制造业,软件的制作过程中没有其他原料成本,唯一的成本就是人力,随着互联网世界的发展,软件世界也不断变得庞大,其中凝结的人类劳动也越来越多,而这些软件的价值也越来越大,无疑会引起一些不法分子的觊觎,如果这些劳动被他人轻易“借鉴”,那么对软件开发者无疑是不公平的,由此产生了软件安全中的两大方向-软件的加密和解密。
软件的加密和解密是矛盾的两个方面,他们在斗争中相互进步,又相互依赖,是对立统一的辩证关系。但从理论上来说,没有不可解密的保护。所以想从技术上完全实现保护是不可能的,所以如果有一种方法能保证软件在生命周期内不被破解,那么就可以说它是成功的。故软件的保护在软件开发之初就应该考虑周全,并在保护强度、成本和易用性之间选取合适的平衡点。

逆向工程

目前的软件大多以exe、dll文件和一些素材文件构成,其源代码并不直接展示出来。软件逆向就是根据已有产物,推到出其具体实现方法。即可执行程序->反编译->源代码的过程。使用这种技术,个人可以学习他人的软件构造技术,而公司可以窥探他人的商业机密。

逆向分析

和大部分计算机分析技术相同,逆向分析也分为静态和动态
**静态分析:**大多通过程序反汇编得到的程序清单进行分析,因为目前的软件设计都使用人机对话的方式,即机器提示信息等待人的输入。因此,在得到程序清单后可以软件的提示信息为入手点进行分析,大致了解信息前后程序的功能。静态分析工具有IDA。
**动态分析:**静态分析可以了解软件各个模块的大致功能,但并不能获得其中的技术细节,所以需要采用动态分析的方法,也可以说动态分析才是逆向分析的关键,分析调试工具有Ollydbg和Windbg。动态分析阶段主要需要获取程序运行的中间结果,发现程序运行的分支,可能发现提前对后续变量的初始化,且应对加密程序逐块解密,逐块运行的执行的方法。

文本字符

ASCII

文本编码方式的基础是ASCII码,它是一个7位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,共128个代码。由于计算机通常采用“字节”为单位存储和交换数据信息,因此很多计算机厂家对ASCII码进行了扩充,在原来的基础上又增加了128个附加字符,如ANSI、UNICODE等字符集。ASCII是后面两种也是大多数常用编码的基础。

ANSI

ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。

Unicode

对于英文来讲,ASCII码就足以编码所有字符,但对于中文,则必须使用两个字节来代表一个汉字,这种表示汉字的方式习惯上称为双字节。虽然双字节可以解决中英文字符混合使用的情况,但对于不同字符系统而言,就要经过字符码转换,非常麻烦,如中英、中日、日韩混合的情况。为解决这一问题,很多公司联合起来制定了一套可以适用于全世界所有国家的字符码,不管是东方文字还是西方文字,一律用两个字节来表示,这就是UNICODE。

Win API

API的全程为Application Programme Interface (应用程序编程接口),这些函数提供应用程序所需的窗口管理、图形设备接口、内存管理服务等功能,这些功能以函数库的形式组织在一起,形成Windows应用程序接口,简称Win API,该子系统负责将API调用转换成Windows操作系统的系统服务调用,其结构图如下:
应用与操作系统的关系
早期Windows主要部分在三个动态链接库中实现,分别是kernel、User和GDI,其负责功能如下:
Kernel 由kernel32.dll实现,操作系统核心功能服务,包括进程线程控制,内存管理,文件访问等。
User 由User32.dll实现,负责处理用户接口,包括鼠标键盘输入、窗口和菜单管理等。
GDI 由GDI32.dll实现,图形设备接口,允许程序在屏幕和打印机上打印图形和文本。
虽然WIN API为基于C语言的接口,但其中函数可由不同语言调用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值