Memuatkan EXE daripada Memory Buffer tanpa Menulis ke Fail
Ramai pembangun menghadapi cabaran untuk melancarkan EXE daripada penimbal memori tanpa perlu untuk pembuatan fail. Artikel ini membincangkan penyelesaian kepada masalah biasa ini, menggunakan fungsi CreateProcess dan teknik yang diperoleh daripada penyelidikan akademik.
Windows menyediakan fungsi CreateProcess, yang membolehkan penciptaan proses baharu. Bendera CREATE_SUSPENDED membenarkan penggantungan proses sehingga disambung semula secara jelas. Penggantungan ini memberikan masa yang diperlukan untuk memanipulasi konteks proses.
Fungsi GetThreadContext mendapatkan semula konteks utas yang digantung, dengan EBX mengandungi penunjuk kepada struktur Blok Persekitaran Proses (PEB). ImageBaseAddress, yang penting untuk mencari alamat asas proses, disimpan pada offset 8 dalam PEB.
Setelah alamat asas proses yang digantung ditentukan, EXE dalam memori boleh dimuatkan. Jika alamat asas EXE dalam memori dan proses yang digantung diselaraskan dan saiz EXE dalam memori adalah kurang daripada atau sama dengan proses yang digantung, WriteProcessMemory boleh digunakan untuk menulis ganti terus ruang memori proses yang digantung itu.
Walau bagaimanapun, langkah tambahan diperlukan apabila syarat yang dinyatakan di atas tidak dipenuhi. Fungsi ZwUnmapViewOfSection menyahpetakan imej asal, manakala VirtualAllocEx memperuntukkan memori yang mencukupi dalam ruang memori proses yang digantung. EXE dalam memori kemudiannya ditulis ke ruang yang diperuntukkan ini menggunakan WriteProcessMemory.
Seterusnya, BaseAddress EXE dalam memori ditampal ke dalam PEB->ImageBaseAddress bagi proses yang digantung. Alamat EntryPoint bagi proses yang digantung ditulis semula dengan titik masuk EXE dalam memori, menggunakan daftar EAX bagi konteks benang. Fungsi SetThreadContext menyimpan konteks benang yang diubah, dan akhirnya, ResumeThread melaksanakan proses yang ditampal.
Melalui proses yang terperinci ini, pembangun boleh memintas keperluan untuk menulis EXE ke fail dan melancarkannya dengan lancar daripada penimbal memori, memastikan pengedaran kemas kini dan tampalan yang cekap dan selamat.
Atas ialah kandungan terperinci Bagaimana untuk Melancarkan EXE dari Memory Buffer Tanpa Menulis ke Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!