Evite o uso do software DeDe para descompilar programas Delphi
Aqui está um artigo para evitar o uso do software DeDe para descompilar programas Delphi ~
Os que estão em "" são anotações minhas e o restante são criações originais~
PROGRAMA PROJETO1;
Usos
Formulários,
Windows,
sysutils,
Unidade1 Em 'Unit1.pas' {Form1},
Unidade2 Em 'Unit2.pas' {Form2};
Função RegisterServiceProcess(dwProcessId, dwType: dWord): Inteiro;
'kernel32.dll' externo
{$R *.RES}
Var
HMUTEX: HWND;
RET: INTEIRO;
hCurrentWindow: HWnd; //Descompilação necessária
szText: Array[0..254] Of char; //requerido para descompilação
Começar
aplicativo.Inicializar;
APPLICATION.TITLE := 'design da coleção de girassol delphi: Zhang Guopeng';
RegisterServiceProcess(GetCurrentProcessID, 1); //Deixa o programa desaparecer em Ctl+Alt+Del.
“Podemos ver que o autor usou RegisterServiceProcess para registrar o programa como um programa de serviço WINDOWS ~”
"Mas todo mundo sabe que esta função está incluída no kernel32 e só funciona em 98/ME~"
“Portanto, não tome isso como a chave para a descompilação, pode-se dizer que é dispensável ~”
//Evita que a descompilação seja iniciada
hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);
"Pelo exposto, sei que o autor deseja saber se a janela do programa é a janela de nível superior."
Enquanto hCurrentWindow <> 0 Faça
Começar
Se GetWindowText(hCurrentWindow, @szText, 255) > 0 Então
Se pos('DeDe', StrPas(@szText)) <> 0 Então
"Caso contrário, obtenha o título do formulário de desktop atual e determine se é "DeDe""
Começar
APPLICATION.MESSAGEBOX('Quer me descompilar? Não é tão fácil!',
'Haha... você cara! ',mb_ok);
//closewindow(hCurrentWindow); //Minimiza a janela do programa
enablewindow(hCurrentWindow, false);
//Desativa a janela do programa Se você conseguir o número de ID do thread do programa, você pode tornar o programa inutilizável e impossível de fechar.
“As duas frases acima são o tratamento de DEDE ~”
"closewindow: Para minimizar a janela especificada, mas a janela não será apagada da memória ~"
"Enablewindow: Permitir/desabilitar a entrada do mouse e do teclado na janela especificada, false definitivamente não funcionará ~"
parar;
Fim;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
Fim;
//Evita que a descompilação termine
//Evita que o programa seja executado duas vezes
HMUTEX := CREATEMUTEX(Nil, FALSE, 'delphi Sunflower Collection Design: Zhang Guopeng');
RET := GETLASTERROR;
Se RET <> ERROR_ALREADY_EXISTS Então
Começar
Application.CreateForm(TForm1, Form1);
//Application.CreateForm(TForm2, Form2);
Aplicativo.Executar;
Fim
Outro
APPLICATION.MESSAGEBOX('O programa foi executado!', 'Prompt', mb_ok);
liberarmutex(hmutex);
Fim.