利用WinHex查看并修改进程内存中的整形数据

示例程序:

#include "stdafx.h"

#include <stdlib.h>

 

int _tmain(int argc, _TCHAR* argv[])

{

int num = 2;

printf("现在num的值是%d,num的地址是%p\n", num, &num);

system("pause");

 

num +=5;

printf("现在num的值是%d,num的地址是%p\n", num, &num);

getchar();  //getchar() 等同于system("pause"); getchar()兼容性更好

 

//此时通过WinHex修改num的大小

printf("现在num的值是%d,num的地址是%p\n", num, &num);

system("pause");

return 0;

}

整形变量num的初始值是2,它在虚拟内存中的地址可以通过printf函数输出。

打开WinHex,用它的“打开RAM”功能,找到此程序,并选择查看主要内存(Primary Memory)。

主要内存的意思就是主程序的内存区块,不包括支持这个主程序的dll文件的内存区块。如果选择整个内存,则会发现可见内存范围会扩大至0001 0000 - 7FFE 0FFF,也就是4GB虚拟内存中除系统预留的区域以外的所有可用区域。

根据命令行输出的num的地址,可以通过“转到偏移地址”功能来到num所在的内存。

图中所示从0046 FA28到0046 FA2B的4字节内存区块,就是num所在的地址。数值2在此以小尾方式储存。

按任意键程序继续运行,num的值自加5,变为7。

在WinHex中刷新内存后(鼠标滚轮上下滚动一次即可),此处数值也发生了对应的改变。

可以通过在WinHex中直接修改内存来改变程序中num的值。十进制999的十六进制形式为0000 03e7,以小尾形式存放在num的内存区块内。WinHex对内存的修改即时生效(修改后,滚动一次鼠标滚轮)。

按任意键程序继续运行,此时num变为了999,而不是程序原定的7。

转载于:https://www.cnblogs.com/zhugehq/p/5917674.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinHex 是一款以通用的 16 进制编辑器为核心,专门用来对付计算机取证、数据恢复、低级数据处理、以及 IT 安全性、各种日常紧急情况的高级工具: 用来检查和修复各种文件、恢复删除文件、硬盘损坏、数码相机卡损坏造成的数据丢失等。得到 ZDNet Software Library 五星级最高评价,拥有强大的系统效用。功能包括 (依照授权类型): - 硬盘, 软盘, CD-ROM 和 DVD, ZIP, Smart Media, Compact Flash, 等磁盘编辑器... - 支持 FAT, NTFS, Ext2/3, ReiserFS, Reiser4, UFS, CDFS, UDF 文件系统 - 支持对磁盘阵列 RAID 系统和动态磁盘的重组、分析和数据恢复 - 多种数据恢复技术 - 可分析 RAW 格式原始数据镜像文件的完整目录结构,支持分段保存的镜像文件 - 数据解释器, 已知 20 种数据类型 - 使用模板编辑数据结构 (例如: 修复分区表/引导扇区) - 连接和分割、以奇数偶数字节或字的方式合并、分解文件 - 分析和比较文件 - 搜索和替换功能尤其灵活 - 磁盘克隆 (可在 DOS 环境下使用 X-Ways Replica) - 驱动器镜像和备份 (可选压缩或分割成 650 MB 的档案) - 程序接口 (API) 和脚本 - 256 位 AES 加密, 校验和, CRC32, 哈希算法 (MD5, SHA-1, ...) - 数据擦除功能,可彻底清除存储介质残留数据 - 可导入剪贴板所有格式数据, 包括 ASCII、16 进制数据 - 可进行 2 进制、16 进制 ASCII, Intel 16 进制, 和 Motorola S 转换 - 字符集: ANSI ASCII, IBM ASCII, EBCDIC, (Unicode) - 立即窗口切换、打印、生成随机数字 - 支持打开大于 4 GB 的文件,非常快速,容易使用。 - 广泛的联机帮助 [隐藏介绍]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值