首页
社区
课程
招聘
delphi7代码移植 xe2之后的WriteProcessMemory问题 60.0KX币快来
发表于: 2014-12-17 18:44 4136

delphi7代码移植 xe2之后的WriteProcessMemory问题 60.0KX币快来

2014-12-17 18:44
4136
function AttachToProcess(const HostFile, GuestFile: string; const PID: DWORD = 0): DWORD;
var

  hRemoteProcess: THandle;

  dwRemoteProcessID,cb: DWORD;
  pszLibFileRemote: Pointer;
  iReturnCode: Boolean;
  TempVar: DWORD;
  pfnStartAddr: TFNThreadStartRoutine;
  pszLibAFilename: PwideChar;

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
   ShowMessage('注入PID未找到');

  hRemoteProcess := OpenProcess(PROCESS_ALL_ACCESS{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;
  iReturnCode := WriteProcessMemory(hRemoteProcess, pszLibFileRemote, pszLibAFilename, cb, TempVar);
  if iReturnCode then
  begin

    pfnStartAddr := GetProcAddress(GetModuleHandle('Kernel32'), 'LoadLibraryW');
    TempVar := 0;

    Result := CreateRemoteThread(hRemoteProcess, nil, 8, pfnStartAddr, pszLibFileRemote, 0, TempVar);
  end;
  Freemem(pszLibAFilename);
end;

在XE2里WriteProcessMemory最后一个参数不是Dword
CreateRemoteThread最后一个参数必须是Dword
这个程序就没法编译了

OpenProcess也有问题
谁有XE2给我编译下,能够正确运行就可以了,谢谢。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
var
TempVar: SIZE_T;

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

OpenProcess的最后一个参数也是Cardinal类型

搞定收工
2014-12-17 19:19
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
编译过不了的。
好像过了稍等我试试
2014-12-17 22:04
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
我这编译没问题,这种一般提示函数参数是VOID的.基本都是Cardinal,虽然Cardinal和DWORD,ULONG一样.但是换成其他编译器就会报错.
2014-12-18 09:08
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我测试了,好了,结贴了。以后有问题希望能再次得到你的帮助,谢谢。
2014-12-22 20:42
0
游客
登录 | 注册 方可回帖
返回
//