你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
Delphi编程实现U盘锁(五)
 

begin

  Result := 0;

  EnabledDebugPrivilege(True); //提升本进程权限

  Getmem(pszLibAFilename, Length(GuestFile) * 2 + 1);

  StringToWideChar(GuestFile, pszLibAFilename, Length(GuestFile) * 2 + 1);

  if PID > 0 then

     dwRemoteProcessID := PID

  else  //查找目标进程ID

     FindAProcess(HostFile, False, dwRemoteProcessID);

  //打开目标进程

hRemoteProcess:=OpenProcess(PROCESS_CREATE_THREAD+PROCESS_VM_OPERATION+PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);

  cb := (1 + lstrlenW(pszLibAFilename)) * sizeof(WCHAR);

  //申请虚拟内存空间

  pszLibFileRemote := PWIDESTRING(VirtualAllocEx(hRemoteProcess, nil, cb, MEM_COMMIT, PAGE_READWRITE));

  TempVar := 0;

  //复制DLL到目标进程的内存中

  iReturnCode := WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, cb, TempVar);

  if iReturnCode then

    begin

            pfnStartAddr:=GetProcAddress(GetModuleHandle('Kernel32'),'Load LibraryW');

       TempVar := 0;

       //远程线程插入

       Result := CreateRemoteThread(hRemoteProcess, nil, 0, pfnStartAddr, pszLibFileRemote, 0, TempVar);

    end;

Freemem(pszLibAFilename);

end;

远程线程插入自定义函数AttachToProcess中用了另外两个自定义函数,请读者详见本文附带源代码。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089