如我要做一个用户权限的东西,用户的密码与姓名我想存在exe文件中行吗?

解决方案 »

  1.   

    应该可以,但是,不能改变exe文件的代码段等数据的相对偏移。
      

  2.   

    你可以修改EXE自身
    但完事后还得把文件删除然后把临时文件重命名
    比较麻烦的
    不如加密后放在保险的别的文件里
      

  3.   

    支持 
      Drate(鸟窝里的虫),果然是一条优秀的大虫。
      

  4.   

    可以。
    请看源代码。直接修改exe文件本身的源代码。注意调试时显示的次数始终是0,因为调试时每次都要重写可执行文件。
    请执行生成的exe文件查看运行结果。本程序仅能运行50次。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        usedTimes:byte;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      fs:TFileStream;
    begin
      fs:=TFileStream.Create(application.ExeName,fmopenread or fmsharedenynone);
      fs.Seek(-1,soFromEnd);
      fs.Read(usedTimes,1);
      fs.Free;
      showMessage('你已使用了'+intToStr(usedTimes)+'次!只能使用50次。');
      if usedTimes>50 then application.Terminate;  //限制使用50次
    end;procedure TForm1.FormDestroy(Sender: TObject);
    var
      f:Textfile;
      fs:TFileStream;
      i:byte;
    begin
      i:=usedTimes+1;
      copyfile('project1.exe','a.exe',false);
      fs:=TFilestream.Create('a.exe',fmopenwrite or fmshareExclusive);
      fs.Seek(-1,soFromEnd);
      fs.Write(i,1);
      fs.Free;
      assignfile(f,'delSelf.bat');
      rewrite(f);
      writeln(f,'del project1.exe');//+#10+'ren a.exe project1.exe'+#10+'del %0');
      writeln(f,'ren a.exe project1.exe');
      writeln(f,'del %0');
      closefile(f);
      winExec('delSelf.bat',sw_hide);
    end;end.