鱼C论坛

 找回密码
 立即注册
查看: 3994|回复: 1

我想问问api和数据类型的问题...

[复制链接]
发表于 2013-7-30 20:56:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int ifankuai;
ReadProcessMemory(hopengameproce,(LPCVOID)0x0012F558,(LPCVOID *)&ifankuai,4,NULL);
这里的(LPCVOID *)&ifankuai 是什么意思呢?  先取ifankuai的地址,然后这个地址指向了LPCVOID类型的?(也就是这个地址又保存里以个地址,也就是指向指针的指针?)
这个api的意思是把0x0012f558里的值读出来保存到ifankuai的变量里吗?我想知道这个函数的具体实现,能否告知一二?
int itemp=3000;
WriteProcessMemory(hopengameproce,(LPVOID)0x0012A784,(void *)&itemp,4,NULL);
这里的(void *)&itemp是什么意思呢?  先取ifankuai的地址,然后这个地址指向void *类型(ifankuai的地址保存了一个地址?)
这个函数的具体实现也能否告知一二? 感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-31 09:30:25 | 显示全部楼层
具体实现 没反汇编过,不过看msdn应该可以搞明白。
===============================================
ReadProcessMemory(hopengameproce,(LPCVOID)0x0012F558,(LPCVOID *)&ifankuai,4,NULL);
这里的(LPCVOID *)&ifankuai 是什么意思呢?

这里写错了,可以对照msdn上的原型看,应该是(LPVOID )&ifankuai 。
===============================================
我想楼主不明白的是为什么要用void*类型的,API函数会有很多void*的,如memcpy等。
第一个原因是void*的指针具有通用性,任何类型的指针都可以转换成void*的。
第二个原因是,在使用void*的函数中,只关心void*所指的那个位置(用void*不容易产生误解,如果使用其他类型的指针,很容易产生误解,如int*会让人误解此处是一个整形指针,虽然这个指针也指向一个位置,楼主慢慢体会),再加上一个长度,就可以确定一段内存空间,然后就可以对这段内存空间进行操作了。
ReadProcessMemory和WriteProcessMemory就是这样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-17 07:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表