Injeksi proses singkatnya adalah menyuntikkan kode ke dalam ruang memori proses yang berjalan.
Windows mengalokasikan ruang memori 4G untuk setiap proses, dan kode dalam ruang 4G ini dapat diakses dan dieksekusi oleh proses ini. "Patching" Perangkat lunak ini sebenarnya adalah injeksi proses.
Ada juga banyak peretas yang menggunakan injeksi proses untuk menyuntikkan kode berbahaya ke dalam proses target untuk serangan.
Metode injeksi proses yang umum digunakan di lingkungan Windows meliputi: createremotethread, apcinject, suspendthread, setWindowhookex, dll.
Selain itu, saya telah belajar metode injeksi yang relatif unik: injeksi refleksi. Injeksi refleksi terutama digunakan untuk menerapkan injeksi melalui operasi pada file PE, dengan tingkat keberhasilan injeksi yang tinggi dan pembelajaran yang paling berharga.
OpneProcess ).VirtualAllocEX ).WriteProcessMemory ).CreateRemoteThread ). Dapatkan alamat fungsi dari LoadLibrary ( GetProcAddress ) dari Kenerl32, dan lewati jalur pustaka dinamis yang ditulis ke proses target ke woadlibrary sebagai parameter.WaitForSingleObejct ), membebaskan memori, dan tutup pegangannya.CreateProcess Mengatur parameter keenam untuk ditangguhkan.QueueUserAPC untuk menambahkan fungsi LoadLibrary sebagai objek APC ke antrian APC utas, dan melewati jalur DLL sebagai parameter. Perhatikan pegangan dan memori membebaskan. Gagasan keseluruhannya adalah untuk mengimplementasikan fungsi loadlibrary yang memuat pustaka dinamis di DLL dan memuat dirinya ke dalam proses target.
Fungsi Loadibrary diimplementasikan dengan memodifikasi file PE:
1. Tulis DLL di ruang aplikasi ruang alamat proses target.
2. Dapatkan alamat fungsi yang memuat sendiri dalam file yang diimplementasikan di DLL, buat utas jarak jauh, dan lewati alamat fungsi di. Fungsi memuat dirinya di DLL juga diimplementasikan dengan cerdik.
setWindowsHookEX . Sistem Operasi Windows, VS2015.
Kedua tes dilewatkan dalam sistem Windows 32-bit dan sistem Windows 64-bit.
.
|-- APCInject(Ring0) // 驱动层的APC注入
|-- APCInject // Ring3层的APC注入
|-- CreateSuspend // 挂起线程注入
|-- InjectByRegister // 注册表注入(未测试)
|-- ReflectDll // 反射注入的Dll
|-- ReflectiveInject // 反射注入
|-- RemoteThread // 远程线程注入
|-- Src // 驱动层的APC注入源码
|-- Dll.dll // 32位测试Dll
|-- Dll64.dll // 64位测试Dll
|-- Process-Inject.sln // 项目启动文件
|-- README.md // 项目说明文件
.
Selamat datang di Tarik Permintaan dan selamat datang untuk meminta masalah.
Saat menafsirkan pekerjaan ini, silakan tandatangani dan bagikan dengan cara yang sama.