用delphi编写的软件,怎样防止被修改
我今天发现网上有一款软件是修改我的软件的,除了软件的版权信息被修改,其它都一样,请问该怎么防止软件被修改
追问:用TMemoryStream怎么测啊?每次修改软件都要测,太麻烦了,有没其它方法
我今天发现网上有一款软件是修改我的软件的,除了软件的版权信息被修改,其它都一样,请问该怎么防止软件被修改
追问:用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 看学学院