MFC编程修改内存数据程序

时间:2013-03-22 14:21:01  作者:啤酒  阅读:16777215



    //在这页中查找
    DWORD* pageDword;
    for(int i=0; i<(int)4*1024; i++)
    {
        pageDword = (DWORD*)&pageByte[i];
        if (pageDword[0] == valueChange)
        {
            if (addrCount >= 1024)
            {
                return FALSE;
            }
                //添加到全局变量中
            addrList[addrCount] = baseAddr + i;
            addrCount++;
        }
    }
}
BOOL CMemoRepairDlg::FirstFind(DWORD valueChange)
{
    const DWORD dwOneGB = 1024*1024*1024;
    const DWORD dwOnePage = 4096;
    if (hProcess == NULL)
    {
        return FALSE;
    }
    //操作系统类型
    DWORD systemBase;
    OSVERSIONINFO vinfo ={sizeof(vinfo)};
    ::GetVersionEx(&vinfo);
    if (vinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
    {
        systemBase = 4*1024*1024;
    }
    else
    {
        systemBase = 640*1024;
    }

 //在开始地址到2GB的地址空间查找
    for (; systemBase < 2*dwOneGB; systemBase += dwOnePage)
    {
        ComparePage(systemBase, valueChange);
    }
    return TRUE;
}

BOOL CMemoRepairDlg::NextFind(DWORD valueChange)
{
    //保存地址个数,初始化addrCount的值
    int mOrgCnt = addrCount;
    addrCount = 0;
    BOOL bRet = FALSE;
    DWORD dwReadValue;
    for (int i=0; i     {
        if (::ReadProcessMemory(hProcess,(LPVOID)addrList[i],&dwReadValue,sizeof(DWORD),NULL))
        {
            if (dwReadValue == valueChange)
            {
                addrList[addrCount] = addrList[i];
                addrCount++;
                bRet = TRUE;
            }
        }
    }
    return bRet;
}
void CMemoRepairDlg::ShowList()
{
    editStr ="";
    CString str="";
    UpdateData(FALSE);
    editStr.Format("%d个相同的地址.",addrCount);
    for(int i=0; i     {
        str.Format("%s %d '\n';",editStr, addrList[i]);
        editStr = str;
    }
    UpdateData(FALSE);

}

BOOL CMemoRepairDlg::WriteMemory(DWORD valueAddr, DWORD valueChange)
{
    return ::WriteProcessMemory(hProcess, (LPVOID)valueAddr, &valueChange, sizeof(DWORD), NULL);
}

再就是新建一个程序,作为启动的进程程序:Testor

这个程序的Testor.exe文件将影响到上面启动进程的路径。 Testor.cpp:

#include

using namespace std; int ChangeNum = 0; //全局变量

int main()
{
    int insideNum = 200;        //局部变量
    ChangeNum = 1600;

    while (true)
    {
        printf(" insideNum = %d, addr = %X; ChangeNum = %d, addr = %X \n",
            ++insideNum, &insideNum, ++ChangeNum, &ChangeNum);
        getchar();
    }
    return 0;
}
};

蜻蜓连点器电脑
蜻蜓连点器
大小:20.46MB  时间:11.17  赞:0

相关文章

  • cf手游体验服资格申请问卷答案2024年
    cf手游体验服资格申请问卷答案2024年

    cf穿越火线体验服全新的招募已经进行开启了,能够通过多种方式进行资格的获取,兑换、邀请好友、答题三种不同的方式去进行资格的获取,本期就将为大家介绍一下详细的资格获取方法,一起来具体的了解一下吧。

    0
  • QQ音乐如何提取歌词视频
    QQ音乐如何提取歌词视频

    当我们听歌时,听到自己喜欢的歌词,想要把它单独记录下来,却又不想浪费时间重新制作一个歌词海报,那么这时我们就需要用到提取视频歌词的功能,来协助我们制作视频或者海报,但是如何提取歌词视频呢,让我来告诉你。

    0
  • QQ怎么群发消息
    QQ怎么群发消息

    当你聊天时想要给很多人发消息,但是却又不想一个一个的发,这是我们就可以选择群发消息来给所有人发消息,这样既不会浪费自己的时间,也不会觉得无聊,那么要如何群发消息呢,我来告诉你吧。

    0
  • QQ如何添加朋友
    QQ如何添加朋友

    当我们在现实里交到一些新的朋友,并且蚁后还会经常练习,那么这时就可以使用QQ来添加朋友,毕竟QQ也是日常重要的聊天社交软件之一,那么对于不了解QQ的人来说要怎么添加朋友呢,方法也有很多种,下面我就来推荐一种即使来两人不在身边也能添加的方法。

    0
  • QQ怎么隐身访问别人空间
    QQ怎么隐身访问别人空间

    当我们使用QQ时,如果想要查看别人的空间动态,但是又不想让别人知道自己看过他的QQ空间,这是隐身访问空间功能就帮了我们很大的一个忙,那么如何隐身访问别人的QQ空间,不让别人知道呢,就让我来告诉你。

    0
  • 纸嫁衣7第一章完整版攻略
    纸嫁衣7第一章完整版攻略

    纸嫁衣7第一章怎么过?在新的章节中大家需要跟随柳逢泽的脚印一起来到第七部,游戏中又将会有什么样的解密等待着大家呢?大家都已经狠狠地期待住了,下面是小编为大家带来的纸嫁衣7第一章详细的通关攻略,大家可以参考一下哦。

    0
  • QQ怎么建群
    QQ怎么建群

    随着时代的发展,越来越多的人使用QQ聊天,也已经成为我们聊天,交流兴趣的重要平台,在这里我们可以和别人分享自己的日常生活,交流学习经验,或者讨论自己爱好兴趣,当所有人聚集在一起时就需要创建一个群聊来共同讨论,那么如何创建一个群聊呢,就让我来告诉你吧。

    0
  • QQ怎么看对方有没有删除你
    QQ怎么看对方有没有删除你

    我们都知道删除别人是一件不太好的事情,如果以后又遇见了,岂不是非常尴尬,但这不代表我们不删除别人,别人就不会删除我们,那么想要知道我们是否被别人删除有很多种方法,现在我就告诉大家一种既不发消息,也没有访问记录的方法,就能知道是谁删除了我们。

    0
  • QQ音乐怎么复制歌单链接
    QQ音乐怎么复制歌单链接

    当我们使用QQ音乐听歌时,如果听到好听的歌曲可以将歌单链接分享给给小伙伴们一起听歌,那么如何复制歌单链接呢,下面就让我来告诉大家一个既简单又好用的方法,保证你能第一时间分享给好友。

    0
  • qq音乐循环播放在哪
    qq音乐循环播放在哪

    当我们在QQ音乐听到好听的歌曲的时候,难免会想多听几遍,这时我们就会设置单曲循环,然后多听几遍,但是QQ音乐还可以设置循环的次数,想必没有多少人直到吧,就让我来告诉大家如何设置吧。

    0