|
You last visited: Today at 18:02
Advertisement
[C++] Bluescreen bei dieser Funktion !
Discussion on [C++] Bluescreen bei dieser Funktion ! within the C/C++ forum part of the Coders Den category.
07/17/2011, 13:23
|
#1
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
[C++] Bluescreen bei dieser Funktion !
Also Leute ich habe ein wenig MSDN durchstöbert und kam während dessen auf die Idee ein Programm zu schreiben , dass nicht gekillt werden kann
also schrieb ich diese Funktion :
Code:
#include <windows.h>
#include <iostream>
using namespace std;
typedef VOID ( _stdcall *RtlSetProcessIsCritical ) (
IN BOOLEAN NewValue,
OUT PBOOLEAN OldValue, // (optional)
IN BOOLEAN IsWinlogon );
BOOL EnablePriv(LPSTR Privs)
{
//Modifying our privs'
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tkprivs;
ZeroMemory(&tkprivs,sizeof(tkprivs));
//Could not open token to modify Privilegs
if(!OpenProcessToken(GetCurrentProcess(),(TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY),&hToken))
return FALSE;
//Could not lookup Values
if(!LookupPrivilegeValue(NULL,Privs,&luid))
return FALSE;
//Configuring the Privs'
tkprivs.PrivilegeCount=1;
tkprivs.Privileges[0].Luid=luid;
tkprivs.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
BOOL bRet=AdjustTokenPrivileges(hToken,FALSE,&tkprivs,sizeof(tkprivs),NULL,NULL);
CloseHandle(hToken);
return bRet;
}
//by F1l73R
bool ProtectProcess(){
HANDLE hDLL;
RtlSetProcessIsCritical fSetCritical;
hDLL=LoadLibraryA("ntdll.dll");
//Could not load DLL
if(hDLL==NULL)
return false;
//SUCCESSFULLY loadet DLL
else{
if(EnablePriv(SE_DEBUG_NAME)==TRUE)
{
(fSetCritical)=(RtlSetProcessIsCritical)
GetProcAddress((HINSTANCE)hDLL,"RtlSetProcessIsCritical");
if(!fSetCritical)
return false;
fSetCritical(1,0,0);
return true;
}
else
return FALSE;
}
}
int main()
{
if(ProtectProcess()==FALSE)
cerr<<"Something went wrong!\n";
else
cout<<"Everything worked!\n";
for(;;){
}
return 0;
}
Wenn ich jetzt aber zu meinem Task Manager gehe und diesen Prozess beenden will bekomme ich einen Bluescreen(habe mir leider die Fehlermeldung nicht gemerkt).
Warum ?
|
|
|
07/17/2011, 16:05
|
#2
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
ist doch klar, weil der prozess kritisch ist und windows nicht damit klar kommt, wenn du so etwas beenden willst.
ist btw. auch eine total bescheuerte idee, wenn man einen prozess schützen will, hookt man einfach OpenProcess und blockt den zugriff.
|
|
|
07/17/2011, 17:22
|
#3
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
schön und gut aber wenn ich andere kritische Prozesse beende kommt , dass man diese nicht beenden kann und kein BSOD aber okay dann versuchs ich mit einem hook von OpenProcess .
|
|
|
07/17/2011, 17:47
|
#4
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
entweder in jedem prozess oder im kernelmode, versteht sich ;O
im eigenen prozess bringt das nicht viel.
naja, das ist bei systemprozessen der fall, ich weiß nicht, ob das bei jedem kritischen prozess so gehandhabt wird. vielleicht läuft auch beim setzen des flags irgendwas falsch, sodass bei der überprüfung dann ein bsod wegen irgendwelchen fehlern mit den flags entsteht.
jedenfalls könnte jeder andere prozess deinem diesen status auch wieder wegnehmen oder sich selbst systemrechte geben und ihn beenden, also bringt es wirklich nur durch einen kernelweiten hook wirklich etwas (und selbst den kann man umgehen )
|
|
|
07/17/2011, 17:54
|
#5
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
Okay ich danke dir werde mich mal genauer mit Hooks befassen !
Edit: Könntest du mir irgendwelche Seiten empfehlen ?
|
|
|
07/17/2011, 20:17
|
#6
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
meinst du kernelmode hooks?
|
|
|
07/17/2011, 22:28
|
#7
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
Ja das wäre echt nett
|
|
|
07/17/2011, 22:37
|
#8
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
|
|
|
07/18/2011, 13:39
|
#9
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
Gut ich versuchs mit den Detours sollte ich Version 1.5 oder 2.1 benutzen. Ich frage , da ich bei Version 2.1 Probleme mit dem Build der Library habe ..
|
|
|
07/18/2011, 13:46
|
#10
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
geht beides, aber eigentlich sollte es bei 2.1 keine probleme geben.
|
|
|
07/18/2011, 15:05
|
#11
|
elite*gold: 0
Join Date: Jul 2009
Posts: 103
Received Thanks: 87
|
Gut hab's hinbekommen (es gab komplikationen mit der VC++ 2010 Command Prompt und nmake) und danke für dein Tutorial zu den Detours sehr informativ ;-)
|
|
|
07/21/2011, 02:42
|
#12
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
|
Quote:
Originally Posted by cooler7878
Gut ich versuchs mit den Detours sollte ich Version 1.5 oder 2.1 benutzen. Ich frage , da ich bei Version 2.1 Probleme mit dem Build der Library habe ..
|
Eindeutig 1.5, bei 2.1 kriegt man doch das kotzen ;>
|
|
|
|
Similar Threads
|
Hilfe bei Send Funktion mit Stop Funktion
04/02/2011 - AutoIt - 11 Replies
Hallo Elitepvpers
ich habe ein Problem und Mein Problem ist das mein Text einfach weiter schreibt wenn ich mit HotKey verwende... gib es keine Funktion das der Text einmal kommt und nicht wenn man einmal die HotKey das er 10 min das selbe schreibt :confused:
|
BlueScreen
10/28/2010 - Technical Support - 4 Replies
Moin,
mein Kumpel hat seinen Laptop mit.
Nach dem booten bekommt er jedes mal einen Bluescreen. OS ist Vista.
STOP: 0x000000F4 (0x00000003, 0x9437E6A8, 0x9437E7F4, 0x82873710)
Kann man noch was dagegen tun? Wir wollen nicht formatieren, das würde zu lange dauern, er muss bald wieder los. Wir wollen nur mal zocken.
|
BlueScreen
10/10/2010 - WarRock - 11 Replies
Hi,
immer wenn ich warrock zocke so 1-3 stunden kommt irgendwan blue screen und ich muss dann immer pc aus/an machen an was liegt das BlueScreen
|
[C++]Funktion einer Klasse in einer anderen Funktion der Klasse verwenden, aber wie?
07/25/2010 - C/C++ - 3 Replies
Mein Problem ist eigentlich recht simpel und die Lösung wahrscheinlich auch.
Da ich bisher fast 0 mit Klassen am Hut hatte, wollte ich mich doch mit dem Thema anfreunden und hatte gleich angefangen:
int test::Funktion2()
{
int temp;
cin>>temp;
return temp;
}
|
Win 7 to XP, bluescreen?
05/08/2010 - Technical Support - 10 Replies
Hi Leute
ich hab noch meien alte Windows XP CD, und einen rechner, den ich mit vorinstalliertem Win 7 gekauft habe.
Ihc möchte wieder zu XP umsteigen , aber ich schaff das irgendwie nicht.
Ich shciebe erstmal die WIn 7 Recovery disc rein und formatiere C:\ .
Dann tu ich die XP CD rein und starte dne Pc neu.
|
All times are GMT +2. The time now is 18:02.
|
|