• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-15  評(píng)論-5  文章-0  trackbacks-0

                    昨天看了一天的《windows程序設(shè)計(jì)》,本來(lái)第三章是看過(guò)了,可是總感覺對(duì)那個(gè)線程和進(jìn)程的東西理解不夠深刻,于是我又回頭看了一遍,今天算是理解比較深刻一點(diǎn)了吧,自我感覺!
                    原理就是搜索到游戲進(jìn)程所在的內(nèi)存地址,然后直接修改內(nèi)存地址的數(shù)據(jù),前一次看,對(duì)內(nèi)存地址搜索一塊,只是直接拷貝代碼,沒(méi)有理解,今天知道了,查找過(guò)程中需要輸出的中間數(shù)據(jù)也增加了點(diǎn),也理解了格式“%081X”格式指的是輸出8位的16進(jìn)制數(shù),不足前面補(bǔ)0,我是觀察輸出結(jié)果如此理解,不知道有沒(méi)有偏差!
               另外,注意到在一個(gè)程序中打開另外進(jìn)程時(shí),路徑一定不能寫錯(cuò),而且中間是雙斜線,而不是單的,如:char szFileName[] = "E:\\VC++例子\\vclesson\\2\\Testor\\Debug\\Testor.exe"; 如果改成單的就打不開,之前錯(cuò)誤一直沒(méi)查出來(lái),雖然只是一點(diǎn)點(diǎn)進(jìn)步,心里還是很高興的,我將繼續(xù)努力!
                    運(yùn)行效果 
            今天學(xué)習(xí)多線程同步和優(yōu)先級(jí)的設(shè)定問(wèn)題!


            評(píng)論:
            # re: 游戲內(nèi)存修改 2006-03-17 23:31 | Tauruser
            斜杠在C/C++里是轉(zhuǎn)義符號(hào),所以要表示“\”就要同時(shí)用兩個(gè)表示。  回復(fù)  更多評(píng)論
              
            # re: 游戲內(nèi)存修改 2006-03-18 18:46 | 真真假假
            謝謝你哦,不說(shuō)可能打死我也想不起來(lái),我是不是好笨?。](méi)有悟性!  回復(fù)  更多評(píng)論
              
            # re: 游戲內(nèi)存修改 2007-09-09 19:08 | 魏尚堂
            #include<windows.h>
            #include<stdio.h>
            #include<iostream.h>

            BOOL CompareAPage(DWORD dwBaseAddr,DWORD dwValue);
            BOOL FindFirst(DWORD dwValue);
            BOOL CompareAPage(DWORD dwBaseAddr,DWORD dwValue);
            void ShowList();

            BOOL FindFirst(DWORD dwValue); //在目標(biāo)進(jìn)程空間進(jìn)行第1次查找
            BOOL FindNext(DWORD dwValue); //在目標(biāo)進(jìn)程地址空間進(jìn)行第2,3,……次查找
            DWORD g_arList[1024]; //地址列表
            int g_nListCnt=0; //有效地址個(gè)數(shù)
            HANDLE g_hProcess; //目標(biāo)進(jìn)程句柄
            int main(int argc,char argv[])
            {
            char szFileName[]="..\\hao005\\debug\\hao005.exe";
            STARTUPINFO si={sizeof(si)};
            PROCESS_INFORMATION pi;
            ::CreateProcess(NULL,szFileName,NULL,
            NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
            ::CloseHandle(pi.hThread);
            g_hProcess=pi.hProcess;
            int iVal;
            printf("Input val=");
            scanf("%d",&iVal);
            BOOL a=FindFirst(iVal);
            ShowList();
            ::CloseHandle(g_hProcess);
            cout<<"a="<<a<<endl;
            return 0;
            }

            BOOL CompareAPage(DWORD dwBaseAddr,DWORD dwValue)
            {//讀一頁(yè)
            BYTE arBytes[4096];
            if(!::ReadProcessMemory(g_hProcess,(LPVOID)dwBaseAddr,arBytes,4096,NULL))
            {return FALSE;
            cout<<"22222222222"<<endl;}



            //此頁(yè)不可讀
            //在這一頁(yè)中讀
            DWORD* pdw;
            for(int i=0;i<(int)1024*4-3;i++);
            {
            pdw=(DWORD*)&arBytes[i];
            if(pdw[0]==dwValue) //等于要找的值
            {
            if(g_nListCnt>=1024)
            return FALSE;
            cout<<"找到了"<<endl;
            //添加到全局變量
            g_arList[g_nListCnt++]=dwBaseAddr+i;
            }
            }

            return TRUE;
            }
            BOOL FindFirst(DWORD dwValue)
            {
            const DWORD dwOneGB=1024*1024*1024;
            const DWORD dwOnePage=4*1024;
            if(g_hProcess==NULL)
            return FALSE;
            DWORD dwBase;
            OSVERSIONINFO vi={sizeof(vi)};
            ::GetVersionEx(&vi);
            if(vi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
            {dwBase=4*1024*1024;
            cout<<"0000000"<<endl;}

            else
            { dwBase=640*1024;
            cout<<"111111111111"<<endl;}
            //開始地址到2GB的地址空間進(jìn)行查找
            for(;dwBase<2*dwOneGB;dwBase+=dwOnePage)
            CompareAPage(dwBase,dwValue);
            printf("g_nListCnt=%d\n",g_nListCnt);
            return TRUE;
            }
            void ShowList()
            {
            for(int i=0;i<g_nListCnt;i++)
            printf("%8x\n",g_arList[i]);
            }

            我的就是查不到喲,if(pdw[0]==dwValue) //等于要找的值
            {
            if(g_nListCnt>=1024)
            return FALSE;
            cout<<"找到了"<<endl;
            //添加到全局變量
            g_arList[g_nListCnt++]=dwBaseAddr+i;
            }這些好像根本沒(méi)運(yùn)行的,想不出了, 大哥學(xué)過(guò)幫看下。  回復(fù)  更多評(píng)論
              
            色播久久人人爽人人爽人人片aV| 久久精品天天中文字幕人妻| 久久精品人人做人人爽电影| 久久精品国产亚洲综合色| 99久久亚洲综合精品网站| 亚洲精品WWW久久久久久| 精品熟女少妇AV免费久久| 久久发布国产伦子伦精品| 国产福利电影一区二区三区久久久久成人精品综合 | 久久66热人妻偷产精品9| 国内精品久久久久久久影视麻豆 | 欧洲性大片xxxxx久久久| 亚洲国产精品一区二区久久hs| …久久精品99久久香蕉国产| 国产精品成人无码久久久久久| 97精品伊人久久大香线蕉| 99久久综合狠狠综合久久| 亚洲成色www久久网站夜月| 狠狠色综合久久久久尤物| 久久久久久亚洲精品成人| 日本精品久久久久影院日本 | 久久99精品久久久久婷婷| 合区精品久久久中文字幕一区| 欧美亚洲另类久久综合| 亚洲日韩中文无码久久| 无码乱码观看精品久久| 久久国产视屏| 国产午夜久久影院| 国产亚洲精久久久久久无码| 国产精品久久久久久久人人看| 久久99国产一区二区三区| 久久婷婷国产麻豆91天堂| 久久综合狠狠综合久久综合88| 久久久久亚洲AV无码观看 | 久久午夜羞羞影院免费观看| 青草久久久国产线免观| 久久久久亚洲AV综合波多野结衣| 超级碰久久免费公开视频| 婷婷综合久久狠狠色99h| 天天爽天天爽天天片a久久网| 久久不射电影网|