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;
}
};

阴阳师
阴阳师
系统:Android   大小:1967.53MB   更新日期:08.22MB

   立即下载

  • cf手游体验服资格申请问卷答案2024年
    cf手游体验服资格申请问卷答案2024年
    浏览:0   时间:2024-09-05   来源:互联网
    cf穿越火线体验服全新的招募已经进行开启了,能够通过多种方式进行资格的获取,兑换、邀请好友、答题三种不同的方式去进行资格的获取,本期就将为大家介绍一下详细的资格获取方法,一起来具体的了解一下吧。
  • QQ音乐如何提取歌词视频
    QQ音乐如何提取歌词视频
    浏览:0   时间:2024-08-18   来源:互联网
    当我们听歌时,听到自己喜欢的歌词,想要把它单独记录下来,却又不想浪费时间重新制作一个歌词海报,那么这时我们就需要用到提取视频歌词的功能,来协助我们制作视频或者海报,但是如何提取歌词视频呢,让我来告诉你。
  • QQ怎么群发消息
    QQ怎么群发消息
    浏览:0   时间:2024-08-17   来源:互联网
    当你聊天时想要给很多人发消息,但是却又不想一个一个的发,这是我们就可以选择群发消息来给所有人发消息,这样既不会浪费自己的时间,也不会觉得无聊,那么要如何群发消息呢,我来告诉你吧。
  • QQ如何添加朋友
    QQ如何添加朋友
    浏览:0   时间:2024-08-15   来源:互联网
    当我们在现实里交到一些新的朋友,并且蚁后还会经常练习,那么这时就可以使用QQ来添加朋友,毕竟QQ也是日常重要的聊天社交软件之一,那么对于不了解QQ的人来说要怎么添加朋友呢,方法也有很多种,下面我就来推荐一种即使来两人不在身边也能添加的方法。
  • QQ怎么隐身访问别人空间
    QQ怎么隐身访问别人空间
    浏览:0   时间:2024-08-14   来源:互联网
    当我们使用QQ时,如果想要查看别人的空间动态,但是又不想让别人知道自己看过他的QQ空间,这是隐身访问空间功能就帮了我们很大的一个忙,那么如何隐身访问别人的QQ空间,不让别人知道呢,就让我来告诉你。
阴阳师
阴阳师
阴阳师是一款由网易公司开发的卡牌手游,以平安时代为背景,讲述了人鬼共生的奇幻故事。在游戏中,冒险者将扮演一名强大的阴[查看详情]
  • 其它名称:
  • 游戏类型:角色扮演
  • 游戏更新:2024-08-22
  • 游戏语言:简体中文
  • 游戏平台:Android

游戏推荐

更多

游戏排行榜

更多

下载声明 | 法律声明 | 版权声明 | 友情链接 | 发布软件 | 最新更新

本站为非盈利性网站,不接受任何广告。本站所有资源均由网友上传,如有侵权,请发邮件至 [email protected]

晋ICP备2024046785号-1