1 c++ windows variables memory-address
在我从这个精彩的网站上获得了如此多的Google搜索结果之后,我第一次在这里发帖.
基本上,我想找到存储在特定内存地址的变量名称.我有一个编写的内存编辑应用程序编辑单个值,问题是每次修补应用程序保存此值时,我必须将新内存地址硬编码到我的应用程序中,并重新编译,这需要花费很多时间维持它几乎不值得做.
我想要做的是获取存储在某个内存地址的变量的名称,这样我就可以在运行时找到它的地址并将其用作要编辑的内存地址.
这都是用C++编写的.
提前致谢!
编辑:
好吧我已经决定要从.txt文件中流式传输数据了,但我不确定如何将字符串转换为LPVOID以用作WriteProcessMemory()中的内存地址.这就是我尝试过的:
string fileContents;
ifstream memFile("mem_address.txt");
getline(memFile, fileContents);
memFile.close();
LPVOID memAddress = (LPVOID)fileContents.c_str();
//Lots of code..
WriteProcessMemory(WindowsProcessHandle, memAddress, &BytesToBeWrote, sizeof(BytesToBeWrote), &NumBytesWrote);
Run Code Online (Sandbox Code Playgroud)
代码在语法方面都是正确的,它编译和运行,但WriteProcessMemory错误,我只能想象它与我的错误的LPVOID变量有关.如果扩展我的问题的使用是违反规则,我道歉,如果是的话,我将删除我的编辑.
编译并生成所谓的map
文件.使用Visual-C++(/MAP
链接器选项)可以轻松完成此操作.在那里你会看到符号(函数,......)及其起始地址.使用此映射文件(注意:每次重新编译时都必须更新),您可以将地址与名称进行匹配.
这实际上并不那么容易,因为地址是相对于首选加载地址的,并且可能(随机化)与实际加载地址不同.
有关检索正确地址的一些旧提示,请访问:http://home.hiwaay.net/~georgech/WhitePapers/MapFiles/MapFiles.htm
归档时间: |
|
查看次数: |
1040 次 |
最近记录: |