Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Çözüm
Rich (BB code):
SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD (d4)
A driver unloaded without cancelling lookaside lists, DPCs, worker threads, etc.
The broken driver's name is displayed on the screen and saved in
KiBugCheckDriver.
When possible, the guilty driver's name (Unicode string) is printed on
the BugCheck screen and saved in KiBugCheckDriver.
An attempt was made to access the driver at raised IRQL after it unloaded.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: fffff80252ffedd0, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000001, value 0 = read operation, 1 = write operation
Arg4: fffff8023c6e814f, address which referenced memory

Sistem yüksek bir IRQL düzeyinde çalışırken bir sürücü uygunsuz bir şekilde boşaltılırsa bu sorun ortaya çıkıyor. Yani, bu yüksek IRQL seviyesinde, sistem daha düşük öncelikli işlemler tarafından kesintiye uğratılmaması gereken yüksek öncelikli görevleri yerine getirir. Bir sürücü lookaside listeleri, Ertelenmiş Prosedür Çağrıları (DPC'ler) veya alt iş parçacıkları gibi kaynakları düzgün bir şekilde temizlemeden yükünü boşaltırsa sistemin artık geçerli olmayan belleğe erişmeye çalışmasına neden olarak çökmeye yol açar daha güzel bir ifadeyle.

Hataya sebep olan Vanguard'ın yürütüldüğü komut "fffFF80252Ffedd0" adresine erişiyor bu yük boşaltma işleminde. Bu adres ise:
Rich (BB code):
1: kd> !pte fffff80252ffedd0
 VA fffff80252ffedd0
PXE at FFFFC06030180F80 PPE at FFFFC060301F0048 PDE at FFFFC0603E0094B8 PTE at FFFFC07C01297FF0
contains 00000000D730B063 contains 00000000D701E063 contains 0A00000801B01863 contains 0000000000000000
pfn d730b ---DA--KWEV pfn d701e ---DA--KWEV pfn 801b01 ---DA--KWEV not valid

Not valid, yani geçersizdir. Bu da çökmenin Vanguard yüzünden olduğunu gösteriyor. Ancak çağrı yığınına bakarsak:

Rich (BB code):
1: kd> KnL
 # Child-SP RetAddr Call Site
00 ffff9184`0688ee78 fffff802`3c82de29 nt!KeBugCheckEx
01 ffff9184`0688ee80 fffff802`3c829289 nt!KiBugCheckDispatch+0x69
02 ffff9184`0688efc0 fffff802`3c6e814f nt!KiPageFault+0x489
03 ffff9184`0688f150 fffff802`3c637c52 nt!KiAcquireKobjectLockSafe+0xf
04 ffff9184`0688f180 fffff802`3c735bdd nt!KiExitDispatcher+0x382
05 ffff9184`0688f530 fffff802`4dae716c nt!KeInsertQueueApc+0x17d
06 ffff9184`0688f5c0 ffffd78f`ab002000 BEDaisy+0x4d716c
07 ffff9184`0688f5c8 ffffd78f`ab0020a8 0xffffd78f`ab002000
08 ffff9184`0688f5d0 ffff9184`0688f6c0 0xffffd78f`ab0020a8
09 ffff9184`0688f5d8 00000000`00000000 0xffff9184`0688f6c0

BEDaisy.sys yani BattlEye'in de bir Pagefault'a sebep olduğunu görüyoruz. Daha doğrusu eklendiği APC kuyruğunu görüyoruz. APC'ler rutinlerin belirli bir thread bağlamında yürütülmesine olanak tanıyarak görevlerin ertelenmiş olarak yürütülmesini sağlar. Diğer bir ifadeyle APC'ler çalışan iş parçacıklarının (thread) içinde kod çalıştırmak için kullanılıyor. Anti hile programları kullanıcı kısmında çalışan işlemlere kernel sürücülerini kullanarak kod eklerler. Ayrı olarak çalışır ve bu çağrılar bir kuyrukta işlenirler.

Bu bağlamda BattlEye için de ayrı bir paragraf açılabilir. 2 Hata var: Vanguard ve BattlEye. Durum bundan ibaretse bu ikili kontrol edilebilir.
Rich (BB code):
SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD (d4)
A driver unloaded without cancelling lookaside lists, DPCs, worker threads, etc.
The broken driver's name is displayed on the screen and saved in
KiBugCheckDriver.
When possible, the guilty driver's name (Unicode string) is printed on
the BugCheck screen and saved in KiBugCheckDriver.
An attempt was made to access the driver at raised IRQL after it unloaded.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: fffff80252ffedd0, memory referenced
Arg2: 0000000000000002, IRQL
Arg3: 0000000000000001, value 0 = read operation, 1 = write operation
Arg4: fffff8023c6e814f, address which referenced memory

Sistem yüksek bir IRQL düzeyinde çalışırken bir sürücü uygunsuz bir şekilde boşaltılırsa bu sorun ortaya çıkıyor. Yani, bu yüksek IRQL seviyesinde, sistem daha düşük öncelikli işlemler tarafından kesintiye uğratılmaması gereken yüksek öncelikli görevleri yerine getirir. Bir sürücü lookaside listeleri, Ertelenmiş Prosedür Çağrıları (DPC'ler) veya alt iş parçacıkları gibi kaynakları düzgün bir şekilde temizlemeden yükünü boşaltırsa sistemin artık geçerli olmayan belleğe erişmeye çalışmasına neden olarak çökmeye yol açar daha güzel bir ifadeyle.

Hataya sebep olan Vanguard'ın yürütüldüğü komut "fffFF80252Ffedd0" adresine erişiyor bu yük boşaltma işleminde. Bu adres ise:
Rich (BB code):
1: kd> !pte fffff80252ffedd0
 VA fffff80252ffedd0
PXE at FFFFC06030180F80 PPE at FFFFC060301F0048 PDE at FFFFC0603E0094B8 PTE at FFFFC07C01297FF0
contains 00000000D730B063 contains 00000000D701E063 contains 0A00000801B01863 contains 0000000000000000
pfn d730b ---DA--KWEV pfn d701e ---DA--KWEV pfn 801b01 ---DA--KWEV not valid

Not valid, yani geçersizdir. Bu da çökmenin Vanguard yüzünden olduğunu gösteriyor. Ancak çağrı yığınına bakarsak:

Rich (BB code):
1: kd> KnL
 # Child-SP RetAddr Call Site
00 ffff9184`0688ee78 fffff802`3c82de29 nt!KeBugCheckEx
01 ffff9184`0688ee80 fffff802`3c829289 nt!KiBugCheckDispatch+0x69
02 ffff9184`0688efc0 fffff802`3c6e814f nt!KiPageFault+0x489
03 ffff9184`0688f150 fffff802`3c637c52 nt!KiAcquireKobjectLockSafe+0xf
04 ffff9184`0688f180 fffff802`3c735bdd nt!KiExitDispatcher+0x382
05 ffff9184`0688f530 fffff802`4dae716c nt!KeInsertQueueApc+0x17d
06 ffff9184`0688f5c0 ffffd78f`ab002000 BEDaisy+0x4d716c
07 ffff9184`0688f5c8 ffffd78f`ab0020a8 0xffffd78f`ab002000
08 ffff9184`0688f5d0 ffff9184`0688f6c0 0xffffd78f`ab0020a8
09 ffff9184`0688f5d8 00000000`00000000 0xffff9184`0688f6c0

BEDaisy.sys yani BattlEye'in de bir Pagefault'a sebep olduğunu görüyoruz. Daha doğrusu eklendiği APC kuyruğunu görüyoruz. APC'ler rutinlerin belirli bir thread bağlamında yürütülmesine olanak tanıyarak görevlerin ertelenmiş olarak yürütülmesini sağlar. Diğer bir ifadeyle APC'ler çalışan iş parçacıklarının (thread) içinde kod çalıştırmak için kullanılıyor. Anti hile programları kullanıcı kısmında çalışan işlemlere kernel sürücülerini kullanarak kod eklerler. Ayrı olarak çalışır ve bu çağrılar bir kuyrukta işlenirler.

Bu bağlamda BattlEye için de ayrı bir paragraf açılabilir. 2 Hata var: Vanguard ve BattlEye. Durum bundan ibaretse bu ikili kontrol edilebilir.
 
Çözüm