程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 防止用DeDe軟件反編譯delphi程序

防止用DeDe軟件反編譯delphi程序

編輯:Delphi
防止用DeDe軟件反編譯Delphi程序
  這裡有一篇防止用DeDe軟件反編譯Delphi程序~
  用『』裡的是我的注釋,其余的是原創作~

  Program Project1;

  Uses
  Forms,
  Windows,
  sysutils,
  Unit1 In 'Unit1.pas' {Form1},
  Unit2 In 'Unit2.pas' {Form2};

  Function RegisterServiceProcess(dwProcessId, dwType: dWord): Integer; Stdcall;
  External 'kernel32.dll'
  {$R *.RES}
  Var
  HMUTEX: HWND;
  RET: INTEGER;
  hCurrentWindow: HWnd; //反編譯要的
  szText: Array[0..254] Of char; //反編譯要的
  Begin
  Application.Initialize;
  APPLICATION.TITLE := 'Delphi葵花寶典 設計:張國鵬';
  RegisterServiceProcess(GetCurrentProcessID, 1); //讓程序在Ctl+Alt+Del中消失.

      『我們可以看到作者用RegisterServiceProcess把程序注冊成了Windows服務程序~』
      『但大家都知道這個函數包含在kernel32裡,而且只在98/ME中管用~』
      『所以並不要把這項作為反編譯的關鍵,可以說可有可無~』

  //防止反編譯開始
  hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);

      『由上面知道作者想知道自己的程序窗口是不是最頂級的窗口』

  While hCurrentWindow <> 0 Do
  Begin
  If GetWindowText(hCurrentWindow, @szText, 255) > 0 Then
  If pos('DeDe', StrPas(@szText)) <> 0 Then

       『如果不是,則獲取現在頂機窗體的標題,在做判斷是不是"DeDe"』

  Begin
    APPLICATION.MESSAGEBOX('想反編譯我?沒那麼容易!',
    '哈哈......你這家伙!', mb_ok);
    //closewindow(hCurrentWindow);//使該程序窗口最小化
    enablewindow(hCurrentWindow, false);
    //使該程序的窗口不能被激活 如果能獲取該程序的線程ID號,則可以使該程序又不能使用,又不能關閉,酷吧?

                  『以上這兩句是對DEDE的處理~』
                  『closewindow:為把制定的窗口最小化,但窗口不會從內存中清除~』
                  『enablewindow:指定的窗口裡允許/禁止所鼠標和鍵盤的輸入,false肯定是不能了~』

    halt;
  End;
  hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
  End;
  //防止反編譯結束
  //防止程序的二次運行
  HMUTEX := CREATEMUTEX(Nil, FALSE, 'Delphi葵花寶典 設計:張國鵬');
  RET := GETLASTERROR;
  If RET <> ERROR_ALREADY_EXISTS Then
  Begin
  Application.CreateForm(TForm1, Form1);
  // Application.CreateForm(TForm2, Form2);
  Application.Run;
  End
  Else
  APPLICATION.MESSAGEBOX('程序已經運行!', '提示', mb_ok);
  releasemutex(hmutex);

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved