日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

利用cheat engine以及VC编写游戏修改器

發(fā)布時間:2025/7/14 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用cheat engine以及VC编写游戏修改器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

cheat engine的介紹已經(jīng)完畢了,下面就是怎么使用它的問題,這里寫一個稍微有意思一點的,也有實際用途的話題,就是來編寫自己的游戲修改器。

這篇文章參考了http://www.pediy.com/bbshtml/bbs7/pediy7-59.htm的內(nèi)容,但是進(jìn)行了一定的修改和自己的實驗,大家可以結(jié)合著一起看。

關(guān)于上面的鏈接我就不講什么了,主要介紹我的方法。

我使用的工具

cheat engine

Visual studio 2005

目標(biāo):

紅色警戒2 繁體中文版(帶游俠網(wǎng)補丁)

?

下面就開始了,大家如果有這款游戲的話,也可以自己來試試,還是有點意思的。

使用cheat engine來輔助工作:

首先在開始工作之前,需要進(jìn)行一定的準(zhǔn)備。準(zhǔn)備就是將游戲和cheat engine都打開,然后對于游戲,先新建一個遭遇戰(zhàn),選擇一個“簡單的敵人”,這里是因為你需要時間去找地址,如果敵人很厲害,你還沒找到地址就掛了,那就沒得玩了,當(dāng)然,這里找地址還是很快的。

注意點有幾點,在flash文件中我會注釋出來,這里簡單提一下:

  • 就是選擇“簡單的敵人”,然后開始游戲,此時才能使用cheat engine。
  • 對于cheat engine,選擇進(jìn)程的時候,不是選擇game.exe,而是后綴名為 tmp0…的。
  • 自己試驗的時候,要注意游戲的版本,以及是否有其他補丁,甚至語言也可能會有影響,可能你得到的地址和我這里不一樣,但是并不影響修改。
  • 因為這里游戲為全屏,所以錄制的時候只錄制cheat engine的畫面,而不錄制紅警的畫面。
  • 在準(zhǔn)備工作都做好之后,開始進(jìn)行cheat engine的工作,大家具體看flash動畫:

    修改器原理:

    從上面的flash我們得到,00A1E0C4為最終我們找到的地址,而offset為24C。我們通過這個可以知道其指向的地址內(nèi)存儲著我們需要的金錢數(shù)。而修改了這個金錢數(shù),在游戲中我們也就修改成功。

    代碼如下:

    代碼?1?void?CGameRedAlertDlg::OnBnClickedButton1()
    ?2?{
    ?3?????//修改內(nèi)存
    ?4?????//now?we?get?the?right?memory?address.
    ?5?????void?*addrpoint?=?(void?*)0x00A1E0C4;
    ?6?????//then?get?a?new?pointer
    ?7?
    ?8?????unsigned?int?newMoney?=?900000;
    ?9?
    10?????//And?we?should?give?moneyAddr?the?money?change.
    11?????HANDLE?handle?=?CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    12?????PROCESSENTRY32*?info=new?PROCESSENTRY32;
    13?????info->dwSize=sizeof(PROCESSENTRY32);
    14?????BOOL?bret;
    15?????DWORD?PID;
    16?????HANDLE?hProcess=NULL;
    17?
    18?????unsigned?int?objMoney?=?0;
    19?????unsigned?int?addrInt?=?0;
    20?
    21?????TCHAR?*procName?=?_T("game.tmp");
    22?
    23?????bret?=?Process32First(handle,info);
    24?????while?(bret)
    25?????{
    26?????????//get?the?right?process.
    27?????????TCHAR?*file?=?info->szExeFile;
    28?????????TCHAR?*fileName;;
    29?????????//全部轉(zhuǎn)換為小寫,然后再匹配其中是否有子字符串
    30?????????_tcslwr_s(fileName=_tcsdup(file),?_tcslen(file)+1);
    31?????????TCHAR?*pDest?=?_tcsstr(fileName,procName);
    32?????????free(fileName);
    33?????????if(pDest!=NULL)
    34?????????{
    35?????????????//found
    36?????????????MessageBox(_T("find..."),_T("OK"));
    37?????????????PID=info->th32ProcessID;
    38?????????????hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
    39?
    40?????????????ReadProcessMemory(hProcess,addrpoint,&addrInt,4,NULL);
    41?????????????void?*addr?=?(void?*)addrInt;
    42?????????????int?offset?=?0x24c;
    43?????????????int?*moneyAddr?=?(int?*)((char?*)addr?+?offset);
    44?????????????ReadProcessMemory(hProcess,moneyAddr,&objMoney,4,NULL);
    45?????????????Sleep(500);
    46?????????????BOOL?bWrite?=?WriteProcessMemory(hProcess,moneyAddr,&newMoney,4,NULL);
    47?
    48?????????????if?(bWrite)
    49?????????????{
    50?????????????????MessageBox(_T("Write?success"),_T("Good"));
    51?????????????}
    52?????????????else
    53?????????????{
    54?????????????????MessageBox(_T("Write?Failed!"),_T("Failed"));
    55?????????????}
    56?
    57?????????????break;
    58?????????}
    59?????????bret?=?Process32Next(handle,info);
    60?
    61?????????if(bret==FALSE)
    62?????????????MessageBox(_T("Cannot?find?such?process"),_T("Error"));
    63?????}
    64?????if?(hProcess)
    65?????{
    66?????????CloseHandle(hProcess);
    67?????}
    68?}
    69?

    ?

    這里將金錢數(shù)修改為900000.

    如何使用修改器:

    簡單看一下修改器的截圖

    ?

    可以看到很簡單,因為只是實驗,所以沒有去實現(xiàn)什么界面,將所有的代碼寫在按鈕的響應(yīng)函數(shù)中。?

    前提,啟動游戲,進(jìn)入某一個遭遇戰(zhàn)中,等金錢數(shù)目跳到10000(當(dāng)然,要看你開始資金是否是10000,我默認(rèn)都是),然后就可以點擊Button1來修改金錢了。大家試試看吧。

    ?

    后記:

    其實這里僅僅是一個修改器的雛形,還有很多地方可以去完善,但是從技術(shù)學(xué)習(xí)的角度,應(yīng)該算是足夠了。

    ?

    PS

    關(guān)于編輯器的問題,不知道大家具體是怎么使用的。我原來使用CuteEditor,不過上傳完flash后,不知道如何使用,在TinyMCE中找到插入flash的地方,所以要切來切去,先用CuteEditor上傳,再用TinyMCE插入,同時TinyMCE似乎對代碼著色沒有CuteEditor好。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/cnyao/archive/2009/12/08/playonstudy3.html

    總結(jié)

    以上是生活随笔為你收集整理的利用cheat engine以及VC编写游戏修改器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。