小商品软件的加密方法

小一你这样好么

小一你这样好么

2016-02-19 20:01

下面请跟着图老师小编一起来了解下小商品软件的加密方法,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
最近读到《计算机世界》的文章《用VB给商品软件加密的方法》,对此我也有比较多的实际体验,和大家探讨一下。

---- 我曾经参与了一些小商品软件的开发工作,每次的加密工作总是让人头痛。既然是商品软件,在目前的情况下,就不得不考虑防止非法拷贝的问题。 !-- frame contents -- !-- /frame contents -- 加密的方法很多,最终目的无非都是确认用户具有合法的软件使用权。所以,必须给合法用户一个使用软件的授权凭证,这种凭证是难以复制的。确实,采用加密狗做授权凭证是不现实的,加密狗的价格在小软件的成本中占的比例太大了。由于小软件一般是使用软磁盘发布的,所以一般的方法是让软磁盘充当发行媒体和授权凭证的双重角色,这种方法的成本是比较低的。《用VB给商品软件加密的方法》中提到的办法我认为是行不通的。盗用者拷贝软件时,一般是拷贝你出售的磁盘上的软件包,而不是拷贝安装以后程序所在目录的内容。所以,要想防止非法拷贝,就需要安装程序或者是应用程序具有确认钥匙盘的功能。

---- 我涉及到的几个产品按照时间顺序来说,最初的是在DOS平台使用Turbo C++3.0开发的。后来的产品是在Windows 3.2下使用VB 4.0进行开发的。最近又改为在Windows95/98下使用Delphi 4.0进行开发。

---- 在DOS平台下的软磁盘加密技术很多,也比较成熟。我们采用的方法是直接调用中断进行底层的磁盘访问,在软磁盘的非凡部位读写一些非凡的信息。这些信息使用一般的拷贝方法是无法复制的,这样就可以达到加密的作用。接触过软磁盘加密的人都知道,这种方法有一定的缺陷,就是兼容性不强。比如在有些机型上,或者假如用户的软驱性能不够好,都无法正确识别钥匙盘。经过在实践中不断地完善,我们取得了比较好的效果。

---- 随着操作系统的不断升级,我们碰到了新的问题。Windows的版本越高,应用程序对底层的控制能力就越弱。比如使用VB开发,就无法直接对磁盘进行底层访问。

---- 经过不断的摸索,我们现在采取的办法是把原来DOS程序中完成加密认证的部分独立出来,编译成一个加密认证程序。让在Windows下使用VB、Delphi开发的应用程序启动这个DOS加密认证程序进行底层读写,返回是否有钥匙盘的判定结果以确定是否继续执行。由于我们在DOS平台下的加密技术已经比较稳定,这是最简便有效的方式。这种做法的前提是DOS程序在Windows 3.2/95/98下均可顺利地执行。

---- 具体的实现方式是由应用程序调用Windows API启动DOS加密认证程序,并等待该程序结束,判定其返回码,以确定是否有钥匙盘。为此,需要对原来的DOS程序略加改动,将判定结果以返回码的形式输出,例如在Turbo C++ 3.0中使用exit(0)返回0,使用exit(1)返回1(至于DOS实现磁盘加密的方法由于资料很多,这里不作具体介绍)。而Windows应用程序读取到返回码以后,就可以确定下一步的动作。 更多内容请看常用软件加密宝典  加密与解密技术  软件插件专题,或
---- 这里要害的代码是启动一个DOS程序,等待它结束,并得到返回码。请参看下面的Delphi函数WinExecAndWait32: Function WinExecAndWait32(FileName :
String; Visibility : integer):dWord;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);

StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current Directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo)
then Result := 0 { pointer to PROCESS_INF }
else
begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

---- 在FileName中给出DOS加密认证程序的名称(带绝对路径),在Visibility中给出是否需要DOS程序的窗口可见,一般设为不可见。
   这种方法在我们的多个小商品软件中使用,效果良好。

---- 需要注重的是这种加密方法在Windows NT中无法运行,因为NT不支持DOS程序直接访问硬件。考虑到操作系统最终会过渡到Windows NT,程序无法直接访问硬件,如何低成本地实现小商品的加密就是一个让人关心的问题。这方面我们还在探索,欢迎有经验的朋友介绍一下。 更多内容请看常用软件加密宝典  加密与解密技术  软件插件专题,或
展开更多 50%)
分享

猜你喜欢

小商品软件的加密方法

编程语言 网络编程
小商品软件的加密方法

小商品网店必学的拍摄技巧

摄影 人像摄影 静物摄影
小商品网店必学的拍摄技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

小商品行业图片拍摄技巧

摄影 人像摄影 静物摄影
小商品行业图片拍摄技巧

用最简单的方法拍出小商品质感

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
用最简单的方法拍出小商品质感

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

(入门级)淘宝小商品摄影小技巧

摄影 人像摄影 静物摄影
(入门级)淘宝小商品摄影小技巧

摄影技巧:(入门级)淘宝小商品摄影小技巧

摄影
摄影技巧:(入门级)淘宝小商品摄影小技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用ASP+XML打造留言本

用ASP+XML打造留言本

WEB页面工具之语言XML的定义

WEB页面工具之语言XML的定义
下拉加载更多内容 ↓