1、多重指针通常是指多个指针的嵌套,每个指针里存放的是其他指针的地址,简单点说就是在一个变量中存入了一个数,而这个数正好是一个变量的地址,通过这个地址就可以去操作那个变量

2、注意事项:使用ReadProcessMemory读取指针是要注意读取的是该地址里的数据,这个数据表示一个地址

3、代码如下:实现的功能是读取CS1.6中自己的坐标。在读数据时需要注意,最后一层指针指向的就是我们需要的数据,所以千万不要再去读取最后一层指针的地址

#pragma once#include<Windows.h>
#include<stdio.h>
#include "iHook.h"void ReadFBmem(HANDLE hProcess, PDWORD dstAddr, DWORD dwCount);
HANDLE iOpenProcess(DWORD PID);int main()
{LPCSTR szAppName = "Counter-Strike";LPCSTR szModName = "cstrike.exe";DWORD  bsAddr = 0;DWORD  PID = 0;DWORD  dstAddr = 0; DWORD offSet[] = {0x00, 0x0, 0x4B9C, 0x88 };DWORD cOffset = sizeof(offSet) / sizeof(DWORD);FindPID(szAppName, PID);iDumpModule(szModName, bsAddr, PID);offSet[0] = bsAddr + 0x95A244;HANDLE hProcess = iOpenProcess(PID);while (1){ReadFBmem(hProcess, offSet, cOffset);Sleep(100);}//printf("%0x\n", offSet[0]);//CloseHandle(hProcess);return 0;
}void ReadFBmem(HANDLE hProcess, PDWORD lpdstAddr, DWORD dwCount)
{FLOAT szBuffer[4] = { 0 };DWORD dwRead = lpdstAddr[0];DWORD lpBuffer[2];/*//基地址ReadProcessMemory(hProcess, (LPVOID)lpdstAddr[0], &lpBuffer[0],sizeof(DWORD),NULL);//0ReadProcessMemory(hProcess, (LPVOID)(lpBuffer[0]+lpdstAddr[1]), &lpBuffer[0],sizeof(DWORD),NULL);//4B9CReadProcessMemory(hProcess, (LPVOID)(lpBuffer[0] + lpdstAddr[2]),&lpBuffer[1], sizeof(DWORD), NULL);//90  最后一级指针就是数据不用再进行操作ReadProcessMemory(hProcess, (LPVOID)(lpBuffer[1] + lpdstAddr[3]),&szBuffer[0], sizeof(FLOAT), NULL);printf("第三级: %.2f\n", szBuffer[0]);//dwRead = lpBuffer[0];//printf("dwRead = %0x\n", dwRead);*/for (int i = 0; i < dwCount - 1; i++){if (i != 0){//需要加偏移dwRead = lpBuffer[0] + lpdstAddr[i];}ReadProcessMemory(hProcess, (LPVOID)dwRead, &lpBuffer[0],sizeof(DWORD), NULL);}//最后一级指针是数据ReadProcessMemory(hProcess, (LPVOID)(lpBuffer[0] + lpdstAddr[dwCount - 1]),&szBuffer, 3*sizeof(FLOAT), NULL);for (int j = 0; j < 3; j++){printf("%.2f\n", szBuffer[j]);}/*if (dwRead == 0){printf("读内存失败\n");return;}printf("%0x\n", dstAddr);//FLOAT fBuffer[3] = { szBuffer[0], szBuffer[1], szBuffer[2] };for (int i = 0; i < 3; i++){printf("X: %0x\n", szBuffer[i]);}*/
}HANDLE iOpenProcess(DWORD PID)
{HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);if (hProcess == INVALID_HANDLE_VALUE){printf("打开进程句柄失败");return 0;}return hProcess;
}
多级指针的读写
多级指针写内存(地址指针, 数组大小)
{地址缓存数组  = {0};中转变量 = 地址指针[0];//读指针循环(I =0 ; I < 数组大小 – 1; i++){if(I != 0)中转变量 = 地址缓存[0] + 地址指针[i];读内存(中转变量);}//读数据读内存(地址缓存数组[0] + 地址指针[数组大小  - 1];
}

如何使用ReadProcessMemory读取多重指针相关推荐

  1. python 指针指向的内容,python-文件的读取及指针位置

    文件的读取及指针位置 打开文件的三步:打开->操作->关闭 文件的读取: f = open('/tmp/passwd')打开 f.close()操作完,关闭文件 判断文件对象拥有的权限 p ...

  2. C语言 多重指针--整型字符字符串 int**pp

    介绍 多重指针:一个指针指向另一个指针 离值越近的指针级别越大:一级 内存布局 代码 图示: 多重指针–整型 #include<stdio.h> #include<string.h& ...

  3. 如何理解CE中指针,多重指针,偏移的概念

    今日重新回顾了一下以前使用过的ce修改器,在学过C语言之后感觉概念通透了许多. 为什么要用指针 CE寻找到的一些地址往往是一个动态地址,它是动态生成的(例如malloc函数),每次重启游戏后,它都会随 ...

  4. 看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针

    若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证. 本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新 ...

  5. Golang多重指针

    多重指针因垂丝汀 指针的引用也是一种拷贝的现象.不同于值传递拷贝的是值:指针传递拷贝的是地址,所以改变该地址下的值被拷贝的对象的值当然也随着改变.可是!如果如果你动的不是拷贝指针地址下的值而是该地址呢 ...

  6. Go基础:指针地址、指针类型、多重指针、指针运算

    目录 到底什么是指针呢? 指针 指针地址和指针类型 指针取值 指针变量初始化 指针运算符 多重指针 指针运算 到底什么是指针呢? 内存就是一系列有序列号的存储单元,变量就是编译器为内存地址分配的昵称, ...

  7. 指针和多重指针的一些理解( 谭浩强的恶梦....... )

    说到C语言,就不得不说到指针,指针是有点难理解,对于刚学C语言的同学来说是很痛苦的...以前对指针的概念很模糊,只知道指针和地址相关,但是最近看了一本<深入理解计算机系统>,感觉好像有点开 ...

  8. C指针笔试题,蛋疼的多重指针运算,谭浩强的阴影

    对指针的概念清晰的话,做这种题只要耐心就行,然而看这种题就烦(被同学吐槽为谭浩强的阴影--草泥马这种C风格题有意义吗?出题人脑子被门夹了?而且C++11都不支持字面值字符串直接转换成char*了.好吧 ...

  9. 记录:指针仪表盘视觉读取项目的学习过程

    今天在整理电脑文件时,发现了好久前做的一个小项目,是关于指针仪表盘读取的,也是当时导师布置给我的一个任务,我决定梳理下,写个博客,也方便以后自己若有需要时可以随时查找. 本篇博客记录了我开发这个小项目 ...

最新文章

  1. java中的抽象类和抽象方法
  2. 关于编码ansi、GB2312、unicode与utf-8的区别
  3. mysql 查询if语句执行顺序_MySQL 语句的执行顺序
  4. JS获取本周、本季度、本月、上月的开端日期、停止日期
  5. 链表选择排序算法功能实现演示
  6. 《构建之法》----自我答疑收获
  7. 毕淑敏:接纳自卑,感悟幸福
  8. defender 报备_微软Defender获AV-TEST杀软评测最高分
  9. 界面的创建(高仿QQ登入界面)
  10. 阿泰水晶报表补空行(分组)
  11. 投屏索尼电视显示访问服务器,索尼电视投屏如何设置 苹果手机投屏索尼电视...
  12. python 泰森多边形边界_泰森多边形
  13. iocomp ActiveX/VCL各版本大比拼之Crack
  14. 速来!0元优质低代码平台抢先体验
  15. 三种遍历 list对象从而选择性取值的方式
  16. Win7 提示“请考虑更换电池”
  17. el-table树型结构自动展开
  18. 需求用户app的主题颜色能根据手机壳的颜色自动调整
  19. golang 超好用 json 解析包
  20. Epplus获取数据区域的第一行或最后一行

热门文章

  1. 分析图第二讲导出图片和后期PS5.12
  2. java使用geotools读取shp文件
  3. 阿里获取银行卡信息接口
  4. 点云配准5:4pcs算法在pcl上的实现
  5. 【12.9~12.13周报】风雨十年成长之路
  6. python游戏开发框架_Python游戏开发:数字华容道
  7. 使用U盘离线安装CentOS、包括5到8四个版本
  8. udev和mdev两种热插拔机制
  9. 小米的逆转密码:MIX2与新零售
  10. C#超市进销存系统管理源码(CS架构)