c++ - C++ - *(int**) 地址?这里会发生什么?
问题描述
我浏览了一些代码,基本上是一个钩子(dll注入)。在代码中我发现了以下内容:
int Address = 0x12345678; //Address of a memory location of target process
int *Pointer = *(int**) Address; //What happens here?
所以看起来 0x12345678 (地址只是一个例子)是一个指针。所以我们要获取的值存储在内存地址0x12345678。我猜对了吗,会发生以下情况:
- 将地址转换为一个 int 指针并取消引用它,以获取存储在 0x12345678 处的值
- 将内存地址 0x12345678 处的值也视为 int 指针
非常感谢您,并为我的英语不好感到抱歉!
解决方案
- 将地址转换为一个 int 指针并取消引用它,以获取存储在 0x12345678 处的值
不,它转换Address
为指向 int 的指针的指针。并取消引用它,以获取指向存储在的 int 的指针0x12345678
- 将内存地址 0x12345678 处的值也视为 int 指针
是的。
推荐阅读
- go - Go 无法使用 go get 识别已安装的库
- python - 从python中的父文件夹导入
- java - 如何在 Spring Boot 中创建不可变和单例类?
- reactjs - InferableComponentEnhancerWithProps 类型缺少 Component 类型的以下属性
- asp.net - 文件的 ASP.NET 路由请求
- javascript - 如何使fabricJS画布在移动设备上可水平拖动?
- ruby - Ruby on Jets v3 和 AWS Linux 2 - 无 tar 或 cURL
- python - 用 pygame.draw.circle() 获得四分之一圆
- firebase - 如何使用 firebase 和 nuxt js 创建博客页面?
- swift - 询问 AppTrackingTransparency 使用谷歌分析的权限,是强制性的吗?