delphi控制元件破解篇----ThemeEngine 2.9.1 (1千字)

看雪資料發表於2015-11-15

第一次嘗試破解delphi控制元件,走了些彎路,
                現將一些心得告訴大家


        delphi控制元件破解篇----ThemeEngine 2.9.1

主頁;http://www.ksdev.com
介紹:一個delphi控制元件,可以使delphi編譯的程式具windows XP介面風格

限制:trial版本生成的delphi程式有NAG窗;delphi啟動時也有NAG窗
工具:delphi,wdasm,IDA,dcucu,ultraedit

說明:以下操作對於ThemeEngine 2.9.1 for delphi5版本


步驟1
    bpl檔案在delphi中相當於dll檔案。delphi啟動時也用loadlibrarya載入
    delphi啟動時出現NAG窗與bpl檔案有關

    用IDA反編譯lib.D5目錄下檔案ThemeEngine5.bpl,利用search功能,查詢NAG窗中的提示語句,以定位

public @Ksthemeforms@initialization$qqrv
|
CODE:0040C058      sub    ds:dword_445108, 1
CODE:0040C05F      jnb    short locret_40C066                //jnb => jmp
CODE:0040C061      call    @Ksthemeversion@ShowVersion2$qqrv  //NAG窗


步驟2
    dcu、pas等檔案儲存了事件程式碼。delphi編譯時將呼叫的dcu、pas等檔案編譯後生成程式。因此編譯後程式出現NAG窗應以dcu檔案為目標(why? 商業軟體沒有提供pas原始碼)。
    用ultraedit開啟lib.D5目錄下額dcu檔案,還是利用NAG窗提示尋找;一番分析後明確NAG窗來自於KsThemeVersion.dcu。

    用DCUCU反編譯

procedure ShowVersion;
begin
000: ?    |55                  | PUSH EBP
001:        |8B EC              | MOV EBP,ESP
...
030: ...  |B8 98 00 00 00      | MOV EAX,ShowVersion{0x20}+$00000098
...
046: ?...  |E8 00 00 00 00      | CALL MessageDlg{0x10} //NAG

為了阻止NAG窗出現,
將    000: ?    |55                  | PUSH EBP
變為  000: ?    |C3                  | RET NEAR

同樣,對於
procedure ShowVersion2;
begin
000: ?    |55                  | PUSH EBP
也是變為
000: ?    |C3                  | RET NEAR

上述修改用ultraedit完成後儲存。

再用delphi編譯、測試一下,OK!

相關文章