仿外.挂之读取内存数据...


微笑呵呵,花了两天的时间,从找基址到理解内存,终于完成了内存数据的读取工作...

写完这个小程序,我基本上掌握了外挂的制作技术了 吐舌头...

在此将心得体会写下来,留着以后复习用...

这次我拿来练手的小程序是:扫雷小鱼儿,程序截图如下,

读取时间效果截图如下:



扫雷小鱼儿下载地址为: http://download.csdn.net/download/friendan/4324602

这次我读取的是-扫雷小鱼儿-的时间,找其时间基址的过程,波折颇多,下面说一下我的想法...

关于扫雷小鱼儿的时间的基址,其实我找到的是一个 指针P的地址,

让我奇怪的是指针P的地址是固定的,而指针P指向的地址却是不断变化的

关于指针,C语言基础不好的朋友,也许就卡在这里了-_-...


我们要找的扫雷小鱼儿的时间的内存地址为: addr=指针P指向的地址+52E0   //注:52E0为偏移地址    

有了上面的这条公式,呵呵,编写程序就有章可寻了。

我写本程序的思路为:

1.因为指针P的地址是固定的,因此我们可从指针P下手,读取出指针P所指向的地址

Hehe废话一名:事实上,无论指针P所指向的地址如何变化,只要指针P的地址不变,我们总能获取指针P所指向的地址

2.获取指针P所指向的地址后,通过上面那一条公式,我们就可以读取小鱼儿扫雷程序的时间了...

总结:为了获取小鱼儿扫雷程序的时间,我们两次读取了内存,

第一次读取内存,是为了获取时间在内存中的基址

第二次读取内存,是为了获取时间值

程序主要代码为:

     //获取指针P指向的地址,指定P的地址为:012FBA8  //16进制地址
    DWORD dwRead=0;
    DWORD dwArr=0;
    ::ReadProcessMemory(hProc,LPVOID(0x012FBA8),(LPVOID)&dwArr,(DWORD)4,&dwRead);

    //获取指针P所指向的地址后,就可以就取时间了...

    BOOL bRead=::ReadProcessMemory(hProc,LPVOID(dwArr+0x52e0),(LPVOID)&m_nTime,(DWORD)4,&dwRead);

   ....

  .....



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值