Delphi 如何用代码实现防止修改被资源?

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:44:29
不加壳的情况下,Delphi有什么方法可以简单实现程序被修改后就运行不了,有没有代码可以实现?

因为我以前就修改过一个程序,是Delphi的,我用ResScope修改一下程序的标题,然后程序就运行不了了.它里面好像有一句什么代码,我把那句代码删除后,再修改资源程序就可以运行了!

这个问题很简单:
每个程序都有自己的大小,(因为程序也是文件)
那么 你的程序在最终编译后~ 程序的大小是一个定值~ 你只需用测定出你的程序的长度值(建议使用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.

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