首页
社区
课程
招聘
[求助]子程序中ReadProcessMemory返回值问题
发表于: 2007-8-5 21:18 7088

[求助]子程序中ReadProcessMemory返回值问题

2007-8-5 21:18
7088
有个子程序如下,写在DLL文件里:

fnReadInteger PROC hProcess:DWORD,lpBaseAddress:WORD,nSize:BYTE
.data?
lpBuffer db ?

.code
invoke ReadProcessMemory,hProcess,lpBaseAddress,addr lpBuffer,nSize,NULL
ret

fnReadInteger ENDP


请问从DLL外部程序调用这个子程序时,怎么才能得到lpBuffer中的内容?谢谢
就象DELPHI函数中可以设置返回值一样....弄了半天也没明白....


function ReadStr(hProcess:THandle; add, size: Integer): string;
var
Buffer: array[0..100] of PChar;
num:cardinal;
begin
ReadProcessMemory(hProcess, Pointer(add), @Buffer, size, num);
Buffer[size] := #0;
Result := Buffer;
end;

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
fnReadInteger  PROC hProcess:DWORD,lpBaseAddress:WORD,nSize:BYTE
    .data?
      lpBuffer db ?
        
    .code
    invoke ReadProcessMemory,hProcess,lpBaseAddress,addr lpBuffer,nSize,NULL
    lea eax,lpBuffer
    ret

  fnReadInteger ENDP
2007-8-6 08:11
0
雪    币: 208
活跃值: (376)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
3
这么简单?
2007-8-6 08:29
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
4
.data?
szBuff db 1024 dup(?) ;定义一个全局变量,然后把数据copy到这里就行
.
.
fnReadInteger  PROC hProcess:DWORD,lpBaseAddress:WORD,nSize:BYTE
    local lpBuffer[1024]:byte
    invoke ReadProcessMemory,hProcess,lpBaseAddress,addr lpBuffer,nSize,NULL
    invoke RtlMoveMemory,addr szBuff,addr lpBuffer,sizeof lpBuffer
    ret
  fnReadInteger ENDP
2007-8-6 10:33
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
嗯,就是这样。函数返回那个缓冲区地址就行了,如果为了保险,还可以在函数里判断一下。
fnReadInteger PROC hProcess:DWORD,lpBaseAddress:WORD,nSize:BYTE
.data?
lpBuffer db ?

.code
invoke ReadProcessMemory,hProcess,lpBaseAddress,addr lpBuffer,nSize,NULL
.if eax  ; 如果返回成功则返回lpBuffer缓冲区指针,否则返回FALSE
    lea eax,lpBuffer
    ret
.endif
ret

fnReadInteger ENDP

不过如果lpBuffer是局部变量而不是全局变量就不行了。只有想办法申请一个全局变量将数据拷贝到全局变量再返回这个全局变量地址,或用内存管理函数申请一个动态内存,返回后取出数据再释放这个地址内存。
2007-8-6 11:57
0
雪    币: 208
活跃值: (376)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
6
恩,不错,谢谢2位了!
2007-8-6 12:18
0
游客
登录 | 注册 方可回帖
返回
//