Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
nja kijk.. het moet dus echt via code en niet via externe applicaties / drivers (waar bluescreens meestal vandaan komen)wsitedesign schreef op donderdag 11 april 2013 @ 23:45:
Misschien kun je je mosterd hier halen:
http://www.nirsoft.net/utils/start_blue_screen.html
is het niet mogelijk om via code in de NTKernel te komen en daar iets kwa DoBluescreen(bccode) uit te voeren ofzo? (om het simpel te zeggen)?
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸
daar kom in niet in met C#.. but thanks anyways voor je poging
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
MSDN: Forcing a System Crash from the Keyboard (Windows Debuggers)
Geen idee of je dan met een SendKeys bijvoorbeeld de crash kunt forceren (maar ik acht de kans klein; ik verwacht dat er échte toetsaanslagen vereist zijn: hoogstwaarschijnlijk ook de reden waarom die specifieke registry key gebruikt wordt
Daar is geen usermode wrapper voor
[ Voor 81% gewijzigd door RobIII op 12-04-2013 00:27 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Zo kun je ook niet je programma 'hard' laten crashen door bv. een null pointer dereference of een divide by zero waar dat bij bv. C of C++ wel kan.
Oh, en voor een BSOD moet je zelfs iets hebben wat in kernel space draait. Bij Windows betekent dat dus een driver. (zo werkt dat appje van Nirsoft ook IIRC)
[ Voor 19% gewijzigd door Compizfox op 12-04-2013 00:02 ]
Gewoon een heel grote verzameling snoertjes
>You must restart the system for these settings to take effect.RobIII schreef op donderdag 11 april 2013 @ 23:54:
Niet per-se C# specifiek maar:
MSDN: Forcing a System Crash from the Keyboard (Windows Debuggers)
dus tijdens runtime die register waarde toevoegen en daarna op ctrl drukken is ook geen optie..
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
Zou het dus kunnen met unsafe code? like zoals iemand hierboven al zei
null pointer of divide by zero?
ik denk niet dat dat een bluescreen veroorzaakt maar dus gewoon je programma crasht..
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
Nee, maar er lopen hier nogal wat zaken door elkaar denk ik.Themperror schreef op donderdag 11 april 2013 @ 23:56:
[...]
>You must restart the system for these settings to take effect.
dus tijdens runtime die register waarde toevoegen en daarna op ctrl drukken is ook geen optie..
Allereerst zou ik graag weten wat je precies probeert te bereiken en waarom. En waarom je denkt dat "zomaar" vanuit een Ring 3 applicatie voor elkaar te krijgen (let alone .Net). Daar zul je sowieso, expliciet, "support" voor moeten aanzetten. Dat gaat je niet lukken zonder de juiste rechten etc.
Een echte bluescreen kun je alleen forceren door op 0 - 2 zaken uit te spoken. Alle applicaties draaien in in ring 3 dus zelfs een nullpointer of deling door nul en andere fratsen zullen hooguit de applicatie onderuit halen.
Als het zo makkelijk was een bluescreen te forceren waren er heel wat "leuke appjes" in omloop die om de haverklap je PC onderuit haalden. Ik zie de mails al voor me:
Dat gaat je alleen lukken met de daarvoor bedoelde functies (zie mijn eerdere suggestie) waarvoor je, logischerwijs, door wat "hoops" zult moeten om 't voor elkaar te krijgen of in de lagere ringen te komen (waarvoor je een driver zult moeten schrijven, die zult moeten (laten) signen etc. etc.).Wat ik net toch vond: "KlikMij.exe" Hilarisch!Klik gauw 't attachment!
[ Voor 37% gewijzigd door RobIII op 12-04-2013 00:04 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Lees mijn post eensThemperror schreef op donderdag 11 april 2013 @ 23:57:
[...]
Zou het dus kunnen met unsafe code? like zoals iemand hierboven al zei
null pointer of divide by zero?
ik denk niet dat dat een bluescreen veroorzaakt maar dus gewoon je programma crasht..
Met een null pointer dereference of een divide by zero laat je in C# niet eens je app écht crashen. Je krijgt 'maar' een .NET-exception.
En een BSOD creëren vanuit een applicatie kan je sowieso vergeten, dat lukt alleen met een driver.
Gewoon een heel grote verzameling snoertjes
okay.RobIII schreef op donderdag 11 april 2013 @ 23:59:
[...]
Nee, maar er lopen hier nogal wat zaken door elkaar denk ik.
Allereerst zou ik graag weten wat je precies probeert te bereiken en waarom. En waarom je denkt dat "zomaar" vanuit een Ring 3 applicatie voor elkaar te krijgen (let alone .Net). Daar zul je sowieso, expliciet, "support" voor moeten aanzetten. Dat gaat je niet lukken zonder de juiste rechten etc.
Ik heb nog nooit eerder van de term ring 3 gehoord (en lees nu net die wikipedia page voor het eerst)
en waarom ik dit wil, Pure nieuwsgierigheid.
Ik kan wel though Dll's inladen en hooks maken, kan ik niet vanuit zon punt iets aanroepen dat enigsinds zoiets zou kunnen veroorzaken
(note wel, Kwa programming kan ik wel wat, maar ik ben nooit echt diep in het systeem gegaan en dit is dus vooral research)
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
Nee. En als dat al kan mag je 't melden (en als jij 't niet doet doet 'n ander dat wel) bij MS want dan heb je een dik vet probleem gevonden en wordt 't probleem gedicht/gepatched en is je "BSOD applicatie" over 2 weken alsnog nutteloos. Ga eerst maar eens rustig lezen in 't artikel waarnaar ik verwees en hierThemperror schreef op vrijdag 12 april 2013 @ 00:02:
Ik kan wel though Dll's inladen en hooks maken, kan ik niet vanuit zon punt iets aanroepen dat enigsinds zoiets zou kunnen veroorzaken
Zie ook:
http://www.codinghorror.c...user-and-kernel-mode.html
[ Voor 31% gewijzigd door RobIII op 12-04-2013 00:11 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Indien dat zo is dan zeg ik hierbij,
Bedankt voor alle informatie, heb ik weer wat bijgeleerd.
Rig: AMD Ryzen 9950X3D, 96GB DDR5 6000Mhz, MSI Ventus X3 OC RTX5090
Precies wat wsitedesign in "Hoe forceer je een Bluescreen? (C# .net 2.0)" suggesteertStM schreef op vrijdag 12 april 2013 @ 00:10:
De enige mogelijkheid die ik kan bedenken is met een dummy driver die de feitelijke crash veroorzaakt
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Zo hadden vroegere nvidia drivers code waarmee je bijv de safeguards uit kon zetten en als je dan die gpu hard genoeg liet werken (/warm genoeg liet worden) dan kon je na een tijdje een blue screen forceren.
Maar dan moet je dus zoeken of die code nog in de nvidia drivers zit en of je target een nvidia kaart heeft (met exact die drivers).
In principe met een net applicatie heb je :
- Eerst .net die het op moet vangen
- Dan windows die het op moet vangen
- En daarna pas de bsod code
Dan nog produceer je die BSOD in dat geval door een hardware failure, en laat je het systeem niet crashen door de code (wat TS wil leren, neem ik aan)Gomez12 schreef op vrijdag 12 april 2013 @ 00:17:
Zo hadden vroegere nvidia drivers code waarmee je bijv de safeguards uit kon zetten en als je dan die gpu hard genoeg liet werken (/warm genoeg liet worden) dan kon je na een tijdje een blue screen forceren.
Daarnaast kun je zelfs hardwareschade veroorzaken als je daadwerkelijk safeguards in de GPU kunt uitzetten. Ik neem aan dat die bug er wel een keer uit is gehaald, btw
Gewoon een heel grote verzameling snoertjes
Oeps, link niet gecheckedRobIII schreef op vrijdag 12 april 2013 @ 00:11:
[...]
Precies wat wsitedesign in "Hoe forceer je een Bluescreen? (C# .net 2.0)" suggesteert
Maar ik kan me haast niet voorstellen dat SendKeys in de keyboard en muis io driver zijn invoer inject, maar dit juist op een hoger niveau doet in een 1 of andere kernel buffer of input handler. En dan ben je al te ver om gebruik te kunnen maken van die debug optie.
Ik denk dat je dezelfde aanroepen ook wel moet kunnen doen dmv unsafe code in C# en mogelijk in combinatie met de misbruik van wat p/invoke calls, maar ik zou me sterk af gaan vragen of je dat wel moet willenGomez12 schreef op vrijdag 12 april 2013 @ 00:17:
Onmogelijk is een groot woord, maar of je moet ver in de krochten van windows gaan pielen, of je moet met unmanaged code drivers "rare" dingen laten doen.
Zo hadden vroegere nvidia drivers code waarmee je bijv de safeguards uit kon zetten en als je dan die gpu hard genoeg liet werken (/warm genoeg liet worden) dan kon je na een tijdje een blue screen forceren.
Maar dan moet je dus zoeken of die code nog in de nvidia drivers zit en of je target een nvidia kaart heeft (met exact die drivers).
In principe met een net applicatie heb je :
- Eerst .net die het op moet vangen
- Dan windows die het op moet vangen
- En daarna pas de bsod code
Hence mijn editStM schreef op vrijdag 12 april 2013 @ 00:23:
Maar ik kan me haast niet voorstellen dat SendKeys in de keyboard en muis io driver zijn invoer inject, maar dit juist op een hoger niveau doet in een 1 of andere kernel buffer of input handler. En dan ben je al te ver om gebruik te kunnen maken van die debug optie.
Maar nu hebben we nog steeds niet gehoord wat de precieze reden is waarom TS dit überhaupt zou willen doen. Als 't "alleen maar voor research" is dan zou ik mijn research eens beginnen bij 't begin: de eerder aangehaalde artikelen over kernel rings e.d.
[ Voor 22% gewijzigd door RobIII op 12-04-2013 00:28 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
De enige manier in een modern OS is om een kernel-mode driver te schrijven (in C nagenoeg altijd) en daarin iets dergelijks te doen. (Hoewel je volgens mij in unix dan gewoon panic() aan kunt roepen.) Als je dit vanuit userspace weet te doen heb je een keiharde bug te pakken in de kernel of een driver want dat mag nooit kunnen.Themperror schreef op donderdag 11 april 2013 @ 23:57:
[...]
Zou het dus kunnen met unsafe code? like zoals iemand hierboven al zei
null pointer of divide by zero?
ik denk niet dat dat een bluescreen veroorzaakt maar dus gewoon je programma crasht..
[ Voor 5% gewijzigd door CyBeR op 12-04-2013 00:29 ]
All my posts are provided as-is. They come with NO WARRANTY at all.
Bij het killen van het proces csrss.exe komt er automatisch een BSOD tevoorschijn. Dit proces is namelijk zeer belangrijk voor het functioneren van iets (ik dacht de GUI oid).
Meh, lezen is moeilijk. Excuus,
[ Voor 8% gewijzigd door Xanland op 12-04-2013 19:32 ]
RobIII: Ik probeer als ik wil stoppen met mijn auto ook altijd de sigarettenaansteker, de airco, 3 radioknoppen en de binnenverlichting en dan de rem :P
Gewoon een heel grote verzameling snoertjes
DM maar voor de source, k ben nu niet op mijn eigen PC, ik zal zodra ik op mijn eigen PC zit de source doorsturen dan.
Android developer & dürüm-liefhebber
[ Voor 22% gewijzigd door RobIII op 12-04-2013 21:36 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Ik was toen niet thuis en had dus geen toegang tot de source. Nu dus wel, maar het blijkt een VB6 project te zijn.RobIII schreef op vrijdag 12 april 2013 @ 21:35:
Zet gewoon die (relevante) source even online? Hier in 't topic als het even kan en anders op pastebin ofzo? Het zal nooit veel code zijn (en tbh geloof ik er weinig van).
Dan nog, het gebruikt gewoon windows API's dus het zou gewoon moeten werken in C#.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 | Private Declare Function RtlAdjustPrivilege Lib "NTDLL" (ByVal Privilege As Long, ByVal Enable As Boolean, ByVal Client As Boolean, WasEnabled As Long) As Long Private Declare Function NtSetInformationProcess Lib "NTDLL.DLL" (ByVal hProcess As Integer, ByVal ProcessInformationClass As Integer, ByVal ProcessInformation As Long, ByVal ProcessInformationLength As Integer) As Integer Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long) Public Function MakeCritical(Phandle As Long, Value As Boolean) Dim ProcessInfo As Long ProcessInfo = IIf(Value, 29&, 0&) Call RtlAdjustPrivilege(20, True, True, 0) Call NtSetInformationProcess(Phandle, 29, VarPtr(ProcessInfo), Len(ProcessInfo)) End Function Public Sub Bsod() Call MakeCritical(-1, True) Call ExitProcess(0) End Sub  | 
Android developer & dürüm-liefhebber
Dit volstaat:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 | using System; using System.Diagnostics; using System.Runtime.InteropServices; class Program { [DllImport("ntdll")] static extern int NtSetInformationProcess(IntPtr p, int c, ref int i, int l); static void Main() { Process p = Process.GetCurrentProcess(); int e = 1; NtSetInformationProcess(p.Handle, 29, ref e, 4); p.Kill(); } }  | 
Waarom dit werkt (als in: waarom dit daadwerkelijk een BSOD oplevert) is me nog even een raadsel.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Ik gok op legacy...RobIII schreef op vrijdag 12 april 2013 @ 22:18:
Waarom dit werkt (als in: waarom dit daadwerkelijk een BSOD oplevert) is me nog even een raadsel.
Het is sowieso undocumented (en kan dus elk moment veranderen / "opgelost" worden, hoewel 't al sinds (zeker) 2005* "publiek geheim" is). En je moet nog steeds administrator zijn of SeDebugPrivilege hebben (althans: ik krijg op W8 alleen een BSOD als Admin).
* De eerste vermelding die ik zo snel vond, maar het kan er al goed sinds Win95 in zitten
[ Voor 13% gewijzigd door RobIII op 12-04-2013 22:31 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Hmmm, Wikipedia: Visual Basic VB6 Mid 1998, was er toen al een andere versie als win95? (NT family even uitgezonderd)RobIII schreef op vrijdag 12 april 2013 @ 22:22:
[...]
* De eerste vermelding die ik zo snel vond, maar het kan er al goed sinds Win95 in zitten
[ Voor 4% gewijzigd door Gomez12 op 12-04-2013 22:35 ]
Het gaat niet om VB flapdrolGomez12 schreef op vrijdag 12 april 2013 @ 22:35:
[...]
Hmmm, Wikipedia: Visual Basic VB6 Mid 1998, was er toen al een andere versie als win95?
[ Voor 22% gewijzigd door RobIII op 12-04-2013 22:55 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
P/Invoke is toch geen probleem?Themperror schreef op donderdag 11 april 2013 @ 23:53:
[...]
daar kom in niet in met C#.. but thanks anyways voor je poging
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸