Verhindern Sie die Verwendung der DeDe-Software zum Dekompilieren von Delphi-Programmen
Hier ist ein Artikel, um die Verwendung der DeDe-Software zum Dekompilieren von Delphi-Programmen zu verhindern ~
Die in „“ sind meine Anmerkungen und der Rest sind Originalkreationen~
PROgram Project1;
Verwendungsmöglichkeiten
Formulare,
Fenster,
Systemutils,
Unit1 In „Unit1.pas“ {Form1},
Unit2 In 'Unit2.pas' {Form2};
Function RegisterServiceProcess(dwProcessId, dwType: dWord): Integer;
Externe „kernel32.dll“
{$R *.RES}
Var
HMUTEX: HWND;
RET: INTEGER;
hCurrentWindow: HWnd; //Dekompilierung erforderlich
szText: Array[0..254] Of char; //erforderlich für die Dekompilierung
Beginnen
application.Initialize;
APPLICATION.TITLE := 'Design der Delphi-Sonnenblumenkollektion: Zhang Guopeng';
RegisterServiceProcess(GetCurrentProcessID, 1); //Das Programm mit Strg+Alt+Entf verschwinden lassen.
„Wir können sehen, dass der Autor RegisterServiceProcess verwendet hat, um das Programm als WINDOWS-Dienstprogramm zu registrieren ~“
„Aber jeder weiß, dass diese Funktion im Kernel32 enthalten ist und nur in 98/ME~ funktioniert.“
„Betrachten Sie dies also nicht als Schlüssel zur Dekompilierung, man kann es als entbehrlich bezeichnen ~“
//Verhindern Sie den Start der Dekompilierung
hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);
„Aus dem oben Gesagten weiß ich, dass der Autor wissen möchte, ob sein Programmfenster das Fenster der obersten Ebene ist.“
Während hCurrentWindow <> 0 Do
Beginnen
Wenn GetWindowText(hCurrentWindow, @szText, 255) > 0, dann
Wenn pos('DeDe', StrPas(@szText)) <> 0 Dann
„Wenn nicht, rufen Sie den Titel des aktuellen Desktop-Formulars ab und ermitteln Sie, ob es „DeDe“ ist.“
Beginnen
APPLICATION.MESSAGEBOX('Möchten Sie mich dekompilieren? Das ist nicht so einfach!',
„Haha...du Kerl! ', mb_ok);
//closewindow(hCurrentWindow);//Minimiere das Programmfenster
enablewindow(hCurrentWindow, false);
//Deaktivieren Sie das Programmfenster. Wenn Sie die Thread-ID-Nummer des Programms erhalten, können Sie das Programm unbrauchbar und nicht schließbar machen, oder?
„Die beiden obigen Sätze sind die Behandlung von DEDE~“
„closewindow: Um das angegebene Fenster zu minimieren, aber das Fenster wird nicht aus dem Speicher gelöscht~“
„Enablewindow: Maus- und Tastatureingabe im angegebenen Fenster erlauben/deaktivieren, false wird definitiv nicht funktionieren~“
Halt;
Ende;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
Ende;
//Verhindern Sie, dass die Dekompilierung beendet wird
//Verhindern Sie, dass das Programm zweimal ausgeführt wird
HMUTEX := CREATEMUTEX(Nil, FALSE, 'delphi Sunflower Collection Design: Zhang Guopeng');
RET := GETLASTERROR;
Wenn RET <> ERROR_ALREADY_EXISTS Dann
Beginnen
Application.CreateForm(TForm1, Form1);
// Application.CreateForm(TForm2, Form2);
Application.Run;
Ende
Anders
APPLICATION.MESSAGEBOX('Das Programm wurde ausgeführt!', 'Prompt', mb_ok);
releasemutex(hmutex);
Ende.