>

Cheat Engine을 사용하면 주소 0x10456554에서 바이트 배열을 찾습니다. C #에서 바이트 배열을 찾으려면 먼저 0x1F0FFF (모든 액세스) 권한으로 게임 프로세스를 연 다음 0x00000000-0x7FFFFFFF (전체 프로세스) 및 해당 바이트 섹션 (0x10000000 등)에서 ReadProcessMemory ()를 수행합니다. ))가 모두 비어 있습니다.

그래서 모든 모듈을 단계별로 실행하고 데이터를 개별 덤프 파일로 덤프했습니다. 그러나 주소 섹션 (0x10000000)은 거의 건너 뛴 것처럼 덤프되지 않았습니다. 치트 엔진조차도 메모리 섹션이 특정 모듈에 속하지 않는다고 말합니다. 그래서 어디에서 왔는지 모르겠습니다.

public IntPtr pHandle = OpenProcess(0x1F0FFF, 1, id);
public Process procs = Process.GetProcessById(id);
//dump main module first
byte[] test = new byte[procs.MainModule.ModuleMemorySize];
ReadProcessMemory(pHandle, (UIntPtr)((int)procs.MainModule.BaseAddress), test, (UIntPtr)procs.MainModule.ModuleMemorySize, IntPtr.Zero);
File.WriteAllBytes(procs.MainModule.BaseAddress.ToString("x8") + " " + procs.MainModule.ModuleName + ".dmp", test);
//now dump all other modules
foreach (ProcessModule p in procs.Modules)
{
    byte[] test2 = new byte[p.ModuleMemorySize];
    ReadProcessMemory(pHandle, (UIntPtr)((int)p.BaseAddress), test2, (UIntPtr)p.ModuleMemorySize, IntPtr.Zero);
    File.WriteAllBytes(p.BaseAddress.ToString("x8") + " " + p.ModuleName + ".dmp", test2);
}

  • 답변 # 1

    답변 해 주신 @Tamas Hegedus에게 감사합니다. MEMORY_BASIC_INFORMATION과 함께 VirtualQueryEx를 사용하여 좋은 솔루션을 찾았습니다.

    https://www.codeproject.com/Articles/716227/Csharp-How-to-Scan-a-Process-Memory에서이 코드를 찾았습니다

    long proc_min_address_l = (long)procs.MainModule.BaseAddress;
    long proc_max_address_l = (long)procs.VirtualMemorySize64;
    MEMORY_BASIC_INFORMATION mem_basic_info = new MEMORY_BASIC_INFORMATION();
    while (proc_min_address_l < proc_max_address_l)
    {
        VirtualQueryEx(pHandle, proc_min_address, out mem_basic_info, Marshal.SizeOf(mem_basic_info));
        byte[] buffer = new byte[(int)mem_basic_info.RegionSize];
        UIntPtr test = (UIntPtr)((int)mem_basic_info.RegionSize);
        UIntPtr test2 = (UIntPtr)((int)mem_basic_info.BaseAddress);
        ReadProcessMemory(pHandle, test2, buffer, test, IntPtr.Zero);
        proc_min_address_l += (int)mem_basic_info.RegionSize;
        proc_min_address = new IntPtr(proc_min_address_l);
    }
    
    

  • 이전 rust - 언제 타입 어노테이션으로 명시해야합니까?
  • 다음 php - woocommerce storefront theme 홈페이지에서 페이지 제목 제거