Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Proses Boleh Dicipta Terus Dari Penampan Memori Tanpa Penyimpanan Fail?

Bagaimanakah Proses Boleh Dicipta Terus Dari Penampan Memori Tanpa Penyimpanan Fail?

DDD
DDDasal
2024-11-02 00:12:02734semak imbas

How Can Processes Be Created Directly From Memory Buffers Without File Storage?

Mencipta Proses daripada Penampan Memori

Dalam siaran ini, kami akan meneroka teknik untuk melahirkan proses terus daripada penimbal memori tanpa memerlukan penyimpanan fail. Ini boleh menjadi senario berguna yang melibatkan suntikan kod atau tampalan selamat, seperti dalam cerita belakang yang disediakan.

Pecahan Teknikal

Windows menyediakan API CreateProcess dengan bendera CREATE_SUSPENDED, membenarkan proses digantung sehingga fungsi ResumeThread digunakan. Tetingkap ini memberi peluang untuk memanipulasi memori proses dan konteks sebelum pelaksanaan.

  1. Tangguhkan dan Periksa Proses: Gantung proses menggunakan CreateProcess(CREATE_SUSPENDED) dan dapatkan semula konteks thread yang digantung menggunakan GetThreadContext.
  2. Kenalpasti Alamat Pangkalan: Daftar EBX akan mengandungi penunjuk kepada struktur Proses Enviroment Block (PBE). ImageBaseAddress boleh didapati di offset 8 dalam PBE.
  3. Sediakan EXE Dalam Memori: Jika alamat asas proses yang digantung dan EXE dalam memori sepadan dan dalam memori EXE bersaiz lebih kecil atau sama, tulis terus ke memori proses yang digantung menggunakan WriteProcessMemory.
  4. Magic Diperlukan: Jika syarat dalam langkah 3 tidak dipenuhi, nyahpetakan imej asal ( ZwUnmapViewOfSection), peruntukkan memori menggunakan VirtualAllocEx, dan tulis EXE dalam memori menggunakan WriteProcessMemory.
  5. Tampal PEB dan Konteks Benang: Kemas kini proses yang digantung' ImageBaseAddress dengan alamat asas EXE dalam memori , tampal alamat EntryPoint konteks benang dan simpan konteks yang diubah menggunakan SetThreadContext.
  6. Sambung Pelaksanaan: Sambung semula proses yang digantung menggunakan ResumeThread untuk melaksanakan EXE dalam memori.

Kesimpulan

Dengan mengikuti langkah-langkah ini, adalah mungkin untuk mencipta proses daripada penimbal memori, menawarkan fleksibiliti dalam suntikan kod dan senario penampalan selamat.

Atas ialah kandungan terperinci Bagaimanakah Proses Boleh Dicipta Terus Dari Penampan Memori Tanpa Penyimpanan Fail?. 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