start.dpr

来自「破解“国际领先的Nprotect键盘加密技术”」· DPR 代码 · 共 42 行

DPR
42
字号
program  Start;

uses
  Windows,
  Messages,
  MyAPIDll2 in 'MyAPIDll2.pas',
  Common in 'Common.pas';

type
    TMapDllData = record
      CurThreadID : DWORD;
      ExeFile : String[255];
    end;
    PMapDllData = ^TMapDllData;

var
  MsgStruct: TMsg;  
  MutexHandle, FileHandle: DWORD;
  PDllData : PMapDllData;
  ThisExeName : array [0..255] of char;
begin
  if (OpenMutex(MUTEX_ALL_ACCESS, FALSE, ExeMutex) <> 0) or
     (OpenMutex(MUTEX_ALL_ACCESS, FALSE, DllMutex) <> 0) then Exit;  
  MutexHandle := CreateMutex(nil, FALSE, ExeMutex);

  FileHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(TMapDllData), sFileMap);
  PDllData   := MapViewOfFile(FileHandle, FILE_MAP_WRITE, 0, 0, 0);
  PDllData^.CurThreadID := GetCurrentThreadID();
  GetModuleFileName(HInstance, @ThisExeName[0], 255);
  PDllData^.ExeFile := String(ThisExeName);
  UnmapViewOfFile(PDllData);

  InstallHook;
  while GetMessage(MsgStruct, 0, 0, 0) do ; // 等待WM_QUIT
  UnHook;
   
  CloseHandle(FileHandle);
  PostMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0);
  
  CloseHandle(MutexHandle);  
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?