Plantsvs.Zombiesのカナダ.

2699 ワード

//注意:本プログラムのテストで使うPlantsvs.Zombiesバージョンは以下の通りです.
Plantsvs.Zombies年度中国語版
 
//本プログラムは他のバージョンには機能しない可能性があります.
Plantsvs.Zombies年度中国語版 ダウンロード先:http://l5.yunpan.cn/lk/36mpcb54vc このプログラムは住所をダウンロードします.業界では外付けに対して否定的な態度を持っていますので、作者はそれをインターネット上に公開しません.このプログラムは個人学習の研究用だけにします.必要な人は作者本人に連絡してください.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         前回はPlantsvs.Zombiesと陽光の掛け軸を書きましたが、勉強しています.つまらないです.ゲームをして、労働と休息をして、収穫が多いです.
今回は追加料金の掛け金を書いてしまいます.ゲーム中に装備を買うお金がないことを発見しました.
それはなかなかのしようがないですね.へへへ、現実でも同じです!…
まず、今回のお金の基盤を探す方法を教えてください.
外挂を勉强したばかりのとき、自分でお金の所在地を探しましたが、何度も探しました.一回ネットでお金の所在地を探している教程を見ました.見てから、私達がゲームで見たお金は最後の0は役に立たないです.例えば、ゲームで見たお金の数は5550です.実は私達が持っているお金の数は555です.私たちはお金の根拠地が探し出せないので、原因が分かりました.お金を探すたびに、お金の後ろの0を取り除いてから検索すればいいです.ほほほ、検索してみたら、お金の所在地は以前に検索した太陽の所在地と同じです.006 A 9 EC 0はそれらのオフセットだけが違っています.
本プログラムの効果は以下の通りです.
主なコードは以下の通りです
//          ,hGame       
int GetCurrentMoney(HANDLE hGame)
{
	DWORD dwRead=0;
	DWORD dwArr=0;

	//          ,   :0x6A9EC0
	BOOL bRead=::ReadProcessMemory(hGame,LPVOID(0x6A9EC0),(LPVOID)&dwArr,(DWORD)4,&dwRead);

	//             
	bRead=::ReadProcessMemory(hGame,LPVOID(dwArr+0x82c),(LPVOID)&dwArr,(DWORD)4,&dwRead);

	//    
	//            :dwArr+0x28
	bRead=::ReadProcessMemory(hGame,LPVOID(dwArr+0x28),(LPVOID)&dwArr,(DWORD)4,&dwRead);

	//        
	::CloseHandle(hGame);
	hGame=NULL;

	//        
	return (int)dwArr;	
}
 
   
//      ,hGame       
void AddMoney(int nAddMoney,HANDLE hGame)
{
	DWORD dwRead=0;
	DWORD dwArr=0;

	//          ,   :0x6A9EC0
	BOOL bRead=::ReadProcessMemory(hGame,LPVOID(0x6A9EC0),(LPVOID)&dwArr,(DWORD)4,&dwRead);

	//             
	bRead=::ReadProcessMemory(hGame,LPVOID(dwArr+0x82c),(LPVOID)&dwArr,(DWORD)4,&dwRead);

	//    
	//          dwArr+0x82c   ,        
	//          0x28,           
	//               ,          
	bRead=::WriteProcessMemory(hGame,
							    (LPVOID)(dwArr+0x28),
								(LPVOID)&nAddMoney,
								(DWORD)sizeof(nAddMoney),
								&dwRead);
	//    
	if(hGame!=NULL)
	 ::CloseHandle(hGame);
	hGame=NULL;
}







 
   
 
  

:https://www.cnblogs.com/friendan/archive/2012/06/22/2838062.html