程序加密(精选6篇)
程序加密 篇1
1 概述
从目前来看, 数据库程序通常分为网络版和单机版。对于大型企业的应用程序来说, 采用网络版, 数据库的安全可靠性极高。但对于单机版数据库应用程序来说, 由于用户能够直接接触到数据库文件, 这就给一些人员通过一些工具软件对数据库实现修改、查看、复制等机会, 这就使得数据库的安全受到一定威胁。采用复杂的数据库则又会相对提高了程序设计的复杂程度, 其复杂程度往往超过了应用程序本身, 造成操作冗余, 资源浪费。
采用MDB数据库, 程序设计简单可靠, 而且操作系统自带数据库相关控件, 应用程序简单到只有一个程序文件和一个数据库, 而且可以做成绿色软件, 因此对于应用不太复杂如查询系统、考试系统等等应用软件, 最适合采用这种数据库程序制作。
MDB文件是微软Office Access生成的, 具有结构简单, 易用性强的特点。数据录入时, 可以采用Access进行, 程序运行时则可以完全脱离Office。程序设计也十分简单, 对系统资源要求也不高。但这种数据库的缺点显而易见, 那就是数据库开放性极高, 可以用Access轻易进行编辑, 实现对数据库修改、删除、复制等操作, 尽管具有密码保护, 但是加密算法很简单, 破解MDB数据库密码的工具非常普遍, 可以做到瞬间破解。
如果对数据库中的工作表名、字段名以及每一条记录进行加密, 那么即便知道数据库密码, 可以打开, 得到的也仅仅是乱码, 毫无价值。因此, 采用对数据库内容进行加密, 既能方便使用数据库, 又增强了数据库的安全。
2 基本原理
2.1 数据库本身加密
MDB数据库由众多工作表组成, 每个工作表中又可以有诸如自动编号、整形数值、长整型数、文本、注释、长二进制等等类型的字段, 然后就会有多条记录。数据库程序就是读写数据库中的这些记录, 经过处理后呈现程序界面, 由操作人员进行操作, 然后最终记录到数据库, 这就是数据库应用过程。
在程序处理过程中, 无论数据库是否加密, 所有的操作都是后台进行, 操作人员感知不到。当读取数据库时, 程序将读取的内容进行解密, 解密后进行一系列处理, 得到一定的结果通过程序界面展示出来, 操作员进行相应操作后, 需要写入数据库时, 进行加密操作, 数据库中存储的内容是加密信息。当窥视数据库人员在使用Access打开数据库时, 得到是乱码, 不论是工作表, 还是字段, 还是每一条记录, 全都是加密后的信息。若想得到明文, 就必须知道加密算命法, 然后进行解密。
因为单机版的MDB程序虽然有安全要求, 通常以保护知识产权为目的, 也有的是防止数据被篡改, 一般数据库删除损失不会很大, 但是被复制, 被修改损失较大。总的来说安全要求不是十分高, 过高的要求则通过网络版实现。
如果窥视数据库人员得到密文想要得到明文, 就必须进行解密, 数据库信息量往往很多, 解密就需要重新开发解密程序。不同的加密算法, 不同的加密强度, 导致解密工作能否成功概率不一样。
现成的高强度加密算法种类很多, 但绝大多数过于复杂, 最关键的是仅适合英文字符加密, 并不适合汉字加密。因为要对汉字加密, 介绍的加密算法是针对汉字设计的独创简单算法, 尽管加密强度并不高, 没有高深的数学理论作支撑, 但对于一般单机数据库程序来说加密强度足够了。更强的加密需求则使用网络版, 根本就不让窥视者接触数据库。
加密过程:读取一串需要加密的字符串, 颠倒这个字符串, 例如“昨夜星辰昨夜风, 画楼西畔桂堂东;身无彩凤双飞翼, 心有灵犀一点通。”颠倒之后就变成了“。通点一犀灵有心, 翼飞双凤彩无身;东堂桂畔西楼画, 风夜昨辰星夜昨”, 颠倒后读取每个字符 (一个汉字算一个字符, 不算两个) 的U-nicode代码, 然后进行异或操作得到新的一个数值, 将这个数值转化为字符保存, 实现加密过程。
其中异或操作时, 汉字的Unicode代码和什么数值异或操作呢?这个异或数值可以指定不同值, 而且第一个字符异或数值和第二个、第三个都不同, 程序设计采用“基数+字符串个数*步长=异或数”的机制, 防止固定数值易被解密。对于数据库来说, 数据表名、字段名等长度低于10个字符的, 步长值在5左右, 对于超过10个汉字长度的长文本、备注型字段内容, 步长值最好为0, 因为如果不为零, 可能导致异或数过大, 当与汉字的Unicode代码异或运算之后, 再转换成字符时则超出字符Unicode代码范围, 导致不可以, 最终造成解密失败。
在设计加密算法时, 将某些字符, 特别是英文、数字半角字符, 先用特殊一段字符代替, 然后再进行上述异或运算, 加密可靠性会更强一些, 例程中删除了这段代码。加密代码如下:
上述子程序代码的“异或”值一般取30以内。
解密过程:解密过程和加密过程刚好相反, 因为异或操作可逆, 因此解密算法除了解密后, 再次颠倒字符串顺序。解密代码如下:
对于MDB数据库来说, 工作表名称、字段名称、记录等的加密, 加密时, 异或数、步长选择不同, 增加解密难度。字段编号、字段类型、记录编号都是不同的, 其特征值都可以被程序利用, 可以放入到加密算法里, 为了简单叙述起见, 加密算法中删除了相关代码。
加密后, 数据库可以用Access正常打开, 但是里面全是乱码。很多人员见到乱码, 会以为是汉字BIG5或者UTF-8等编码, 然后找来转换工具转换, 其结果是越弄越乱。
2.2 程序加密
数据库内容进行了加密, 可以初步防止对数据库的窥探, 但是现在跟踪工具程序非常强大, 可以跟踪主程序的运行, 得到解密算法, 毕竟算法不是太复杂。这个时候对程序本身进行加密, 就可以防止算法被逆向推导出来。
简单的程序加密做法是将编译后的可执行文件用UPX压缩, 压缩后得到文件大小, 然后修改源代码中判断文件大小部分, 使得程序运行时判断可执行文件大小, 相同则执行, 不相同则跳入相关处理代码。编译后再压缩, 压缩后用再用二进制编辑器修改可执行文件文件头中的某些内容, 这些内容也是由程序源代码获取, 和程序内置的内容比对, 相同则通过, 不同则跳入相关处理代码。也可以采用MD5校验方式作为程序完整性标示, 有程序判断, 最终决定通过还是跳入相关处理代码。上述指的是进入正常程序, 相关处理代码主要包括提示程序被篡改信息、拒绝执行、自毁等代码组成。例如自毁代码, 采用二进制读写方式, 修改数据库文件, 使之不能被再次使用。修改的位置、内容、偏移量固定, 可以用专门编写的修复程序修复, 否则就是一个坏文件, 没有再次被使用的机会。为了方便起见, 通常修复程序也放在程序界面上, 但是被隐藏掉, 做成类似于复活节彩蛋, 需要特殊的操作才能激活。
3 数据库操作
列出实现不同功能的VB关键代码例程, 代码作用参看代码后面的备注。数据输入数据库之后, 用Access打开数据库文件“data.dat”检查工作表、字段、记录是否被加密。
3.1 创建工作表源代码
本段代码创建一个由操作者指定的工作表名, 同时在工作表下创建4个不同类型的字段名。其中工作表名称、4个不同的字段名称都进行加密处理。
创建数据库出现问题:
3.2 添加记录源代码
数据表、字段设计好之后, 正常使用时是对记录的操作, 下面代码就是添加记录例程。
3.3 其他操作
需要强调的是, 数据库在反复使用后, 体积会庞大, 经常进行数据库压缩也是一个好习惯。数据库压缩过程是先将数据库压缩成一个新的数据库, 然后删除未压缩的数据库, 再将压缩后的数据库改名为原来的数据库。
数据库压缩代码例程:
4 结语
试图通过对数据库内容的加密解密操作, 实现数据库的安全简单化应用, 非常适合于单机版的数据库应用程序, 如模拟考试练习系统、资料收集系统、各类数据库类型的共享软件等, 具有一定的应用价值。加密算法适合汉字加密处理, 虽然算法粗糙简单, 相对于不能加密汉字的著名加密算法来说, 实用性较强。
一种非对称加密算法的程序实现 篇2
互联网的飞速发展极大改变了人们工作生活方式,是信息往来的重要手段。人们可以通过互谅网浏览远程主机的资源,或者可以通过email在网上交传递邮件信息,极大地提高了工作效率。然而,互联网络给人们带来方便的同时,也给用户提出了新的安全挑战。TCP/IP协议是国际互联网的核心通信协议,是对等计算机通信规则和规范的集合,TCP/IP协议在当初设计实现时是存在一定缺陷的,数据在传输到目的主机前需要经过中间计算机和通信线路,而这些中间路径对于源主机和目的主机都是透明的,或者说收发主机用户并不关心这些中间过程。数据在传输过程中可能受到第三方的攻击干扰,如侦听、窃取等。因此互联网上传输的数据会经受各种安全挑战。
数据加密技术和数字签名技术是解决网络信息安全的技术手段,其理论支撑是密码学。它的基本思想是对发送端发出原始明文进行复杂的变换,变换数据不具有规律性,十分杂乱,称之为加密过程。传输途中的中间主机很难破译原始明文,达到数据保密的效果。而合法的终端计算机用户则可以借助密钥密钥和解密算法将密文还原成明文。而加密算法是密码学的重要研究内容,高级加密标准(AES)是一种流行的非对称加密算法,有关资料文献中有该算法描述,但附有完整的程序实现较少,本文介绍该算法程序实现,让大家建立该算法感性认识。。
2 AES加密算法
2.1算法描述
AES算法是一个数据块和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长可分别为128,192,256 位。在加密之前,对数据块做预处理。首先,把数据块写成字的形式,每个字包含4 个字节,每个字节包含8 个比特信息;其次,把字记为列的形式。这样数据块就可以用以下形式:
其中,每列表示一个字aj =[a0ja1ja2ja3j] ,每个aij表示一个8比特的字节,即aj ∈ GF(28)[x]/(x4+ 1),aij ∈ GF(28) 。
我们用Nb表示一个数据块中字的个数,那么Nb=4,6 或8。类似地,用Nk表示密钥中字的个数,那么Nk=4,6 或8。例如,Nk=6的密钥可以记为如下的形式:
算法轮数Nr有Nb和Nk共同决定,具体值可以表示形如序列(Nk,Nb,Nr)。一共有9 各序列(4,4,10),(4,6,12),(4,8,14),(6,4,12),(6,6,12),(6,8,14),(8,4,14),(8,6,14),(8,8,14)。加密和解密过程中,数据都是以这种字或字节形式表示的。
AES算法的加密是将明文块经过白化技术处理后,进入轮函数,而入轮函数又由字节代换、行移变换、列变换和密钥4个变换组成,这样经过Nr轮之后,把明文变换成密文块。为了在同一算法中实现加密和解密,需要对最后一轮做必要的调整,最后一轮没有列变换。
2.2算法实现
(1)AES轮变换
AES算法属于分组密钥算法,分组密钥算法加密过程、解密过程、输入分组和输出分组过程中的中间分组都是128 比特。AES的轮变换是基于Add Round Key,Sub Bytes,Shift Row和Mix Column等4 种变换的复合。限于篇幅,仅介绍前面两种变换。Add Round Key变换过程密钥将会与原矩阵合并。每次循环加密中,都会由主密钥产生一把回合密钥(通过Rijndael密钥生成方案产生),密钥大小会跟原矩阵一样,以与原矩阵中每个对应的字节作异或(⊕)运算。其示意图如图1所示。
(2)Sub Bytes变换,字节变换(Sub Bytes)是作用在字节上的一种非线性字节变换,这个变换(或称S-盒)是可逆的,它定义为图2的形式。这种利用有限域上的逆映射构造S-盒好处是:表述简单,使人相信没有陷门,最重要的是其具有良好的抗差分析和线性分析的能力。附件的仿射变换,目的是用来复杂化S-盒的代数表达,以防止代数插值攻击。当然具体实现时,S-盒也可用查表法来实现。其部分代码如下:
其示意图如下图2所示。
(3)加解密算法程序实现
加密主要是实现对数据信息的加密,先读进明文,利用密钥产生轮子密钥,然后进行各种轮变化,最终形成密文,其实现流程图如下3 所示。解密算法程序实现这部分主要实现对加密数据信息进行解密。其具体实现是:先读进密文,利用密钥产生轮子密钥,然后进行各种逆轮变换,最后得出明文。其实现流程图如图4所示。
附程序实现代码
加密代码:int jiami(unsig
解密代码:
3 结论
AES在实现方面具有速度快、可并行处理、对处理器的结构无特殊要求,算法设计相对简单,分组长度可以改变,而且具有很好的可扩充性,本文对AES算法进行了详细地分析和研究,本文介绍了AES加密解密算法基本思想和主要步骤, 最后用程序实现该算法。
参考文献
[1]赵勇.高级加密标准AES的实现研究[D].电子科技大学,2004.
[2]赵战生、吕述望.信息安全保密教程[M].中国科学技术大学出版社,2006.
[3]James Mc Caffrey.用新的高级加密标准(AES)保持你的数据安全.MSDN Magazine,2003.
[4]卢开澄.计算机密码学-计算机网络中的数据保密与安全[M].清华大学出版社,2007.
[5]谷利泽,杨义先.现代密码学教程[M].北京邮电大学出版社,2009.
[6]Joan Daemen、Vincent Rijm.高级加密标准(AES)算法-Rijn-dael的设计[M].清华大学出版社,2004.
程序加密 篇3
目前,在数据库中数据存放大多数都是以明文形式存放,要确保这些数据的安全,最有效的办法是对数据进行加密。对存储在数据库内的数据进行加密处理后,各用户的数据由各自所拥有的密钥加密,包括数据库管理员在内的其他用户都无法对获得的信息进行正常解密,从而保证了用户信息的安全。因此,数据加密技术是现在保护数据安全的重要手段之一,其中数据加密的算法和密钥管理是数据加密技术的研究热点。在SQL Server 2005中提供了完善的加密算法和用户的密钥管理机制。
2 SQL Server 2005的数据安全
SQL Server 2005将数据加密算法和密钥管理作为数据库的内在特性,提供丰富的多层次的加密算法来保护它内部的密钥和数据,并能根据用户需求选择不同的加密粒度对数据进行加密。所有密钥或证书都由数据库系统内部管理,图1显示了SQL Server 2005采用多层密钥来保护它内部的密钥和数据。
其中,对称密钥适合加解密大量数据,存在密钥交付问题,在SQL Server中数据加解密由内部实现,则不存在密钥交付问题。非对称密钥有公/私钥,公钥能公开发布,当需要用加密方式向服务器外部传送数据时,这种加密方式更适合。数字证书可用于验证密钥使用者的身份。它们都可以做为加密数据的密钥,也可以做为保护其他密钥的密钥,每个密钥也能通过设置密码对自身进行保护。
3 实现加解密数据的访问
下面利用VB语言调用SQL触发器,以数据库中密钥的操作为实例来说明加解密的过程。其中数字证书对对称密钥加密,对称密钥加密用户数据,数字证书由数据库主密钥和自身设置的密码保护。
基本步骤如下:
(1)SQL数据库连接
'数据库连接字符串
(2)建立密钥体系
在第一次用密钥加密数据时,需要由用户在数据库中建立相关密钥,在此例中建立数字证书Cert_Gy和对称密钥Sym_Gy,其中数字证书用于加密对称密钥,数字证书本身由密码'guoHK.123'进行保护。
(3)数据加密存储
先打开对称密钥Sym_Gy,使用加密函数EncryptByKey()对数据进行加密保存到数据库,然后关闭对称密钥。主要语句如下:
(4)读取解密数据
当用户需要读取数据时,打开对称密钥Sym_Gy,用解密函数decryptbykey()进行解密数据读取出明文,最后关闭对称密钥,主要语句如下:
从图2中看到,从VB实例中输入的数据,被用户生成的对称密加密保存在数据库中,直接读取的是乱码,使用用户生成的对称密钥解密后则能正常读出明文。
4 结语
利用SQL Server 2005提供的丰富的加密算法进行数据的加解密存储,减少了用户在编程方面对数据库安全及密钥的管理等负担,对程序设计本身影响小,提高了用户数据的安全性。但也还存在一些问题和不足,如大量的数据加密导致存储空间增加,数据本身的操作性下降,数据加解密过程是在数据库中完成,在网络则是以明文传输等。但不管怎样,通过调用SQL Server 2005的内置加密特性,给大量使用数据库的用户提供一个方便的安全存储空间,最大限度地保证数据的存储安全。
参考文献
[1]申时凯,李海雁.数据库应用技术(SQL Server2005)[M].北京:中国铁道出版社,2008.
[2]邹建.深入浅出SQL Server2005开发、管理与应用实例[M].北京:人民邮电出版社,2008.
[3]姚巍.Visual Basic数据库开发及工程实例[M].北京:人民邮电出版社,2004.
程序加密 篇4
3G是一个在全球范围内覆盖与使用的网络系统, 信息的传输不仅经过全开放的无线链路, 也经过开放的全球有线网络, 同时还提供了多种信息服务, 因此, 如何在第三代移动通信系统中保证业务信息的安全性以及网络资源使用的安全性已经成为3G系统中重要而迫切的问题[4,5]。
1 3G网络安全体制
3G安全体制总结构如图1所示, 其可分为: (1) 网络接入安全:提供安全接入3G服务网的机制并抵御对无线链路的攻击; (2) 网络域安全:保证网内信令的安全传送并抵御对有线网络的攻击; (3) 用户域安全:主要保证对移动台的安全接入; (4) 应用域安全:使用户域与服务提供商的应用程序间能够安全地交换信息。
2 3G网络隐患的防范措施及设计思路
3G网络对无线链路的攻击和服务网络的攻击从以下几方面着手:用户和网络的相互鉴权;使用UMTS的完整性保护机制来保护信令的完整性;采用公钥密码体制;使用新的密码技术;使用多层次、多技术相结合的保护机制, 即进行全方位的数据保护, 来保证信息生存的安全。
2.1 写入和读取留言的认证
程序所研究的是管理员与登录者鉴权的问题, 分为三个模块, (1) 主程序模块:该程序模块主要实现进入系统的验证界面, 提供留言人与登录人区分的操作; (2) 留言模块:该程序模块主要提供对留言者进行身份验证以及进入留言界面的功能; (3) 查看留言模块:该程序模块主要提供对管理员身份验证以及进入后查看留言信息的功能。其中, 程序总体结构框架如图2所示:
2.2 设计思想
本程序使用的设计思想是对虚拟的一个数据库 (key.txt文本) 进行读取与写入操作。设计思想框架如图3所示:
2.3 设计模式
本程序所采用面向对象的设计模式, 通过留言者与管理员对系统的请求作出相应的响应, 并对其身份进行鉴权, 做出各自不同的响应, 模式如图4所示:
3 用户间认证程序设计及运行结果
针对3G存在的各种攻击情况, 采用了用户对象之间的相互认证程序来实现其安全防护功能的研究。
本文以留言来辨别判断用户的真伪, 用户彼此用留言作为进入对方界面的凭证, 用户A, B分别有自身的保护问题。
运行结果如图5所示:
3 结论
对3G网络隐患的分析和研究, 利用C语言编程设计实现了用户加密及用户间的相互认证。3G的安全威胁来自攻击者利用网络协议和系统的弱点, 非授权访问、处理敏感数据, 对用户造成损失。因此, 3G网络隐患的应对措施可以通过用户之间的相互认证来考虑。
参考文献
[1]刘国刚.3G网络安全分析[J].通信管理与技术, 2006 (3) :11-12, 14.
[2]胡金甫, 马丁.3G网络的隐患与防范技术[J].网络安全技术与应用, 2009 (6) :30-32.
[3]王志勤.第三代移动通信发展概况[J].江苏通信技术, 2003 (9) :6-9.
[4]Christos Xenakis, Lazaros Merakos.Security in thirdGeneration Mobile Network.Communication Networks La-boratory[D].Department of Informatics and Telecommu-nications, University of Athens, 2003.
[5]Liu Lijun, Liu Fei, Wei Bing.Research on SecurityMechanisms of 3G Authentication Key[P].Chinese Pa-tent:200710121046, 2009.
程序加密 篇5
1程序设计
1.1算法思想
常用的数据加密方法主要有移位和置换法,目前,实现移位和置换的算法很多。从特点看,异或运算最适合用于简易加解密运算,因为当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。使用这种算法能够比较容易地对明文和密文进行转换。
使用XOR对数据加密是很容易破解的。因为利用XOR对明文字符进行置换,相同的明文字符会置换为相同的密文字符。如果有足够多的密文,就可以根据字符使用的频率,在密文中猜测出使用最多的几个字符,进而猜测出英文单词或中文字词,这就比较容易的破译密文。例如字符e,假设密钥为11,其XOR结果为chr(asc(“e”)XOR 11)=n。字符串eeeeee的密文为nnnnnn。根据统计结果在英文中字符e用的最多,在足够多的明文中统计出现最多的字符,得出的结果为n,即可推断n的明文应为字符e,据此可推算出密钥11,破译也就十分容易了。
要增加其难度,就要在对文件加密时加入一随机因子,使相同的明文以不同的字符呈现在密文中。仍以字符串eeeeee为例,将字符的位值k与密钥11相加,与其XOR的结果为:
字符串eeeeee的密文为ihkjut。相同的明文字符变成了不同的密文字符。
1.2在VB中实现的可行性
VB中的所有和字符串相关的函数使用的字符集都是Unicode。Unicode是用两个字节表示一个字符的字符编码方案。此方案与其它传统单一字节的字符集不同的是,其使用两个字节来表示一个字符,这使得可用字符的数量大大增加。Unicode的字符都是双字节的,VB在进行内部处理时,英文字符和中文字符被同等对待。并且支持世界上的所有的常用文字。
VB提供了XOR函数,可以对数字、布尔变量,字符进行异或运算,两次异或的结果即为原值。因此,是基本加/解密函数。例如:对于中文字符“息”,asc(“息”)XOR28=24943,24943 XOR 28=24687,chrw(24687)=“息”。
由此可以认为:以位值作为随机因子,用XOR运算对数据进行加/解密在VB中是可以编程实现的。
1.3程序界面
程序使用单一窗口,窗口中的主要控件如下。
1.4参考代码
2结束语
加/解密程序虽然使用代码较少,但由于密钥与字符位值的结合,使得相同字符在密文中的呈现各不相同,增大了破译难度。
参考文献
[1][美]Scott Warner著.Visual Basic6.0程序设计.第一版.汉明工作室,译.北京:人民邮电出版社,1999-08.
程序加密 篇6
在windows平台下的加密系统是一个对windows内核的探索,软件加密技术一般应该包括四个方面:防拷贝、防篡改、防跟踪和防解读。本文主要解决其中的一个问题——防解读,即防止通过使用Soft-ice或者其他的调试软件来对程序进行反汇编,阻止分析源程序,以此来实现对软件的保护。对windows下的可执行文件加密可采用外壳加密法,它是直接处理待加密软件,在原软件的外面罩上一层“外壳”,这层外壳在原软件运行前先得到执行,从而达到加密的目的。这种方法实现起来相对困难,需要清晰了解windows可执行文件的格式,而且还要解决外壳与原软件之间的连接问题,但如果采用了高级的反跟踪与变形技术,经加密后的软件不仅操作丝毫不用改变,而且还有很好的保密性。采用的加密方法是外壳式的,主要目的就防止静态分析。所谓静态分析就是使用反汇编软件(如W32dasm,unasm等等),对可执行文件本身进行反汇编。它反汇编的结果是按照文件中的指令代码直接翻译而来的。
2 用异或算法实现外壳加密
外壳式就是加密软件把一段代码附加到执行程序上,并把程序入口指向附加的代码中。在此之前,我们先用一段程序对代码节,这个关键的节进行加密。当被加密的程序装入内存之后,附加代码首先执行,它是一个解密模块,通过附加代码对加密的模块进行解密,恢复原程序,并转入原来的程序中执行。但是,当有人试图通过静态分析的方法,对程序进行阅读和修改时,他们只会得到一个加密后的密文。这就是因为我们已经对关键的节(Section)进行了加密处理,这样,原程序完全可以抵御如W32dasm这样的功能强大的反汇编软件的静态分析。但外壳程序并不能保证不被反汇编软件的动态分析和修改,这是由其特殊的作用和反跟踪的脆弱性所决定的。
加密的核心代码主要是用win32汇编来完成的。用File Stream.Writebuffer的方法将修改后的文件头和代码段写入一个新的文件。
需要修改原程序的入口地址,让加密后的软件先执行我们的解密模块。在PE文件中,我们只需要把Address Of Entry Point指向我们自己的附加代码段,让附加代码段先执行就达到了目的。
异或算法加密的主程序如下: