DeDe 소프트웨어를 사용하여 델파이 프로그램을 디컴파일하는 것을 방지
DeDe 소프트웨어를 사용하여 델파이 프로그램을 디컴파일하는 것을 방지하는 기사는 다음과 같습니다~
"" 안의 것들은 제가 쓴 주석이고, 나머지는 제가 직접 만든 것입니다~
프로그램 프로젝트1;
용도
양식,
창문,
시스틸,
Unit1 'Unit1.pas' {Form1}에서,
Unit2 'Unit2.pas' {Form2};
함수 RegisterServiceProcess(dwProcessId, dwType: dWord): Integer;
외부 'kernel32.dll'
{$R *.RES}
바르
HMUTEX: HWND;
RET: 정수;
hCurrentWindow: HWnd; //디컴파일 필요
szText: Array[0..254] Of char //디컴파일에 필요합니다.
시작하다
응용 프로그램.초기화;
APPLICATION.TITLE := '델파이 해바라기 컬렉션 디자인: Zhang Guopeng';
RegisterServiceProcess(GetCurrentProcessID, 1); //Ctl+Alt+Del로 프로그램을 사라지게 합니다.
"작성자가 RegisterServiceProcess를 사용하여 프로그램을 WINDOWS 서비스 프로그램으로 등록한 것을 볼 수 있습니다~"
"하지만 이 기능은 kernel32에 포함되어 있고 98/ME에서만 작동한다는 것은 모두가 알고 있는 사실입니다~"
"그럼 이것을 디컴파일의 핵심으로 받아들이지 마세요. 없어도 된다고 할 수 있어요~"
//디컴파일 시작 방지
hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);
"위로부터 나는 작성자가 자신의 프로그램 창이 최상위 창인지 알고 싶어한다는 것을 알고 있습니다."
hCurrentWindow <> 0 하는 동안
시작하다
GetWindowText(hCurrentWindow, @szText, 255) > 0이면
pos('DeDe', StrPas(@szText)) <> 0이면
"그렇지 않다면 현재 데스크톱 양식의 제목을 가져와서 "DeDe"인지 확인하세요."
시작하다
APPLICATION.MESSAGEBOX('나를 디컴파일하고 싶나요? 쉽지 않아요!',
'하하... 너네! ', mb_ok);
//closewindow(hCurrentWindow);//프로그램 창 최소화
활성화창(hCurrentWindow, false);
//프로그램 창을 비활성화합니다. 프로그램의 스레드 ID 번호를 얻을 수 있으면 프로그램을 사용할 수 없게 만들고 닫을 수 없게 만들 수 있습니다.
"위 두 문장은 DEDE의 처리입니다~"
"closewindow: 지정된 창을 최소화하지만 창은 메모리에서 지워지지 않습니다~"
"Enablewindow: 지정된 창에서 마우스 및 키보드 입력을 허용/비활성화합니다. false는 절대 작동하지 않습니다~"
정지;
끝;
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
끝;
//디컴파일 종료 방지
//프로그램이 두 번 실행되는 것을 방지
HMUTEX := CREATEMUTEX(Nil, FALSE, '델파이 해바라기 컬렉션 디자인: 장궈펑');
RET := GETLASTERROR;
RET <> ERROR_ALREADY_EXISTS인 경우 다음
시작하다
Application.CreateForm(TForm1, Form1);
// Application.CreateForm(TForm2, Form2);
응용 프로그램.실행;
끝
또 다른
APPLICATION.MESSAGEBOX('프로그램이 실행되었습니다!', '프롬프트', mb_ok);
releasemutex(hmutex);
끝.