Исследование DCU

Discussion in 'WASM.RESEARCH' started by KOPOJIb, May 12, 2007.

  1. Scratch

    Scratch New Member

    Blog Posts:
    0
    Joined:
    Jan 1, 2005
    Messages:
    161
    KOPOJIb
    лежат твои вцль скины и на пролазе и на руборде в сорцах.. Не там ищешь
     
  2. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    да нет, фишка в том что в них скины новые не поддерживаются...
     
  3. OKOB

    OKOB New Member

    Blog Posts:
    0
    Joined:
    Oct 3, 2006
    Messages:
    19
    Не получиться не может :) Смотрим !!!
    Исходник начиная с 1543 строки:
    Code (Text):
    1.   astr:='  ';
    2.  {$IFnDEF demo}
    3.     astr:=' ';
    4.  {$else}
    5.     astr:=' Vclskin Demo';
    6.  {$ENDIF}
    Соответствующий кусок протокола из DCU2INT для конструктора TWinSkinForm.Create уже из WinSkinForm.dcu:
    Code (Text):
    1.   105: _F`    |8D 46 60            | LEA EAX,DWORD PTR [ESI+96]
    2.   108: є@...  |BA(40 01 00 00      | MOV EDX,TWinSkinForm.Create{0x4E9}+320
    3.   10D: и....  |E8(00 00 00 00      | CALL @WStrAsg{0x375}
    4.   112: _F`    |8D 46 60            | LEA EAX,DWORD PTR [ESI+96]
    5.   115: єL...  |BA(4C 01 00 00      | MOV EDX,TWinSkinForm.Create{0x4E9}+332
    И в заключении кусок из IDA:
    Code (Text):
    1. seg000:0000D624                 lea     eax, [esi+60h]
    2. seg000:0000D627                 mov     edx, 140h
    3. seg000:0000D62C                 call    $+5
    4. seg000:0000D631                 lea     eax, [esi+60h]
    5. seg000:0000D634                 mov     edx, 14Ch
    6. seg000:0000D639                 call    $+5
    7. seg000:0000D65B                 dd 4
    8. seg000:0000D65F                 unicode 0, <  >,0
    9. seg000:0000D667                 dd 26
    10. seg000:0000D66B                 unicode 0, < Vclskin Demo>,0
    Я далек от Delphi, мой хлеб VC++, но наверняка и у Борланда есть понятие инкрементная компиляция и сборка. И исходя из этого считая что в DCU ничего не меняется он берет не его, а из каких-то своих предкомпилированных файлов. Удали все кроме своих исходных файлов и пересобери проект, должно взлететь.
    ЗЫ: Посмотри сохранились ли сделанные изменения в DCU.
     
  4. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    гм...а можно пропатченную дкушку в студию?
    просто у меня в ней уже стоит на D635 4Ch, и на D667 1Ah , так что че патчить я не понял(((
     
  5. OKOB

    OKOB New Member

    Blog Posts:
    0
    Joined:
    Oct 3, 2006
    Messages:
    19
    Смотрим пост #17 с коментариями из поста #23
    по смещению D635 40h вместо 4Ch - подмена строки
    было:
    Code (Text):
    1. seg000:0000D627                 mov     edx, 140h
    2. seg000:0000D62C                 call    $+5
    3. seg000:0000D631                 lea     eax, [esi+60h]
    4. seg000:0000D634                 mov     edx, 14Ch
    станет:
    Code (Text):
    1. seg000:0000D627                 mov     edx, 140h
    2. seg000:0000D62C                 call    $+5
    3. seg000:0000D631                 lea     eax, [esi+60h]
    4. seg000:0000D634                 mov     edx, 140h
    что будет соответствовать в исходнике
    Code (Text):
    1.  astr:='  ';
    2.  {$IFnDEF demo}
    3.     astr:=' ';
    4.  {$else}
    5.     astr:='  ';
    6.  {$ENDIF}
    Ссыль на патченый DCU - http://up.spbland.ru/files/070514170/
     
  6. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    спасибо большое, сейчас посмотрю, что выйдет, тока вот боюсь одно - компонент может все равно не прорисовать исходный заголовок, ведь он просто рисует функцией DrawText надпись "vclskin demo". но фиг знает хотелось бы чтобы всё было ок)
     
  7. OKOB

    OKOB New Member

    Blog Posts:
    0
    Joined:
    Oct 3, 2006
    Messages:
    19
    Поиск по исходнику показывает, что astr:="vclskin demo" везде лепится в конец строки
    Code (Text):
    1.     if isunicode then
    2.        ws:= bstr+getformcaption(hwnd)+astr
    3.     else
    4.        ws := StrToWideStr(bstr+getformcaptionA(hwnd)+astr);
    По этому ИМХО должен отсечься только хвост (не силен в Делфях)
     
  8. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    ну вот, так фишка в том, что заголовком служит тока надпись vclskin demo.
    так что хз, ща приду домой - скомпилю, лучше бы всё работало, а то уже башка от олюшки болит.
     
  9. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    снес полностью компонент, все почистил и поставил заново с патченным DCU.
    Нифига тож самое
     
  10. Scratch

    Scratch New Member

    Blog Posts:
    0
    Joined:
    Jan 1, 2005
    Messages:
    161
    h**p://rapidshare.com/files/27915944/VCLSckinPro.4.8.rar
    (c)Prolaz
     
  11. OKOB

    OKOB New Member

    Blog Posts:
    0
    Joined:
    Oct 3, 2006
    Messages:
    19
    KOPOJIb
    Выложи рабочий скомпилированный исполняемый файл. Пропатчу в ИДЕ в тех же местах, что и компонент. Посмотрим, что получится. Там еще есть вероятно покриптованная строка c_demo на которую нет ссылок в компоненте.
     
  12. KOPOJIb

    KOPOJIb New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    64
    Scratch
    Спасибо!! Классно!
    OKOB
    я постараюсь выложить, когда дома буду!