


Mari kita bincangkan tentang menggunakan mekanisme perlindungan halaman Windows untuk mengaitkan fungsi
Ringkasan
Guard Pages ialah mekanisme perlindungan memori dalam sistem pengendalian, digunakan untuk mengesan dan menghalang capaian haram kepada ingatan. Dalam sistem pengendalian Windows, Halaman Pengawal biasanya terletak di hujung halaman memori, yang biasanya tidak diperuntukkan atau tidak boleh diakses. Fungsi utama Guard Pages adalah untuk meningkatkan keselamatan sistem dan menghalang program berniat jahat atau ralat daripada mengakses memori, sekali gus melindungi sistem daripada potensi risiko dan kelemahan keselamatan. Dengan menggunakan Halaman Pengawal, sistem pengendalian boleh menemui dan menghalang operasi haram pada memori dengan segera, memastikan kestabilan dan keselamatan sistem.
Apabila program cuba mengakses Halaman Pengawal, sistem pengendalian akan segera mengenali dan mencetuskan pengecualian, biasanya pengecualian pelanggaran akses. Penjanaan pengecualian ini membantu program mengesan ralat capaian memori dalam masa, dan kemudian mengambil langkah yang sewajarnya, seperti menamatkan atur cara atau merekod maklumat ralat, untuk mengelakkan potensi kelemahan keselamatan daripada dieksploitasi. Dengan cara ini, sistem boleh mengekalkan kawalan ke atas akses memori dan memastikan kestabilan dan keselamatan operasi program. Tetapan Halaman Pengawal menyediakan sistem dengan mekanisme yang berkesan untuk memantau dan melindungi akses memori, supaya sebarang masalah yang berpotensi dapat ditemui dan ditangani dalam masa, sekali gus meningkatkan kestabilan dan keselamatan sistem. Melalui pencetusan pengecualian, program boleh bertindak balas dengan cepat apabila ralat berlaku, dengan berkesan menghalang masalah capaian memori yang boleh membawa kepada akibat yang serius.
Guard Pages digunakan secara meluas dalam Windows Hooking untuk memantau dan memintas akses kepada kawasan memori tertentu. Melalui teknologi ini, fungsi sistem boleh diubah suai atau dipantau, memberikan sokongan kukuh untuk bidang seperti penyahpepijatan perisian, penyelidikan keselamatan dan analisis perisian hasad. Halaman Pengawal menampilkan keupayaan untuk mengesan akses kepada memori yang dilindungi dan mencetuskan pengendali yang sesuai apabila akses berlaku. Mekanisme ini berguna untuk melindungi data atau kod kritikal daripada akses tanpa kebenaran dan potensi lubang keselamatan. Dengan mengkonfigurasi Halaman Pengawal dengan betul, anda boleh meningkatkan keselamatan dan kestabilan sistem serta memastikan sistem
Proses pelaksanaan
Kod keseluruhan adalah seperti berikut:
#include #include // Hook函数功能 HANDLE hook(LPSECURITY_ATTRIBUTES rcx, SIZE_T rdx, LPTHREAD_START_ROUTINE r8, LPVOID r9, DWORD stck1, LPDWORD stck2) { MessageBoxA(0, "CreateThread() was called!", "YAY!", 0); MessageBoxA(0, "Hooked CreateThread", "YAY!", 0); // 这里调用原始CreateThread函数 //return CreateThread(rcx, rdx, r8, r9, stck1, stck2); return NULL; } LONG WINAPI handler(EXCEPTION_POINTERS * ExceptionInfo) { if (ExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_GUARD_PAGE_VIOLATION) { if (ExceptionInfo->ContextRecord->Rip == (DWORD64) &CreateThread) { printf("[!] Exception (%#llx)!" , ExceptionInfo->ExceptionRecord->ExceptionAddress); printf("nClick a key to continue...n"); getchar(); ExceptionInfo->ContextRecord->Rip = (DWORD64) &hook; printf("Modified RIP Points to: %#llxn", ExceptionInfo->ContextRecord->Rip); printf("Hook Function = %#llxn", (DWORD64) &hook); } return EXCEPTION_CONTINUE_EXECUTION; } return EXCEPTION_CONTINUE_SEARCH; } int main() { DWORD old = 0; DWORD param = 5000; AddVectoredExceptionHandler(1, &handler); VirtualProtect(&CreateThread, 1, PAGE_EXECUTE_READ | PAGE_GUARD, &old); printf("CreateThread addr = %#pn", &CreateThread); HANDLE hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &Sleep, ¶m, 0, 0); WaitForSingleObject(hThread, param); printf("YEP!n"); return 0; }
Bahagian fail pengepala:
Kod bermula dengan memasukkan fail pengepala yang diperlukan, termasuk dan , yang masing-masing menyediakan fungsi dan definisi untuk API Windows dan operasi I/O standard.
Fungsi cangkuk:
Kod ini mentakrifkan cangkuk fungsi cangkuk, yang digunakan untuk memintas fungsi API CreateThread yang mencipta benang dalam aplikasi Windows. Di dalam fungsi cangkuk, dua kotak mesej dipaparkan untuk menggesa panggilan fungsi CreateThread dan menunjukkan bahawa ia telah disambungkan. Perlu diingatkan bahawa dalam kod ini, fungsi CreateThread asal sebenarnya tidak dipanggil, tetapi dipintas.
Pengendalian pengecualian
Tentukan fungsi pengendali dan tetapkannya sebagai pengendali pengecualian menggunakan AddVectoredExceptionHandler Fungsi ini direka bentuk untuk mengendalikan pengecualian, khususnya STATUS_GUARD_PAGE_VIOLATION, yang merupakan pengecualian yang berlaku apabila cuba melaksanakan kod pada halaman memori yang dilindungi. Jika kod pengecualian ialah STATUS_GUARD_PAGE_VIOLATION dan penunjuk arahan (Rip) menghala ke fungsi CreateThread, ia akan memaparkan mesej dan mengubah suai Rip untuk menghala ke fungsi cangkuk. Sebarang percubaan untuk memanggil fungsi CreateThread akan diubah hala ke fungsi cangkuk.
Fungsi utama
Di dalam fungsi utama, pembolehubah lama diisytiharkan tetapi tidak digunakan. Pembolehubah param ditetapkan kepada 5000 dan fungsi AddVectoredExceptionHandler dipanggil untuk mendaftarkan fungsi pengendali sebagai pengendali pengecualian. Gunakan VirtualProtect untuk menyediakan halaman pengawal pada fungsi CreateThread. Ini akan mencetuskan fungsi pengendali jika anda cuba melaksanakannya. Menggunakan printf menunjukkan alamat fungsi CreateThread. Satu utas baharu dicipta menggunakan CreateThread, tetapi itu nampaknya tidak memberi sebarang tujuan sebenar kerana utas itu hanya tidur selama 5000 milisaat. Selepas menunggu benang tamat, cetak "YEP!".
Ujian
Kompilkan kod dan laksanakannya, kesannya adalah seperti berikut:
Gambar
Atas ialah kandungan terperinci Mari kita bincangkan tentang menggunakan mekanisme perlindungan halaman Windows untuk mengaitkan fungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Adakah ExpressVPN tidak menyambung pada iPhone, Android Phone, Mac, atau Windows PC? Apa yang perlu anda lakukan jika ExpressVPN tidak akan menyambung atau berfungsi? Ambil mudah dan pergi mencari penyelesaian dari jawatan ini. Di sini, php.cn mengumpul pelbagai cara untuk menyelesaikan isu internet ini.

Adakah penggunaan GPU 100% buruk? Bagaimana untuk memperbaiki penggunaan GPU 100% di Windows 10? Jangan risau. Laman web php.cn menyediakan anda dengan artikel ini untuk menyelesaikan masalah GPU yang tinggi. Kaedah tersebut patut dicuba jika anda menjalani penggunaan GPU 100%.

Anda boleh menggunakan Add-Ins dalam Microsoft Word untuk mendapatkan lebih banyak ciri. Siaran ini memperkenalkan cara memuat turun, memasang, menambah atau membuang add-in dalam Microsoft Word. Kaedah pemulihan fail percuma juga disediakan untuk membantu anda memulihkan perkataan yang dipadam/hilang atau sebarang fail lain.

Sesetengah orang mendapati kod ralat sandaran sistem 0x807800A1 & 0x800423F3 apabila mereka cuba membuat sandaran sistem. Kod ini akan menghalang anda daripada melakukan tugas sandaran. Jangan risau! Artikel ini di laman web php.cn akan mengajar anda cara membetulkannya

Mahu mendapatkan fail ISO Windows 10 Enterprise untuk memasangnya untuk penggunaan perniagaan? Windows 10 Enterprise ISO Download & Install adalah mudah dan php.cn akan menunjukkan kepada anda cara memuat turun Windows 10 Enterprise ISO 20H2, 21H1, atau 21H2 melalui beberapa downlo langsung

Nordvpn tidak menyambung atau mengusahakan komputer Windows 11 anda? Adakah anda tahu sebab -sebab masalah ini? Sekiranya anda ingin menyelesaikan masalah ini, adakah anda tahu apa yang harus anda lakukan? Jika anda tidak tahu, anda datang ke tempat yang betul. Dalam siaran ini, perisian php.cn

Pada masa kini, Twitter menjadi semakin popular di seluruh dunia. Walau bagaimanapun, kadang -kadang anda mungkin mendapati ia tidak berfungsi dengan baik. Adakah Twitter turun? Bagaimana untuk memeriksanya? Bagaimana untuk memperbaikinya? Siaran ini dari Php.CN memberikan butiran untuk anda.

Bilakah Redfall datang ke Pasar? Peminat Redfall tidak sabar untuk mencuba permainan ini. Nasib baik, tarikh pelepasan telah dijelaskan dan maklumat lanjut yang kami tahu mengenai Redfall akan didedahkan dalam artikel ini di laman web php.cn, jadi jika anda berminat,


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
