NUL goto :gelung */"/> NUL goto :gelung */">

Rumah  >  Artikel  >  hujung hadapan web  >  Skrip Windows ini bukan seruan untuk mendapatkan bantuan

Skrip Windows ini bukan seruan untuk mendapatkan bantuan

Susan Sarandon
Susan Sarandonasal
2024-11-09 04:05:02418semak imbas

This Windows script isn

0< /* ::

@echo off

set /a min = 15
set /a max = 45

:loop

CScript //nologo //E:JScript "%~F0" "+{F15}"
set /a rand = (%RANDOM% * (%max% - %min% + 1) / 32768) + %min% + 1
ping -n %rand% -w 1 127.0.0.1 > NUL

goto :loop

*/ 0;

WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));

Ini buat apa?

Luangkan sedikit masa dan lihat jika anda dapat mengetahui apa yang berlaku di sini.

Teruskan. Saya akan menunggu selama 15 hingga 45 saat, dan kemudian menghantar kombinasi kekunci Shift F15.

Kenapa awak buat begitu?

Oleh kerana kekunci F15 wujud tetapi kebanyakan papan kekunci tidak lagi memilikinya, jadi menekan Shift F15 sangat tidak mungkin untuk melakukan apa-apa kecuali bertindak sebagai kombinasi kekunci yang ditekan secara umum, menghalang komputer daripada tidur dalam kebanyakan kes (kecuali beberapa persediaan VDI ).

Ia berfungsi tanpa hak pentadbir dan pada pemasangan Windows vanila, walaupun sesetengah pentadbir melumpuhkan JScript.

Bagaimana f...

0< /* :: ialah pengalihan input daripada fail untuk deskriptor fail 0, yang merupakan kes khas dan merujuk kepada input standard (STDIN). Contohnya, jika anda menjalankan 0< test.txt cari "hello", shell sebenarnya akan menjalankan find "hello" 0

Jadi mengapa tanda /* apabila sebarang rentetan boleh pergi ke sana? Kerana itulah permulaan komen blok javascript/jscript dan penterjemah jscript tidak perlu cuba menghuraikan skrip kelompok antara /* dan */. Tetapi bagaimanakah jurubahasa jskrip melihat sebahagian kod ini? Ia membaca keseluruhan blok dari 0< /* :: hingga */ 0; sebagai: 0 < 0; yang menilai kepada palsu, tetapi itu tidak penting - ia adalah jskrip yang sah dan tidak mempunyai sebarang kesan sampingan dan halangan utama telah dicapai: cara untuk menghuraikan skrip kelompok atau jskrip secara selektif berdasarkan penterjemah yang sedang membaca fail.

Saya akan melangkau mematikan gema, menetapkan pembolehubah dan gelung label, kerana ini adalah konsep yang agak mudah, walaupun fakta yang menyeronokkan - ECMAScript juga mempunyai label.

Baris penting seterusnya ialah CScript //nologo //E:JScript "%~F0" " {F15}", yang menghantar fail .bat ini ke CScript. CScript memulakan skrip dalam persekitaran baris arahan dengan beberapa pilihan enjin skrip (JScript dalam kes ini). WScript adalah serupa tetapi menjalankan skrip dalam GUI Windows dan dalam konteks ini tidak berkaitan sepenuhnya dengan baris terakhir dalam fail kelompok. $~F0 ialah laluan penuh, nama fail dan sambungan fail kelompok yang sedang dijalankan. {F15} ialah Shift dan kekunci F15 untuk SendKeys. Untuk mengulangi, apabila fail kelompok ini dihantar, ia melihat keseluruhan skrip kelompok sebagai hanya 0<0; kemudian menjalankan baris terakhir, yang juga sah JScript.

Satu-satunya perkara menarik tentang set /a rand = (%RANDOM% * (%max% - %min% 1) / 32768) %min% 1 ialah %RANDOM% ialah pembolehubah terbina dalam yang menghasilkan integer dari 0 hingga 32767 (termasuk), menggunakan set /a sentiasa dibundarkan ke bawah, dan 1 terakhir adalah khusus untuk baris berikut; apabila menggunakan tidur atau tamat masa, anda tidak akan menambah 1 tambahan.

Barisan seterusnya, ping -n %rand% -w 1 127.0.0.1 > NUL, ialah cara lama untuk mencipta pemasa yang kurang intensif pemproses berbanding tidur dan tamat masa. Anda pada asasnya ping sendiri %rand% kali dengan 1 saat antara setiap percubaan; 1 dari baris sebelumnya adalah kerana tiada menunggu sebelum ping pertama. > NUL mengubah hala keluaran standard kepada NUL, yang sudah tentu membuangnya sahaja.

Jika skrip ini tidak mempunyai gelung tak terhingga, anda ingin mempunyai goto :eof sebelum */ 0; untuk membuat skrip kelompok anda melangkau baki fail yang bukan skrip yang sah.

Dan akhirnya kami sampai ke penghujung dan JScript sebenar: WScript.CreateObject("WScript.Shell").SendKeys(WScript.Arguments(0));. JScript hampir sama dengan JavaScript 1.5/ECMAScript3 dan mempunyai API WScript yang hampir sama dengan VBScript.

Bungkus

Mungkin jangan lakukan perkara seperti ini. Tetapi mungkin anda mungkin mahu, dan kini sebahagian daripadanya masuk akal.

Atas ialah kandungan terperinci Skrip Windows ini bukan seruan untuk mendapatkan bantuan. 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