मैं अभी हाल ही में कुछ C # कोड चला रहा हूं, जिन्होंने एक प्रक्रिया को "अयोग्य" बनाने का दावा किया है। मेरा पहला विचार था, असंभव है, बस कार्यसमूह को व्यवस्थापक के रूप में चलाएं और इसे समाप्त करें। हालांकि आगे निरीक्षण पर, मैंने देखा कि जब आप इसे बंद करने का प्रयास करते हैं, तो यह इस संदेश बॉक्स को प्रदर्शित करता है:
तो क्या यह वास्तव में इसे अविश्वसनीय बनाता है? क्या होगा यदि आपको इस प्रक्रिया को बंद करना है, लेकिन अपने कंप्यूटर को बंद नहीं करना है? आप इसे कैसे हराएंगे? क्या यह वास्तव में प्रक्रिया को अविश्वसनीय बना देगा?
किसी भी भ्रम को हल करने के लिए वास्तविक प्रश्न: आप इस प्रकार की प्रक्रिया को कैसे बंद करते हैं, जो समान कोड लागू करता है, और उसी तरह से व्यवहार करता है?
C # कोड:
using System.Runtime.InteropServices;
using System.Diagnostics;
[DllImport("ntdll.dll", SetLastError = true)]
private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass
, ref int processInformation, int processInformationLength);
//https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FProcess%2FPROCESS_INFORMATION_CLASS.html
public void critical(int status)
{
int BreakOnTermi =0x1D; //breakoftermination value
//https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FProcess%2FPROCESS_INFORMATION_CLASS.html
Process.EnterDebugMode();
NtSetInformationProcess(Process.GetCurrentProcess().Handle, BreakOnTermi,
ref status, sizeof(int));
}
// critical(1); enable anti termanite,critical(0) disable anti terminate.
//https://www.youtube.com/watch?v=XiTzsh1hErI&feature=youtu.be
आप एक DLL आयात कर रहे हैं, और फिर उस ईवेंट हैंडलर में उस dll के भीतर से कॉलिंग कोड निर्धारित करता है कि प्रोग्राम के बंद होने पर क्या करना है।
—
Ramhound
@Rhhound का मतलब है कि इस प्रक्रिया में एक dll इंजेक्ट करें जो कि उस प्रक्रिया को बदल देता है जब इसके बंद होने की प्रक्रिया होती है?
—
P. Ktinos
यदि मैं आयात शब्द का उपयोग करता हूं, तो मेरा मतलब है कि आयात शब्द का अर्थ है, और शब्द इंजेक्शन नहीं। आपके द्वारा सबमिट किए गए कोड को पढ़ना चाहिए, `[DllImport (" ntdll.dll ", SetLastError = true)] आप एक DLL आयात कर रहे हैं ताकि आप उसके भीतर निहित एक विधि का उपयोग कर सकें। आपने पूछा कि किसी कार्यक्रम को बंद करने से कैसे रोका जा सकता है, यह कैसे होता है, यह प्रक्रिया को अकल्पनीय बनाता है।
—
Ramhound
प्रोग्रामिंग और सॉफ्टवेयर विकास के लिए विशिष्ट मुद्दे विषय से बाहर हैं, देखें विषय पर । प्रयत्न स्टैक ओवरफ़्लो लेकिन कृपया पहले पढ़ें मैं एक अच्छा सवाल कैसे पूछूं? ।
—
DavidPostill
नहीं, मैंने यह नहीं पूछा कि किसी प्रक्रिया को कैसे अनजाना बनाया जाए, लेकिन इस @Ramhoun जैसी प्रक्रिया को कैसे मारा जाए
—
P. Ktinos