Cegah penggunaan perangkat lunak DeDe untuk mendekompilasi program delphi
Berikut adalah artikel untuk mencegah penggunaan perangkat lunak DeDe untuk mendekompilasi program delphi ~
Yang di "" adalah anotasi saya, dan sisanya adalah kreasi asli~
Program Proyek1;
Kegunaan
Formulir,
jendela,
sysutils,
Unit1 Di 'Unit1.pas' {Form1},
Unit2 Di 'Unit2.pas' {Form2};
Fungsi RegisterServiceProcess(dwProcessId, dwType: dWord): Integer;
Eksternal 'kernel32.dll'
{$R *.RES}
Var
HMUTEX: HWND;
BALIK: BULAT;
hCurrentWindow: HWnd; //Dekompilasi diperlukan
szText: Array[0..254] Of char; //diperlukan untuk dekompilasi
Mulai
aplikasi.Inisialisasi;
APPLICATION.TITLE := 'desain koleksi bunga matahari delphi: Zhang Guopeng';
RegisterServiceProcess(GetCurrentProcessID, 1); //Biarkan program menghilang di Ctl+Alt+Del.
"Kita dapat melihat bahwa penulis menggunakan RegisterServiceProcess untuk mendaftarkan program tersebut sebagai program layanan WINDOWS~"
"Tetapi semua orang tahu bahwa fungsi ini disertakan dalam kernel32 dan hanya berfungsi di 98/ME~"
"Jadi jangan menganggap ini sebagai kunci dekompilasi, bisa dikatakan bisa diabaikan~"
//Mencegah dekompilasi dimulai
hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);
"Dari penjelasan di atas, saya tahu bahwa penulis ingin mengetahui apakah jendela programnya adalah jendela tingkat atas."
Sementara hCurrentWindow <> 0 Lakukan
Mulai
Jika GetWindowText(hCurrentWindow, @szText, 255) > 0 Lalu
Jika pos('DeDe', StrPas(@szText)) <> 0 Lalu
"Jika tidak, dapatkan judul formulir desktop saat ini dan tentukan apakah itu" DeDe ""
Mulai
APPLICATION.MESSAGEBOX('Ingin mendekompilasi saya? Tidak semudah itu!',
'Haha...kalian! ', mb_ok);
//closewindow(hCurrentWindow);//Meminimalkan jendela program
aktifkan jendela(hCurrentWindow, salah);
//Buat jendela program tidak aktif. Jika Anda bisa mendapatkan nomor ID thread program, Anda dapat membuat program tidak dapat digunakan dan tidak dapat ditutup.
"Dua kalimat di atas adalah pengobatan DEDE~"
"closewindow: Untuk meminimalkan jendela yang ditentukan, tetapi jendela tersebut tidak akan dihapus dari memori~"
"Enablewindow: Izinkan/nonaktifkan input mouse dan keyboard di jendela yang ditentukan, false pasti tidak akan berfungsi~"
berhenti;
Akhir;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
Akhir;
//Mencegah dekompilasi agar tidak berakhir
//Mencegah program berjalan dua kali
HMUTEX := CREATEMUTEX(Nil, FALSE, 'Desain Koleksi Bunga Matahari delphi: Zhang Guopeng');
RET := GETLASTERROR;
Jika RET <> ERROR_ALREADY_EXISTS Lalu
Mulai
Aplikasi.CreateForm(TForm1, Form1);
// Aplikasi.CreateForm(TForm2, Form2);
Aplikasi.Jalankan;
Akhir
Kalau tidak
APPLICATION.MESSAGEBOX('Program telah dijalankan!', 'Prompt', mb_ok);
rilismutex(hmutex);
Akhir.