亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 8.txt

?? 封包截取及修改工具的使用方法
?? TXT
字號:
現(xiàn)在很多游戲都是把一些信息存入內(nèi)存單元的,那么我們只需要修改具體內(nèi)存值就能修改游戲中的屬性,很多網(wǎng)絡(luò)游戲也不外于此。

  曾幾何時,一些網(wǎng)絡(luò)游戲也是可以用內(nèi)存外掛進行修改的,后來被發(fā)現(xiàn)后,這些游戲就把單一內(nèi)存地址改成多內(nèi)存地址校驗,加大了修改難度,不過仍然可以通過內(nèi)存分析器可以破解的。諸如"FPE"這樣的軟件便提供了一定的內(nèi)存分析功能。

  "FPE"是基于內(nèi)存外掛的佼佼者,是家喻戶曉的游戲修改軟件。很多同類的軟件都是模仿"FPE"而得到玩家的認可。而"FPE"實現(xiàn)的技術(shù)到現(xiàn)在都沒有公開,很多人只能夠通過猜測"FPE"的實現(xiàn)方法,實現(xiàn)同類外掛。筆者也曾經(jīng)模仿過"FPE"實現(xiàn)相應的功能,如"內(nèi)存修改"、"內(nèi)存查詢" 等技術(shù)。稍后會對此技術(shù)進行剖析。

  既然要做內(nèi)存外掛,那么就必須對Windows的內(nèi)存機制有所了解。計算機的內(nèi)存(RAM)總是不夠用的,在操作系統(tǒng)中內(nèi)存就有物理內(nèi)存和虛擬內(nèi)存之分,因為程序創(chuàng)建放入物理內(nèi)存的地址都是在變化的,所以在得到游戲?qū)傩詴r并不能夠直接訪問物理內(nèi)存地址。在v86模式下,段寄存器使用方法與實模式相同,那么可以通過段寄存器的值左移4位加上地址偏移量就可以得到線性地址,而程序創(chuàng)建時在線性地址的中保留4MB-2GB的一段地址,游戲中屬性便放于此。在windows中把虛擬內(nèi)存塊稱之為頁,而每頁為4KB,在訪問內(nèi)存時讀取游戲?qū)傩詴r,為了不破壞數(shù)據(jù)完整性的快速瀏覽內(nèi)存地址值,最好一次訪問一頁。

  在操作進程內(nèi)存時,不需要再使用匯編語言,Windows中提供了一些訪問進程內(nèi)存空間的API,便可以直接對進程內(nèi)存進行操作。但初學者一般掌握不了這一項技術(shù),為了使初學者也能夠?qū)?nèi)存進行操作,做出基于內(nèi)存控制的外掛,筆者把一些內(nèi)存操作及一些內(nèi)存操作邏輯進行了封裝,以控件形式提供給初學者??丶麨椋篗pMemCtl。

  初學者在使用此控件時,要先安裝外掛引擎控件包(在此后的每篇文章中外掛引擎控件包僅提供與該文章相應的控制控件),具體控件安裝方式,請參閱《Delphi指南》,由于篇幅所限,恕不能詳細提供。

  在引擎安裝完成后,便可以在Delphi中的組件欄內(nèi),找到[MP GameControls]控件組,其中可以找到[MpMemCtl]控件。初學者可以使用此控件可以對內(nèi)存進行控制。

  一、 得到進程句柄

  需要操作游戲內(nèi)存,那么首先必須確認要操作的游戲,而游戲程序在運行時所產(chǎn)生的每一個進程都有一個唯一的句柄。

  使用控件得到句柄有三種方法:

  1、 通過控件打開程序得到句柄。

  在控件中,提供了startProgram方法,通過該方法,可以打開程序得到進程句柄,并且可以返回進程信息。

PProcInf PROCESS_INFORMATION;
MpMemCtl.startProgram(
 FilePath:String; //程序路徑
 var aProc_Info:PROCESS_INFORMATION //進程信息
):BOOLEAN

  該方法提供了兩個參數(shù),第一個參數(shù)為要打開的程序路徑,第二個參數(shù)為打開程序后所創(chuàng)建進程的進程信息。使用這個方法在得到進程信息的同時,并給控件的ProcHandle(進程句柄)屬性進行了附值,這時可以使用控件直接對內(nèi)存進程讀寫操作。其應用實例如下:

Var
 PProcInf PROCESS_INFORMATION;
begin
 MpMemCtl1.startProgram(edit1.Text, PProcInfo)

  2、通過控件根據(jù)程序名稱得到句柄。

  在控件中,對系統(tǒng)運行進程也有了相應的描述,控件提供了兩個方法,用于根據(jù)程序名稱得到相應的進程句柄。getProcIDs()可以得到系統(tǒng)現(xiàn)在所運行的所有程序的名稱列表。getProcID()可以通過所運行程序名稱,得到相應進程的句柄。

getProcIDs():TStrings //所返回為多行字符串型

getProcID(
aProcName:String //應用程序名稱
):Thandle; //應用程序進程句柄

  其應用實例如下:

  首先可以通過getProcIDs()并把參數(shù)列表返回ComboBox1.Items里:

ComboBox1.Items:=MpMemCtl1.getProcIDs();

  接著可以通過getProcID()得到相應的進程句柄,并給控件的ProcHandle(進程句柄)屬性進行了附值,這時可以使用控件直接對內(nèi)存進程讀寫操作。

MpMemCtl1.getProcID(ComboBox1.Text)

  3、通過控件根據(jù)窗口名稱得到句柄。

  在控件中,控件提供了兩個方法,用于根據(jù)窗口名稱得到相應的進程句柄。可以通過getALLWindow()得到所有在進程中運行的窗口。getWinProcHandle()可以通過相應的窗口名稱,得到相應的進程的句柄。

getALLWindow(
aHandle:THandle //傳入當前窗口的句柄
):TStrings; //返回當前所有運行窗口的名稱
getWinProcHandle(
aWindowName:String //傳入當前窗口名稱
):Thandle; //返回窗口的句柄

  其應用實例如下:

  首先可以通過getALLWindow ()并把參數(shù)列表返回ComboBox1.Items里:

ComboBox1.Items:=MpMemCtl1. getALLWindow(Handle);

  接著可以通過getWinProcHandle ()得到相應的進程句柄,并給控件的ProcHandle(進程句柄)屬性進行了附值,這時可以使用控件直接對內(nèi)存進程讀寫操作。

MpMemCtl1. getWinProcHandle (ComboBox1.Text);
 二、使游戲暫停

  在程序中,為了便于更好的得到游戲的當前屬性。在控件中提供了游戲暫停方法。只需要調(diào)用該方法,游戲便可以自由的暫停或啟動。該方法為:pauseProc()

pauseProc(
 aType:integer //控制類型
)

  控制類型只能夠傳入?yún)?shù)0或1,0代表使游戲暫停,1代表取消暫停。其應用實例如下:

MpMemCtl1.pauseProc(0); //暫停游戲
MpMemCtl1.pauseProc(1); //恢復暫停

三、讀寫內(nèi)存值


  游戲?qū)傩云鋵嵓拇嬖趦?nèi)存地址值里,游戲中要了解或修改游戲?qū)傩?,可以通過對內(nèi)存地值的讀出或?qū)懭胪瓿伞?
  通過控件,要讀寫內(nèi)存地址值很容易??梢酝ㄟ^調(diào)用控件提供的getAddressValue()及setAddressValue()兩個方法即可,在使用方法之前,要確認的是要給ProcHandle屬性進行附值,因為對內(nèi)存的操作必須基于進程。給ProcHandle屬性附值的方法,在上文中已經(jīng)介紹。無論是對內(nèi)存值進行讀還是進行寫,都要明確所要操作的內(nèi)存地址。

getAddressValue( //讀取內(nèi)存方法
aAddress:pointer; //操作的內(nèi)存地址
var aValue:integer //讀出的值
):Boolean;

setAddressValue( //寫入內(nèi)存方法
aAddress:pointer; //操作的內(nèi)存地址
aValue:integer //寫入的值
):Boolean;

  要注意的是,傳入內(nèi)存地址時,內(nèi)存地址必須為Pointer型。其應用實例如下:

  讀取地址值(如果"主角"等級所存放的地址為4549632):

var
 aValue:Integer;
begin
 MpMemCtl1.getAddressValue(Pointer(‘4549632'),aValue);

  這時aValue變量里的值為內(nèi)存地址[4549632]的值。

  寫入地址值:

MpMemCtl1.setAddressValue(Pointer(Strtoint(‘4549632')),strtoint(87));

  通過該方法可以把要修改的內(nèi)存地址值改為87,即把"主角"等級改為87
四、內(nèi)存地址值分析

  在游戲中要想要到游戲?qū)傩源娣诺膬?nèi)存地址,那么就對相應內(nèi)存地址進行內(nèi)存分析,經(jīng)過分析以后才可得到游戲?qū)傩源娣诺娜舜娴刂贰?
  控件提供兩種基于內(nèi)存地址的分析方法。一種是按精確地址值進行搜索分析,另一種是按內(nèi)存變化增減量進行搜索分析。

  1、 如果很明確的知道當前想要修改的地址值,那么就用精確地址值進行搜索分析

  在游戲中,需要修改人物的經(jīng)驗值,那么首先要從游戲畫面上獲得經(jīng)驗值信息,如游戲人物當前經(jīng)驗值為9800,需要把經(jīng)驗值調(diào)高,那么這時候就需要對人物經(jīng)驗值在內(nèi)存中搜索得到相應的內(nèi)存地址,當然很可能在內(nèi)存中地址值為9800的很多,第一次很可能搜索出若干個地址值為9800的地址。等待經(jīng)驗值再有所變化,如從9800變?yōu)榱?0000時,再次進行搜索,那么從剛剛所搜索到的地址中,便可以進一步獲得范圍更少的內(nèi)存地址,以此類推,那么最后可得到經(jīng)驗值具體存放的地址。

  如要用控件來實現(xiàn)內(nèi)存值精確搜索,其實方法很簡單,只需要調(diào)用該控件的Search()方法即可。但是在搜索之前要確認搜索的范圍,正如前文中所說:"而程序創(chuàng)建時在線性地址的中保留4MB-2GB的一段地址",所以要搜索的地址應該是4MB-2GB之間,所以要把控件的MaxAddress 屬性設(shè)為2GB,把控件的MinAddress屬性設(shè)為4MB。還有一個需要確認的是需要搜索的值,那么應該把SearchValue屬性設(shè)置為當前搜索的值。如果需要顯示搜索進度那么可以把ShowGauge屬性掛上一個相應的TGauge控件(該控件為進度條控件)。

search(
 isFirst:Boolean //是否是第一次進行搜索
):Boolean

  在搜索分析時為了提高搜索效率、實現(xiàn)業(yè)務邏輯,那么需要傳入一個參數(shù),從而確認是否是第一次進行內(nèi)存。其應用實例如下:

maxV:=1024*1024*1024;
maxV:=2*MaxV;
minV:=4*1024*1024;
V:=StrToInt(Edit1.Text);
with MpMemCtl1 do
begin
 MaxAddress:=maxV;
 MinAddress:=minV;
 SearchValue:=SeaarchV;
 ShowGauge:=Gauge1;
 Search(first)
end;
if first then first:=false;

  2、 如果不明確當前想要修改的地址值,只知道想要修改的值變大或變小,那么就按內(nèi)存變化增減量進行搜索分析。

  如有些游戲的人物血值不顯示出來,但要對人物血值進行修改,那么只有借助于內(nèi)存量增減變化而進行搜索分析出該人物血值存放的地址。如果人物被怪物打了一下,那么人物血值就會減少,那么這時候就用減量進行搜索分析,如果人物吃了"血"人物血值就會增加,那么這時候就用增量進行搜索分析。經(jīng)過不斷搜索,最后會把范圍放血值的內(nèi)存地址給搜索出來。

  如要用控件來實現(xiàn)內(nèi)存值精確搜索,其實方法很簡單,只需要調(diào)用該控件的compare()方法即可。MaxAddress、 MinAddress屬性設(shè)置上面章節(jié)中有詳細介紹,在此不再重提。在此分析中不需要再指定SearchValue屬性。如果需要顯示搜索進度那么可以把 ShowGauge屬性掛上一個相應的TGauge控件。
compare (
 isFirst:Boolean //是否是第一次進行搜索
 aType:Integer //搜索分析類型
):Boolean

  在搜索分析時為了提高搜索效率、實現(xiàn)業(yè)務邏輯,那么需要傳入一個參數(shù),從而確認是否是第一次進行內(nèi)存。搜索分析類型有兩種:如果參數(shù)值為0,那么就代表增量搜索。如果參數(shù)值為1,那么就代表減量搜索。其應用實例如下:

if RadioButton1.Checked then v:=0
else v:=1;
 maxV:=1024*1024*1024;
 maxV:=2*MaxV;
 minV:=4*1024*1024;
 with MpMemCtl1 do
 begin
  MaxAddress:=maxV;
  MinAddress:=minV;
  ShowGauge:=Gauge1;
  compare(first,v);
end;
if first then first:=false;

五、得到內(nèi)存地址值

  在控件中,提供獲得分析后內(nèi)存地址列表的方法,只需要調(diào)用getAddressList()方法,便可以獲得分析過程中或分析結(jié)果地址列表。但如果使用的是按內(nèi)存變化增減量進行搜索分析的方法,那么第一次可能會搜索出來很多的地址,致使返回速度過長,那么建議使用 getAddressCount()方法確定返回列表為一定長度后才給予返回。

getAddressList():TStrings //返回地址字符串列表
getAddressCount():Integer //返回地址字符串列表長度

  其應用實例如下:

if MpMemCtl1.getAddressCount() <100 then
 listbox1.Items:=MpMemCtl1.getAddressList();

  通過以上五個步驟,便可以整合成一個功能比較完備的,基于內(nèi)存控制方法的游戲外掛。有了"FPE"的關(guān)鍵部份功能。利用此工具,通過一些方法,不僅僅可以分析出來游戲?qū)傩詥蝺?nèi)存地址,而且可以分析出一部份多內(nèi)存游戲?qū)傩源娣诺刂贰?

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av午夜一区麻豆| 中文字幕不卡三区| 亚洲影院在线观看| 一本一道波多野结衣一区二区| 国产精品久久777777| av一区二区三区黑人| 国产精品婷婷午夜在线观看| 波多野结衣一区二区三区| 亚洲欧洲成人自拍| 在线看一区二区| 日韩精品成人一区二区三区 | 亚洲日本一区二区| 欧美伊人久久大香线蕉综合69| 亚洲午夜久久久久中文字幕久| 91麻豆精品国产自产在线 | 一区二区久久久久| 欧美另类一区二区三区| 麻豆久久久久久| 国产日产欧美一区二区视频| 色综合一区二区三区| 免费在线看成人av| 久久综合精品国产一区二区三区| 国产a久久麻豆| 亚洲午夜国产一区99re久久| 欧美一区二区三区免费观看视频| 国产乱理伦片在线观看夜一区| 亚洲青青青在线视频| 欧美嫩在线观看| 国产毛片精品国产一区二区三区| 亚洲久本草在线中文字幕| 欧美挠脚心视频网站| 国产成+人+日韩+欧美+亚洲| 亚洲国产中文字幕在线视频综合 | 欧美在线一区二区三区| 日本sm残虐另类| 欧美—级在线免费片| 色播五月激情综合网| 久久草av在线| 亚洲欧美偷拍卡通变态| 日韩写真欧美这视频| 成人国产精品免费观看动漫| 五月天精品一区二区三区| 久久久久久久免费视频了| 91老师片黄在线观看| 久久激情综合网| 亚洲黄色小说网站| 久久午夜电影网| 欧美三级蜜桃2在线观看| 国产综合一区二区| 亚洲婷婷在线视频| 亚洲精品一区在线观看| 欧美日韩一区二区三区在线| av电影天堂一区二区在线| 免费成人在线播放| 亚洲国产精品精华液网站| 久久午夜老司机| 欧美一区二区成人| 欧美午夜精品久久久| 成人av网址在线| 久久99国产精品麻豆| 午夜亚洲国产au精品一区二区| 国产精品另类一区| xf在线a精品一区二区视频网站| 欧美日韩在线播| 91麻豆高清视频| 不卡在线视频中文字幕| 国产乱码精品一区二区三区五月婷| 图片区日韩欧美亚洲| 一区二区在线观看av| 国产精品三级视频| 久久色在线视频| 欧美变态tickle挠乳网站| 欧美电影影音先锋| 欧美性欧美巨大黑白大战| 成人av动漫网站| 成人国产免费视频| 成人激情小说网站| 国产a精品视频| 国产mv日韩mv欧美| 国产 欧美在线| 国产成人综合在线观看| 国产伦精品一区二区三区视频青涩| 蜜臀精品一区二区三区在线观看| 五月天激情综合网| 日韩av午夜在线观看| 日韩av一区二区三区四区| 日韩电影在线看| 蜜臀a∨国产成人精品| 五月天一区二区| 蜜臀久久久99精品久久久久久| 裸体一区二区三区| 蜜桃视频在线观看一区二区| 激情综合色丁香一区二区| 狠狠色丁香婷婷综合| 国产乱码字幕精品高清av| 国产aⅴ综合色| 91在线精品一区二区三区| 色香蕉久久蜜桃| 欧美日韩国产美女| 日韩一区二区三区三四区视频在线观看 | 国产午夜精品久久久久久久| 久久精品一区二区三区av| 中文字幕不卡在线| 亚洲精品国产一区二区精华液 | 成人深夜在线观看| av网站一区二区三区| 欧美午夜电影在线播放| 7777精品伊人久久久大香线蕉经典版下载| 欧美夫妻性生活| 精品国产欧美一区二区| 国产精品久久久久久久久动漫| 亚洲综合色丁香婷婷六月图片| 午夜精品久久久久久久| 精东粉嫩av免费一区二区三区| 国产精品白丝jk白祙喷水网站| 99精品一区二区| 9191成人精品久久| 久久精品视频网| 亚洲最快最全在线视频| 美女视频网站黄色亚洲| thepron国产精品| 欧美日韩在线观看一区二区 | 97久久精品人人做人人爽50路| 欧美日韩一区二区在线视频| 久久久九九九九| 亚洲午夜免费福利视频| 国产成人精品亚洲日本在线桃色 | 亚洲超碰97人人做人人爱| 国产精品888| 欧美视频中文字幕| 国产人久久人人人人爽| 午夜激情一区二区三区| 国产99精品视频| 69堂精品视频| 日韩一区欧美小说| 久久er99热精品一区二区| 91网上在线视频| 欧美大片一区二区三区| 亚洲精品国产一区二区精华液| 国产一区二区三区黄视频| 欧美日韩中文另类| 国产免费成人在线视频| 日韩成人一级大片| 91在线视频观看| 国产人成一区二区三区影院| 日韩成人一区二区| 在线精品视频免费播放| 中文一区二区在线观看| 久久精品国产一区二区三| 色av成人天堂桃色av| 国产精品灌醉下药二区| 久久99深爱久久99精品| 欧美裸体bbwbbwbbw| 亚洲欧美日韩国产综合在线 | 91免费小视频| 欧美国产日韩精品免费观看| 老色鬼精品视频在线观看播放| 欧美三级日本三级少妇99| 亚洲美女偷拍久久| 成人精品gif动图一区| 国产偷国产偷亚洲高清人白洁| 美女网站一区二区| 欧美理论电影在线| 一区二区三区精品视频在线| 99免费精品视频| 中文字幕国产一区| 国产成人精品三级| 26uuu亚洲综合色| 久久精品噜噜噜成人88aⅴ| 3751色影院一区二区三区| 午夜不卡av免费| 欧美日韩二区三区| 亚洲与欧洲av电影| 在线观看日韩av先锋影音电影院| 亚洲欧洲韩国日本视频| caoporn国产一区二区| 中文字幕中文乱码欧美一区二区| 粉嫩蜜臀av国产精品网站| 国产欧美日韩麻豆91| 成人av动漫网站| **欧美大码日韩| 色综合久久久久网| 亚洲一区二区三区免费视频| 欧美卡1卡2卡| 久久精品二区亚洲w码| 久久一留热品黄| 国产盗摄精品一区二区三区在线| 欧美国产欧美综合| av在线不卡网| 亚洲国产精品视频| 4438成人网| 国产精品综合久久| 中文字幕精品—区二区四季| 一本一道久久a久久精品| 午夜视频一区二区| 欧美一区二区三区不卡| 国内精品第一页| 国产精品高潮呻吟久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲一级片在线观看|