用DebugApi跟踪一个函数,这个函数第二个参数是字符串指针,目的是替换这个指针,用自己的字符串取代,于是做了如下尝试:
//在远程进程的内存地址空间分配参数地址空间
paramsCall = (char *) VirtualAllocEx(hMyProcess, NULL, newLen, MEM_COMMIT,PAGE_READWRITE);
//写入自己的字符串
VirtualProtectEx(hMyProcess,LPVOID)paramsCall,newLen,PAGE_READWRITE,&dwOldFlag);WriteProcessMemory(hMyProcess,LPVOID)paramsCall,&tempAllBuff,newLen,&dwHasRead)
VirtualProtectEx(hMyProcess,(LPVOID)paramsCall,newLen,dwOldFlag,&dwOldFlag);
//(pMem+index)是这个参数的地址
VirtualProtectEx(hMyProcess,(LPVOID)pMem+index),4,PAGE_READWRITE,&dwOldFlag); //更改内存区域保护属性
WriteProcessMemory(hMyProcess,(LPVOID)(pMem+index),&adr,4,&dwHasRead); //向进程内存中写入数据
VirtualProtectEx(hMyProcess,(LPVOID)(pMem+index),4,dwOldFlag,&dwOldFlag); //将内存保护属性改回初始状态
这样操作后,我再去读取(pMem+index),地址确实换掉了,但是程序运行时似乎并没有发送我的内存块字符串,还是发送的原来的内存块。。。希望能指点一下
[培训]科锐逆向工程师培训第53期2025年7月8日开班!