ฉันจะกระตุ้นให้ Windows แฮงค์ (หยุด) ได้อย่างไร


180

ฉันต้องการที่จะทดสอบพฤติกรรมอุปกรณ์ในกรณีที่ Windows ยากแฮงค์ / ค้าง (เช่นหน้าจอแช่แข็งไม่มีไฟ LED กระพริบไม่มีปฏิกิริยาต่อปัจจัยการผลิตรวมทั้งCtrl + Alt + Delฯลฯ ) เพื่อให้มีการทดลองมากพอในระยะเวลาอันสั้นฉันต้องเริ่มแฮงเอาท์เหล่านี้โดยทางโปรแกรมหรืออย่างอื่น

ฉันสนใจWindows 10 เป็นพิเศษ แต่วิธีการทำงานสำหรับรุ่นอื่น ๆ นั้นได้รับการชื่นชม

การค้นหาทุกครั้งที่ฉันทำในหัวข้อนี้ไม่น่าแปลกใจที่นำฉันไปสู่การอภิปรายเกี่ยวกับวิธีการกำจัดสถานการณ์เหล่านี้ไม่ได้กระตุ้นพวกเขา ดังนั้นคำถามอาจดูแปลกพอ

ข้อเสนอแนะ: ฉันได้ลองสูตรอาหารหลายอย่างที่เสนอในคำตอบและความคิดเห็น ก่อนอื่นฉันไม่สนใจที่จะเกิดปัญหาที่นำ BSoD (นั่นคือเหตุผลที่ฉันอธิบายการแช่แข็งไม่ใช่ความผิดพลาด)

ฉันต้องยอมรับว่า Windows 10 64- บิตแสดงการต้านทานที่ดีในหลาย ๆ วิธี มันรองรับวิธีการโหลด CPUเกือบทั้งหมด(รวมถึงfork-bomb , loops และอื่น ๆ ) ค่อนข้างดี วิธีการที่ทำให้เกิดข้อผิดพลาดขึ้นทันที (ส่วนใหญ่ของเมธอด NotMyFault hang) ได้รับการจัดการโดยระบบปฏิบัติการที่มีการรีบูตหรือปิดเครื่อง (ซึ่งไม่ใช่สิ่งที่ฉันติดตาม) ผลลัพธ์ที่ดีที่สุดทำได้โดยวิธีการรั่วไหลของหน่วยความจำของNotMyFault - หยุดจริงโดยไม่มีโอกาสรีบูต

ในที่สุดฉันก็ประทับใจกับจำนวนเอกสารของ Microsoft ที่พูดถึงการทำให้ Windows หยุดชะงัก ดูเหมือนว่าพวกเขารู้ส่วนนี้ดีกว่าฝ่ายตรงข้าม (การต่อสู้ค้าง) ;-)


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
DavidPostill

3
มีการคำนวณที่คุณสามารถทำได้โดยใช้เครื่องคิดเลขซึ่งทำให้แกนหลักค้างอยู่บน CPU จนกว่าจะเสร็จสมบูรณ์ บนเครื่อง quad core คุณจะต้องทำอย่างชัดเจนสี่เท่า แต่ฉันทำไม่ได้สำหรับชีวิตของฉันจำสมการคณิตศาสตร์ที่ทำให้เกิด
mickburkejnr

6
@mickburkejnr มันเป็น factorial ของ 100,000 เปลี่ยนเป็น "มุมมองทางวิทยาศาสตร์" พิมพ์ 100000 แล้วกด "n!" สิ่งนี้ใช้ได้ดีกับ Windows รุ่นเก่า ทุกวันนี้คุณจะได้รับคำเตือนว่าการคำนวณนี้อาจใช้เวลานานและคุณสามารถยกเลิกได้
duenni

25
เพียงแค่เริ่มใช้งาน
samazi

5
การติดตั้งการอัปเกรดใช้ได้เสมอสำหรับฉัน
Daniel R Hicks

คำตอบ:


230

บางทีนี่อาจช่วยได้: บังคับให้ระบบขัดข้องจากแป้นพิมพ์

ด้วยแป้นพิมพ์ USB คุณต้องเปิดใช้งานข้อผิดพลาดที่เริ่มต้นด้วยแป้นพิมพ์ในรีจิสทรี ในคีย์รีจิสทรี HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters สร้างค่าชื่อ CrashOnCtrlScroll และตั้งค่าเท่ากับค่า REG_DWORD ของ 0x01

คุณต้องรีสตาร์ทระบบเพื่อให้การตั้งค่าเหล่านี้มีผล

หลังจากสิ่งนี้เสร็จสิ้นความผิดพลาดของแป้นพิมพ์สามารถเริ่มต้นได้โดยใช้ลำดับคีย์ลัดต่อไปนี้: กดปุ่ม CTRL ขวาสุดค้างไว้แล้วกดปุ่ม SCROLL LOCK สองครั้ง

หรือคุณสามารถเริ่มวางระเบิดได้ดูคำถามนี้

นอกจากนี้ยังมีNotMyFault

Notmyfault เป็นเครื่องมือที่คุณสามารถใช้ในการหยุดทำงานแฮงค์และทำให้หน่วยความจำเคอร์เนลรั่วไหลในระบบ Windows ของคุณ มันมีประโยชน์สำหรับการเรียนรู้วิธีการระบุและวินิจฉัยปัญหาเกี่ยวกับไดรเวอร์อุปกรณ์และฮาร์ดแวร์และคุณยังสามารถใช้มันเพื่อสร้างไฟล์ดัมพ์หน้าจอสีน้ำเงินบนระบบที่ทำงานผิดปกติ


9
พยายาม ForkBomb และ NotMyFault หนึ่งในวิธีการรั่วไหลดูเหมือนจะทำสิ่งที่ฉันต้องการ คนอื่นไม่มีประโยชน์เพราะนำไปสู่การรีบูต / ปิดเครื่องไม่หยุด ขอบคุณมาก.
2560

6
CtrlScroll นำเสนอ BSOD ให้คุณ ไม่ว่าระบบจะหยุดการดีบั๊กหรือเพียงแค่ทำการรีบูตขึ้นอยู่กับการตั้งค่าการบู๊ต
grawity

51
Aaannnddd duenni ไม่เคยได้รับอนุญาตใกล้กับคอมพิวเตอร์ของฉัน เคย
corsiKa

25

ดูเหมือนว่าคุณกำลังทดสอบปฏิกิริยาของอุปกรณ์ภายนอกกับระบบปฏิบัติการที่ไม่ตอบสนอง

หากฮาร์ดแวร์ของคุณสามารถเชื่อมต่อกับการติดตั้ง Windows แบบเสมือนจริงคุณสามารถหยุดและเรียกคืนเครื่องเสมือนได้หลายครั้งตามที่คุณต้องการ ติดตั้งระบบปฏิบัติการที่ต้องการในสภาพแวดล้อม VirtualBox (หรือสภาพแวดล้อมการจำลองเสมือนเดสก์ท็อปอื่น ๆ ) เปิดเผยว่ามีการใช้อินเตอร์เฟสฮาร์ดแวร์ใด (USB, Ethernet หรืออะไรก็ตาม) กับ VM

จากนั้นคุณสามารถหยุดชั่วคราวและดำเนินการเครื่องเสมือนต่อได้ตามต้องการ


24

อย่างน้อยภายใต้ Windows รุ่นเก่า (บางปีที่ผ่านมา) ทำงานต่อไปนี้:

ฉันเขียนโปรแกรม C ด้วยการวนซ้ำไม่รู้จบ:

while(1) {}

... จากนั้นฉันให้โปรแกรม "realtime priority" ใน task manager (นอกจากนี้ยังมี API ซึ่งสามารถทำได้)

ในระบบมัลติคอร์ฉันจะต้องทำสิ่งนี้หลายครั้งเพื่อให้ลูปหนึ่งรันบนแต่ละคอร์ ...


39
เพื่อให้ CPU ของคุณร้อนน้อยลงในขณะที่ทำเช่นนั้น: ใส่_mm_pause()จาก#include <immintrin.h>ในลูป นั่นเป็นคำสั่งฮาร์ดแวร์ของ CPU ไม่ใช่การเรียกระบบ "สลีป" ไม่ว่าจะเป็นประเภทใด เท่าที่เกี่ยวข้องกับระบบปฏิบัติการกระบวนการของคุณนั้นแยกไม่ออกจาก SuperPI ความแตกต่างนั้นขึ้นอยู่กับปริมาณการใช้พลังงานของ CPU ในขณะที่ใช้งานลูป
Peter Cordes

5
ฉันไม่แน่ใจว่ามันจะหยุดทำงานส่วนโหมดเคอร์เนลของ windows หรือไม่
CodesInChaos

2
@CodesInChaos: เคอร์เนลเธรดส่วนใหญ่ทำงานในระดับความสำคัญปกติ หนึ่งในนั้นสำหรับซีพียูและเคอร์เนลก็ทำเสร็จแล้วเช่นกัน
Joshua

เทคนิคอื่นที่เกี่ยวข้องกับชุดประกอบ x86 ( STI+ HLT): stackoverflow.com/questions/3747847/…
meklarian

3
@meklarian: CLI; HLTควรจะเป็น สมมุติว่าคุณต้องทำจากโหมดที่ได้รับการยกเว้น ในหลักการมันยังสามารถได้รับการช่วยเหลือจาก NMI หรือคล้ายกัน
Nate Eldredge

10

เคอร์เนลที่แรงที่สุดแฮงค์ (กล่าวคือไม่มีการติดตามเมาส์ ฯลฯ ) คือเมื่อโค้ดเข้าสู่วงวนไม่สิ้นสุดในโหมดเคอร์เนลโดยมีการขัดจังหวะ

เป็นไปได้ที่จะทำสิ่งนี้ได้ด้วยไดรเวอร์อุปกรณ์และดีกว่าคุณสามารถเขียนไดรเวอร์เพื่อให้มันเริ่มและหยุดการแฮงค์ภายใต้การควบคุมของคุณ (สมมติว่าวงวนไม่สิ้นสุดกำลังทดสอบสภาพที่คุณควบคุม

วิธีการเขียนและติดตั้งไดรเวอร์นี้จะเป็นหัวข้อของคำถามอื่นหรือสามคำถาม แต่นั่นเป็นวิธีที่ฉันใช้


9

โปรดตรวจสอบคำถามต่อไปนี้ใน StackOverflow ซึ่งคล้ายกับของคุณ: วิธีทำให้ windows ตรึงเป็นระยะเวลาสั้น ๆ

tl; dr ของมันคือไม่มีทางที่จะทำอย่างน่าเชื่อถือ

แทนที่จะแช่แข็งหรือให้ Windows ค้างไว้บางทีคุณอาจขัดจังหวะการสื่อสารกับอุปกรณ์ของคุณ

ฉันไม่รู้ว่าอุปกรณ์ของคุณคืออะไรและคุณเชื่อมต่ออย่างไร หากเป็นอะแดปเตอร์ USB หรืออีเธอร์เน็ตเช่นคุณสามารถปิดการใช้งานได้ง่ายใน Device Manager หรือถอดปลั๊ก? หากคุณเกิดข้อผิดพลาดอย่างแรงหรือวางระบบคุณอาจสร้างความเสียหายให้กับระบบของคุณในรูปแบบต่างๆดังนั้นโปรดระวังสิ่งที่คุณทำ


1
ฉันจะพิจารณาการตัดการเชื่อมต่อทางกายภาพของอุปกรณ์หากฉันไม่พอใจกับผลลัพธ์ของซอฟต์แวร์ ขอบคุณ
2560

5

เคอร์เนลโหมดดีบักไม่ใช่ตัวเลือกหรือไม่?

ฉันได้ตั้งค่าใน Windows 7 และคำแนะนำที่เชื่อมโยงในคำตอบนี้ระบุ XP หรือใหม่กว่าดังนั้นจึงควรทำงานกับ Windows 10

ฉันตั้งค่าไว้เหนือ FireWire / 1394เนื่องจากเป็นวิธีที่ง่ายที่สุดในความคิดของฉัน แต่คุณสามารถทำได้ผ่านเครือข่ายหรือUSB (และอื่น ๆ )

โดยทั่วไป

ตั้งค่าคอมพิวเตอร์เป้าหมายโดยการรันคำสั่งเหล่านี้ในพร้อมท์ที่ยกระดับ (การเลือกช่องn):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

ซึ่งเหมือนกับแท็บการบู๊ตของmsconfigและเลือกปุ่ม 'ขั้นสูง':

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้น (หลังจากรีบูตคอมพิวเตอร์เป้าหมาย) ให้เรียกใช้ WinDbg บนโฮสต์คอมพิวเตอร์โดยใช้พยานหลักฐานเดียวกันของ WinDbg ของคอมพิวเตอร์เป้าหมาย

จากนั้นเป็นเรื่องของการหยุดเคอร์เนลที่หยุดชั่วคราวเมื่อใดก็ตามที่คุณต้องการจากโฮสต์คอมพิวเตอร์ หากคุณทดสอบอุปกรณ์มีการทำงานแบบอะซิงโครนัสว่าทำงานอยู่สิ่งนี้จะมีประสิทธิภาพเท่ากับวิธีอื่น


วิธีที่น่าสนใจ ต้องการพีซีเครื่องที่สอง แต่จะพยายามเมื่อเป็นไปได้
2560

2

ฉันไม่ทราบว่าสิ่งนี้มีคุณสมบัติเป็นการหยุดการทำงานทั้งหมดหรือไม่เนื่องจากเคอร์เซอร์ของเมาส์ยังคงเคลื่อนไหวบนหน้าจอ แต่ UI ของ Windows 7 UI ไม่ตอบสนองหากคุณมีข้อผิดพลาด I / O ของอุปกรณ์โดยเฉพาะอย่างยิ่ง หนึ่งในฮาร์ดไดรฟ์ของฉันคือการรายงานตัวเองล้มเหลวของไดรฟ์ที่ใกล้เข้ามาทาง SMART และ Windows 7 จะติดตั้ง แต่จะหยุดเมื่อใดก็ตามที่ฉันพยายามเข้าถึงไฟล์บางไฟล์ที่บันทึกไว้ UI จะล็อค (ยกเว้นการเลื่อนเคอร์เซอร์ของเมาส์) นานถึง 5 นาทีจนกว่าจะสามารถอ่านไฟล์หรือยกเลิกการต่อเชื่อมไดรฟ์หลังจากหมดเวลา ฉันไม่ทราบว่า Windows ใช้นาฬิการะบบสำหรับการหมดเวลาหรือไม่ แต่บางทีถ้าคุณหยุดเวลาคุณสามารถยืดระยะเวลาการหมดเวลาได้หรือไม่ อาจจะทำให้คุณได้รับส่วนหนึ่งจากที่นั่น แต่ไม่ใช่คำตอบที่คุณต้องการ 100%


2

ข้อผิดพลาดนี้ค้าง Windows ค่อนข้างเร็วเนื่องจากทรัพยากรหมด ทำซ้ำได้ง่ายเช่นกัน

ตามที่ปรากฎจริง ๆ แล้วนี่เป็นข้อผิดพลาด ในวิธีที่บรรทัดคำสั่ง (เจาะจงมากขึ้นcmd.exe) แยกวิเคราะห์ไฟล์แบตช์และอาจนำไปสู่การปฏิเสธการโจมตีประเภทบริการได้อย่างรวดเร็ว การใส่บรรทัดต่อไปนี้ในไฟล์แบตช์ (โดยไม่มีบรรทัดใหม่) จะใช้หน่วยความจำจำนวนมากอย่างรวดเร็วเนื่องจากข้อบกพร่องนี้ (เป็นตัวอย่าง):

^ nul<^

เรื่องสั้น ๆ สั้น ๆ เมื่อเครื่องหมายรูปหมวกอยู่ท้ายไฟล์จุดสิ้นสุดที่แท้จริงของไฟล์คือ 'ละเว้น' และตัวจัดการไฟล์จะ 'รีเซ็ต' เป็น 0 (เป็นหลัก) เพื่อให้ชุดคำถูกแยกวิเคราะห์อีกครั้ง (ad infinitum)


2

นี่คือซอร์สโค้ดของแอปพลิเคชันที่ฉันใช้ในบทเรียนการดีบัก มันแสดงให้เห็นว่าแอพพลิเคชั่นโหมดผู้ใช้สามารถทำการโจมตีแบบ DoS ได้อย่างไร

คุณจะสังเกตเห็นว่าเคอร์เซอร์ของเมาส์เคลื่อนไหวน้อยมาก (ทุกๆสิบเอ็ดวินาทีบนเครื่องของฉัน) อาจพีซีของคุณจะยังคงตอบสนองต่อปุ่ม Power ถ้าคุณรอนานพอ

มันทำงานโดยใช้การวนซ้ำไม่รู้จบและการตั้งค่าลำดับความสำคัญสูงสุดต่อกระบวนการ ( 0x100"เรียลไทม์") และการตั้งค่าลำดับความสำคัญสูงสุดกับเธรด ( 15"เวลาสำคัญ") มันจะเริ่มจาก 8 ตัวซึ่งเพียงพอสำหรับคอมพิวเตอร์ i7 หากคุณต้องการมากขึ้นปรับวง ส่วนมากของพวกเขาอาจทำให้ช้าลง

#include "stdafx.h"
#include <windows.h>
#include <string>
#include <sstream>
#include <iostream>

void WasteTime()
{
    int priority = 15;
    ::SetThreadPriority(::GetCurrentThread(), priority);
    while (true)
    {
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    ::SetPriorityClass(::GetCurrentProcess(), 0x100);
    for(int i=0; i<7; i++)
    {
        LPDWORD threadid = 0;
        ::CreateThread(NULL, 64*1024, (LPTHREAD_START_ROUTINE)&WasteTime, NULL, 0, threadid);
        ::Sleep(2000);
    }

    WasteTime();

    return 0;
}

ระวังว่าโปรแกรมนี้มีพฤติกรรมที่ไม่ได้กำหนดใน C ++ ดังนั้นภายใต้การตั้งค่าการเพิ่มประสิทธิภาพบางอย่างคอมไพเลอร์สามารถแทนที่สิ่งทั้งหมดด้วยExitProcess(0)
Ben Voigt

@BenVoigt ในกรณีนั้น (เช่นกับg++) หาก-O0ไม่เพียงพออาจจะgcc -Q -O0 --help=optimizers | grep enabled (และปิดการใช้งานการเพิ่มประสิทธิภาพที่รอดชีวิตด้วยมือ) อาจจะแก้ExitProcess(0)ปัญหาได้หรือไม่
Hastur

@BenVoigt: คุณอธิบายได้อย่างละเอียดคุณคิดว่าส่วนไหนของพฤติกรรมที่ไม่ได้กำหนด?
โทมัสเวลเลอร์

@BenVoigt IMHO คอมไพเลอร์เท่านั้นที่สามารถเพิ่มประสิทธิภาพคำสั่งเพราะที่มีอยู่หลังจากที่return 0 while(true)คอมไพเลอร์อาจพบว่านี่เป็นคำสั่งที่ไม่สามารถเข้าถึงได้
โทมัสเวลเลอร์

ภาษา C ++ ต้องการให้ทุกเธรดสร้างความคืบหน้าในที่สุดซึ่งกำหนดไว้ในรูปแบบของพฤติกรรมที่สังเกตได้หลายประเภท เนื่องจากการวนซ้ำไม่สิ้นสุดไม่สามารถติดตามความคืบหน้าคอมไพเลอร์สามารถอนุมานได้ว่ามันไม่ถึงและลบไม่เพียง แต่มัน แต่รหัสทั้งหมดข้างต้นมันกลับไปที่สาขาที่ใกล้ที่สุด
Ben Voigt

0

คุณลองใช้ยูทิลิตี้CPUEaterที่มาพร้อมกับ Process Lasso หรือไม่? ps ฉันไม่ทำงานสำหรับ bitsum


ฉันคิดว่าคุณหมายถึง "คุณเคยลอง" ไม่ใช่ "คุณลองแล้ว" หรือไม่ :)
fabspro

@ fabspro ฉันคิดว่า "คุณลองแล้ว" ถูกต้องเพราะ OP ยอมรับคำตอบอื่นแล้วดังนั้นเหตุการณ์ที่ฉันอ้างถึง ("การแก้ปัญหา") เป็นอดีต แต่อาจมีใครบอกได้ว่าอินเทอร์เน็ตกำลังเกิดขึ้นอยู่เสมอ อย่างไรก็ตามหากคุณแนะนำการแก้ไขฉันยินดีที่จะมอบหมายงานให้ยอมรับการตรวจสอบคิว ที่มา: englishforums.com/English/HaveYouTriedOrDidYouTry/zclxb/…
beppe9000

ฉันเดาว่าถ้าเขาแก้ปัญหาได้แล้วคำถามของคุณอาจเป็นความเห็นในคำตอบของเขา - เช่น "เมื่อคุณทำการค้นคว้าปัญหาของคุณเป็นหนึ่งในสิ่งที่คุณลองใช้ยูทิลิตี้ _______?" บางที ... เพียงแค่แนะนำสิ่งต่าง ๆ :)
fabspro

... touché :)
beppe9000

huehuehuehuehue
fabspro

-2

หากคุณต้องการแขวนพีซีของคุณจริงๆทำให้เครื่องค้างเพียงแค่ใช้ RAM ทั้งหมดและบังคับให้หน่วยความจำหน้า นั่นจะเป็นมากกว่าการแช่แข็งและเพียงแค่โอเวอร์โหลดสิ่งที่คุณไม่สามารถใช้ตัวจัดการงานแม้แต่แป้นพิมพ์ แม้ว่ากระบวนการจะสิ้นสุดลงก็จะใช้เวลานานในการกู้คืนพีซี (มันคือที่สุด!)

ตัวอย่างเช่นคุณสามารถสร้างคลาสที่มีตัวชี้ไปยังตัวเองและในขณะที่ลูปให้สร้างอินสแตนซ์ใหม่ของคลาสนั้นตลอดไปโดยจัดเก็บอินสแตนซ์ใหม่แต่ละรายการในตัวชี้ของอินสแตนซ์ก่อนหน้า อาจเพิ่มคู่หรือเวกเตอร์ลงในชั้นเรียนด้วยเพื่อเพิ่มความจำได้เร็วขึ้น จากนั้นคุณสามารถมีตัวจับเวลาที่ออกจาก while loop และแยกโครงสร้างทุกอย่าง แน่นอนคุณจะต้องรอสักครู่เพื่อให้มันกู้คืน


-4

ฉันอยากจะแนะนำเพียงแค่สร้างไฟล์แบทช์ด้วยรหัสต่อไปนี้:

@echo off
:x
start cmd.exe
start explorer.exe
start calc.exe
start notepad.exe
start iexplorer.exe
start paint.exe
goto x

นี่อาจเป็นวิธีที่ง่ายและปลอดภัยที่สุดในการทำ คุณสามารถแทนที่ชื่อกระบวนการด้วยแอปพลิเคชัน windows ใด ๆ


3
เป็นไปได้มากว่าแรมจะหมดและทำให้ฮาร์ดไดรฟ์ถูกฟาด อาจเป็นไปได้ว่าคอมพิวเตอร์จะยังคงทำงานต่อไปได้โดยเฉพาะอย่างยิ่งเนื่องจากโปรแกรม 4 รายการที่แสดงนั้นมีน้ำหนักเบา ( iexplore.exeและอาจexplorer.exeมีผลกระทบมากขึ้น) ขึ้นอยู่กับข้อกำหนดของคอมพิวเตอร์ของคุณ มันจะฆ่ากระบวนการแฮ็คหน่วยความจำโดยอัตโนมัติ
MoonRunestar

-10
  1. ไปที่ C: \ Windows \ Temp \
  2. กด Ctrl-a เพื่อเลือกทั้งหมด
  3. กด Enter

8
คุณต้องการไอเท็มหลายพันรายการเพื่อให้สิ่งนี้มีประสิทธิภาพ! โฟลเดอร์% TEMP% ของฉันว่างเปล่า ...
AlainD

6
แม้ว่าสิ่งนี้จะเป็นความพยายามที่ถูกต้องตามกฎหมายในการตอบคำถาม แต่ก็ไม่ชัดเจนเลยว่าสิ่งนี้จะส่งผลให้ Windows ล็อคขึ้นตามที่ OP ร้องขอหรือไม่ โปรดแก้ไขคำถามของคุณเพื่ออธิบายว่าทำไมสิ่งนี้ถึงทำในสิ่งที่ OP ต้องการ
ตัวปลอมตัว Twisty

9
ฉันจะรู้สึกเสียใจสำหรับทุกคนที่ลองใช้และไม่ทราบว่าพวกเขาได้รับผลกระทบจากการดาวน์โหลดโดยใช้ซอฟต์แวร์ที่เป็นอันตราย
MoonRunestar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.