当前位置:编程学习 > Delphi >>

用delphi编写的软件,怎样防止被修改

我今天发现网上有一款软件是修改我的软件的,除了软件的版权信息被修改,其它都一样,请问该怎么防止软件被修改
追问:用TMemoryStream怎么测啊?每次修改软件都要测,太麻烦了,有没其它方法
答案:这个问题很简单:
每个程序都有自己的大小,(因为程序也是文件)
那么 你的程序在最终编译后~ 程序的大小是一个定值~ 你只需用测定出你的程序的长度值(建议使用TMemoryStream 测定其中有一个Size属性,可以测得程序的精确大小值)。 然后在工程文件中指定~ 当你的程序的大小等于你测定出来的数值的时候~ 就启动程序。而不等于的时候,显然是有人修改了这个程序。 你只需要在主窗体还没有启动的时候就 使用Exit 语句。程序自然就无法启动了例如:
program Project1;

uses
  Forms, Windows,
  Classes,
  SysUtils,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
  ExeStream: TMemoryStream;

const
  ExeSize = 10000; //你事先测定的程序的长度

begin
  Application.Initialize;
  ExeStream := TMemoryStream.Create;
  ExeStream.LoadFromFile(Application.ExeName);
  if ExeStream.Size <> ExeSize then begin
     Application.MessageBox('本程序被修改了!无法使用了!','程序被修改',MB_ICONERROR);
     Exit;
  end;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

但是,请注意。当你修改了代码。或者重新编译后。程序的大小可能会发生改变。这时就要重新测定程序的长度了,不然就会报错的。另外切记:此代码只适合于在不加壳的程序中使用。而且一定要确保此代码是在最后一次编译的时候使用。

还是 加个壳比较好 防止使用工具来调试 商业软件可以用THEMIDA 加壳 一般很难被破解

加壳!

插花指令,

程序越简单越不容易破解

你程序调用的方法最好自己编写,用别人的代码可能被破解

没有绝对安全的办法,只能是魔高一尺、道高一丈;建议你研究一下逆向工程之类的,推荐网址 http://www.pediy.com 看学学院

上一个:现在学delphi7还有前途和钱途不
下一个:delphi与数据表之间修改和删除的操作

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,