问一个刁钻问题(有关EXE,DLL)菜鸟,高手请看过来 (40分)

  • 主题发起人 主题发起人 chenfeng3000
  • 开始时间 开始时间
C

chenfeng3000

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个程序,想利用密码的形式进入,可是我不想要密码用文件/数据库的形式存储!如果
文件/数据库遭破坏,程序就玩了!! 我想能不能借用 EXE, DLL来保存/修改密码,这样既保证了
密码不被窃取,又节省了不必要的麻烦, 注意,我说的不是简单的密码初始化,在EXE,DLL中要永
久保存,并修改的,最好,能给个例子!!!!!!

 
我以前做过这样的密码,动态密码。
提取系统时间,然后再加加减减,那么每次的密码都不同,只有知道算法的人才有密码。
 
不,我想密码还保存在EXE里,而且是加密的, 用的时候再解密,那么如何保存在EXE中呢!!!???
 
如果你的密码需要修改的话,就需要程序自己写自己。
jingtao做过这样的程序,你可以问一下他。
 
阿高谢谢你给我指点高人,不过我是菜鸟,我怎么和jingtao来联系阿???!!!
 
program Hello;

{$APPTYPE CONSOLE}

uses
Windows,
SysUtils;

var //
szSrc, //
szDest : array[0..MAX_PATH] of char; //
szCmdLine : string;
hFile : THandle;
hProcess : THandle;
SI : TStartupInfo;
PI : TProcessInformation;
nTimes : DWord;
begin
if ParamCount = 0 then
begin
GetModuleFileName(0, szSrc, MAX_PATH);
GetTempPath(MAX_PATH, szDest);
GetTempFileName(szDest, 'Tmp', 0, szDest);
CopyFile(szSrc, szDest, FALSE); // 将当前可执行文件复制一个副本

hFile := CreateFile(szDest, // pointer to name of the file
0, // access (read-write) mode
FILE_SHARE_READ, // share mode
nil, // pointer to security attributes
OPEN_EXISTING, // how to create
FILE_FLAG_DELETE_ON_CLOSE, // file attributes
0); // handle to file with attributes to copy

hProcess := OpenProcess(SYNCHRONIZE, // access flag
TRUE, // handle inheritance flag
GetCurrentProcessId); // process identifier


szCmdLine := Format('%s %d "%s"', [szDest, hProcess, szSrc]); //格式化命令行参数

FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);

CreateProcess(nil, // pointer to name of executable module
PChar(szCmdLine), // pointer to command line string
nil, // pointer to process security attributes
nil, // pointer to thread security attributes
TRUE, // handle inheritance flag
0, // creation flags
nil, // pointer to new environment block
nil, // pointer to current directory name
SI, // pointer to STARTUPINFO
PI); // pointer to PROCESS_INFORMATION

CloseHandle(hProcess);
CloseHandle(hFile);
end
else
begin
hProcess := THANDLE(StrToInt(ParamStr(1)));
WaitForSingleObject(hProcess, INFINITE); //等待主进程结束
CloseHandle(hProcess);

hFile := FileOpen(ParamStr(2), fmOpenReadWrite);
if hFile > 0 then
begin
FileSeek(hFile, $80, 0);
FileRead(hFile, nTimes, SizeOf(nTimes));
Inc(nTimes);
FileSeek(hFile, $80, 0);
FileWrite(hFile, nTimes, SizeOf(nTimes));
FileClose(hFile);
Writeln('我已经运行'+IntToStr(nTimes)+'次了');
end;

end;
end.
 
谢谢高手!
 
www.138soft.com
的版主,内有样例下载

陈锦涛
 
后退
顶部