私は使用しています: ProcessMemoryReaderLib.dll は、それを私のプロジェクトに参照しました。これはform1コードです:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using ProcessMemoryReaderLib;
using System.IO;
namespace ProcessMemory
{
public partial class Form1 : Form
{
ProcessMemoryReader pReader;
int store;
IntPtr score_addr;
byte[] write;
public Form1()
{
InitializeComponent();
for (int i = 0 ; i < 2; i++)
{
store = 0;
pReader = new ProcessMemoryReader(); //create a new writer - reader
Process[] hProcessSnap; //create an array containing all running processes
Process hProcess = null;
hProcessSnap = Process.GetProcesses(); //Load all processes in the array
// The address
score_addr = (IntPtr)00000005;//(IntPtr)0x1007800;
write = new byte[4];
write = BitConverter.GetBytes(0);
for (int n = 0; n < hProcessSnap.Length; n++)
{
// ProcessName is not Unique, there could be many matching processes
// and this loop will only return the last one.
if (hProcessSnap[n].ProcessName == "FlashPlayerPlugin_11_8_800_168")
hProcess = hProcessSnap[n];
}
pReader.ReadProcess = hProcess;
pReader.OpenProcess();
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
pReader.WriteProcessMemory(score_addr, write, out store);
}
}
}
独自の for ループを追加しました。一般的な考え方は、メモリ内の特定のプロセスで特定の値を見つけることです。例: score_addr = (IntPtr)00000005;
00000005 = 16 進数で 5
今、私はこの値を持つ特定のプロセス メモリ内のメモリ内の多くの場所を見つけました。今、私はプロセスに行きます いくつかの変更を行う内部で何かを変更します プロセスはプログラムであるため、5だった場合は必要な値を変更します 今は4です
だから今、私はプロセスメモリで値4を検索します.5だったので、今は4です。結果は非常に狭いはずです.
ここで、この 3 ~ 4 個のアドレスを取得して、それぞれの値を 8 に変更します。プログラム (プロセス) を見ると、値が 8 に変更されていることがわかります。
- プロセス名のメモリをスキャンします。
- プロセス メモリ内のすべての場所/アドレスを特定の値 (例: 5) で見つけます。
- プロセス/プログラムの変更に移動して、値 5 が 4 になるようにします。
- 値 4 のメモリ内の最後の場所から再度スキャンし、値 4 のすべての場所/アドレスを見つけます。
- 値 4 のすべての結果を変更すると、各メモリ アドレスの値がたとえば値 8 に変更されます。
- 値 4 の結果が 8 に変更された正確な場所に書き戻します。
したがって、今自分のプロセスを見ると、値 8 が表示されます。
どうすればできますか?