怎样获取变量物理地址?



#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
char szBuffer[100] = "hello";
HANDLE hBase = GetModuleHandle(NULL);//基地址
DWORD dwOffset = (DWORD)&szBuffer;//偏移地址
DWORD dwAddress = (DWORD)hBase + dwOffset;
printf("%0x\n", dwAddress);//打印szBuffer地址
Sleep(-1);
return 0;
}

1、打印的dwAddress是szBuffer的物理地址吗?
2、怎样在另外一个程序中获取和修改szBuffer的内容?
3、用API Monitor,修改szBuffer时,应该怎么指定地址?

11 个解决方案

#1


应该不是物理地址吧。句柄怎么能当作基地址看呢。

#2


dwAddress根本不是szBuffer的地址,程序中使用szBuffer就表示它的虚拟地址,并非偏移量,不要加基地址。修改另一程序的内存只需要知道虚拟地址,不需要物理地址,用OpenProcess打开目标进程,用ReadProcessMemory和WriteProcessMemory进行读写。

#3


你在这个层面上看见的地址都不是物理地址。

你先了解下内存的保护模式,看看gdtr寄存器是,ldtr寄存器,CR3寄存器都是干吗用的,估计看完了你就能拿到物理地址。

#4


引用 2 楼 cnzdgs 的回复:
dwAddress根本不是szBuffer的地址,程序中使用szBuffer就表示它的虚拟地址,并非偏移量,不要加基地址。修改另一程序的内存只需要知道虚拟地址,不需要物理地址,用OpenProcess打开目标进程,用ReadProcessMemory和WriteProcessMemory进行读写。

明白了,谢谢。

另外,请问在Win7下用Depends获取MessageBoxA的地址为什么不对,应该怎样改,谢谢

#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
HANDLE hBase = GetModuleHandle(NULL);//基地址
//0x5EA71是通过Depends获得的MessageBoxA的入口地址
DWORD funAddress = (DWORD)hBase + (DWORD)0x5EA71;
printf("%0x\n", funAddress);
printf("%0x\n", MessageBox);
Sleep(-1);
return 0;
}

#5


GetModuleHandle(NULL)获取的是exe模块的基地址,MessageBox在user32.dll模块中。

#6


引用 5 楼 cnzdgs 的回复:
GetModuleHandle(NULL)获取的是exe模块的基地址,MessageBox在user32.dll模块中。

OK了,再次感谢!

#7


请问GetModuleHandle(NULL)获取的是exe模块的基地址,这个EXE的基地址有什么用呀?

#8


获取exe里面的资源时要用到基地止

#9


引用 7 楼 jamseyang 的回复:
请问GetModuleHandle(NULL)获取的是exe模块的基地址,这个EXE的基地址有什么用呀?


应该是EXE在内在中的地址!

另外获取函数地址可以用getprocaddress  //冒似是这样写的!

#10


引用 3 楼 shujiezhang 的回复:
你在这个层面上看见的地址都不是物理地址。

你先了解下内存的保护模式,看看gdtr寄存器是,ldtr寄存器,CR3寄存器都是干吗用的,估计看完了你就能拿到物理地址。

说不定在硬盘上...

#11


引用楼主 jamseyang 的回复:
C/C++ code


#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    char szBuffer[100] = "hello";
    HANDLE hBase = GetModuleHandle(NULL);//基地址
    DWORD dwOffset =……

1. 虚拟地址
2. 进程间通信,或者ReadProcessMemory()和WriteProcessMemory,可能需响应的权限
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
China Scenic Area
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告