Menjalankan EXE daripada Penimbal Memori Menggunakan CreateProcess
Fungsi CreateProcess biasanya digunakan untuk melancarkan executable (EXE) yang disimpan dalam fail . Walau bagaimanapun, adakah mungkin untuk menjalankan EXE terus dari penimbal memori tanpa menulisnya ke fail? Soalan ini timbul dalam senario seperti menampal permainan, di mana anda mungkin perlu mengemas kini EXE yang dibalut tanpa melumpuhkan DRM.
Penyelesaian:
Ya, adalah mungkin untuk menjalankan EXE daripada penimbal memori menggunakan CreateProcess dengan langkah berikut:
-
Tangguhkan Proses Penciptaan: Panggil CreateProcess dengan bendera CREATE_SUSPENDED untuk menggantung proses. Ini memberi masa untuk mengubah suai memori proses.
-
Dapatkan Konteks Proses: Dapatkan semula konteks urutan yang digantung menggunakan GetThreadContext. Daftar EBX mengandungi penunjuk kepada struktur Blok Persekitaran Proses (PEB).
-
Tentukan Alamat Pangkalan: Dapatkan alamat asas proses daripada [EBX 8] dalam struktur PEB.
-
Salin EXE Dalam Memori: Tulis EXE dalam memori ke dalam ruang memori proses yang digantung menggunakan WriteProcessMemory jika alamat asas dan saiz imej sepadan.
-
Laraskan untuk Keadaan Tidak Padan: Sekiranya keadaan tidak sepadan, nyahpetakan imej asal menggunakan ZwUnmapViewOfSection, peruntukkan memori menggunakan VirtualAllocEx, tulis EXE dalam memori dan tampal PEB->ImageBaseAddress.
-
Tetapkan Titik Masuk: Tulis semula alamat EntryPoint dalam konteks utas dengan titik masuk EXE dalam memori.
-
Proses Sambungan Semula: Akhir sekali, sambung semula proses yang digantung menggunakan ResumeThread.
Dengan mengikuti langkah ini, anda boleh menjalankan EXE dengan berkesan daripada penimbal memori tanpa perlu menulisnya ke fail, memenuhi keperluan untuk mengedarkan patch tanpa mengganggu pembungkus DRM.
Atas ialah kandungan terperinci Bolehkah Anda Menjalankan EXE daripada Penampan Memori Menggunakan CreateProcess?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn