社区
VB基础类
帖子详情
如何取得某程序的内存地址?
soar_s
2009-05-09 09:08:00
加精
最近学习了ReadProcessMemory(hProcess, ByVal yAddr, mx, 4, 0&)
有个疑问一直解决不了,就是该函数的第二个参数,也就是要读取的内存地址开始处
这个第二个参数是如何得到的?如果程序每次启动内存地址都是固定的,那还能确定下来,可一旦程序是每次启动都变换内存地址的,这个参数就无法得到了
有没有高手说下具体的方法了,我是初学,说的越详细越好,谢谢!
...全文
4248
114
打赏
收藏
如何取得某程序的内存地址?
最近学习了ReadProcessMemory(hProcess, ByVal yAddr, mx, 4, 0&) 有个疑问一直解决不了,就是该函数的第二个参数,也就是要读取的内存地址开始处 这个第二个参数是如何得到的?如果程序每次启动内存地址都是固定的,那还能确定下来,可一旦程序是每次启动都变换内存地址的,这个参数就无法得到了 有没有高手说下具体的方法了,我是初学,说的越详细越好,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
114 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oshi002
2011-10-15
打赏
举报
回复
没有看明白这个东西。
hyyhvb
2010-05-06
打赏
举报
回复
mark
aschcbao
2009-11-07
打赏
举报
回复
学习了!!
zizaimai
2009-08-13
打赏
举报
回复
我明白了。
其实是楼主没有表达清楚,而导致lyserver误解。
他真正的意思其实就是39楼smallfishff的回答,就是基址 和 偏移。
wutaihua
2009-05-22
打赏
举报
回复
mark
kongxinBB
2009-05-22
打赏
举报
回复
app.hInstance
gang027
2009-05-22
打赏
举报
回复
没看明白。
田暗星
2009-05-21
打赏
举报
回复
(1)该函数读取的地址 是目标程序加载到内存中 相对起始分配地址的偏移地址,这个地址如果是 存放全局变量或其他特殊变量的话, 地址一般是不变的,就是说在不同人的WinX系统的电脑上都不变,这样你读取该地址的值 才有意义。
(2)比如: 目标进程的程序 是A.exe 读取的地址存放着 全局/静态变量 extern int i/static int i; 那么读取出来就是该变量的实时值,这个地址一般是不会变化得。
(3)具体如何获取这个地址,然后读取值? 说个 简单的源码范例:
在源代码中 声明全局变量或 文件变量
#include <stdio.h>
int var[6]; //注意看这里
void main()
{
var[4] = 94998; //特意设置 2个特殊值标记 ,便于工具查找 偏移地址
var[5] = 110666;
/*
这里你随便改变 var[0] 到 var[3] 的值
*/
}
然后在网上找个 内存读取 工具吧, 很多的..
你先 按照4字节整形方式 寻找94998 测试出地址 0x????????
然后 0x??????? - 0x00000010 得到的地址就是 要读取的地址, 用函数读取16字节长度吧,马上就能得到 var[0] - var[3]的值。
jakiejiajia
2009-05-21
打赏
举报
回复
帮顶
power505
2009-05-21
打赏
举报
回复
看了半天 没看明白。
yangchg729
2009-05-20
打赏
举报
回复
MARK!
huang_jia_dragon
2009-05-19
打赏
举报
回复
说的详细点,就好一些。
hswu
2009-05-19
打赏
举报
回复
不太懂DOSBOX是什么类型的游戏,不过以前玩DOS游戏时要改金钱,我一般这样做:
1、玩一会游戏,保存
2、打开保存的文件,修改其中的金钱与生命等等值
3、再调入修改后的文件,OK
供参考:)
shi68696953
2009-05-19
打赏
举报
回复
学习了
mykongkongarea
2009-05-19
打赏
举报
回复
学习
Sou2012
2009-05-18
打赏
举报
回复
MARK!!!
美人心计1999
2009-05-18
打赏
举报
回复
比较麻烦啊,学习了
su272009
2009-05-18
打赏
举报
回复
没见到老马,这就怪了!太忙了吧,学习了
zhuweiping2003
2009-05-18
打赏
举报
回复
MARK & UP
wShineboy
2009-05-18
打赏
举报
回复
Mark
加载更多回复(92)
Windows内核-内存管理
- 不管什么
程序
,除了
程序
代码本身所占用的空间外,
程序
在运行过程中总得使用一定的内存空间,因为数据也要占用空间。这些存储数据的内存空间大致可分为三类: - 全局变量:编译工具链接的时候就静态的分配...
什么是内存泄漏?
内存泄漏并非指内存在物理上的消失,而是应用
程序
分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。 内存泄漏通常情况下只能由获得
程序
源代码的
程序
员才能...
内存越界一定会导致
程序
崩溃吗?详解内存越界
内存越界是否一定会导致
程序
崩溃吗?详解内存越界
什么是内存泄露?怎么检测
什么是内存泄露? 简单地说就是申请了一块内存空间,使用完毕后没有释放掉。...由
程序
申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了。 2、如何检测内存泄露 第一:良好的编码习惯,...
编译原理 - 变量的
内存地址
和符号地址
访问局部变量时,
程序
如何知道变量的
内存地址
?如下: int a; a = 10; 理解 保存在data,rodata等分区的变量,
内存地址
在编译期就能确定,通过变量名的访问可以由在编译期将变量名映射为变量的
内存地址
来实现;...
VB基础类
7,762
社区成员
197,608
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章