Можно ли изменить под отладчиком?

Тема в разделе "WASM.RESEARCH", создана пользователем stahh, 18 мар 2006.

  1. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    Господа программеры. Есть комбобокс.Точнее-два.Первый можно изменить в Рестораторе

    object edProfile: TcxComboBox

    Left = 465

    Top = 16

    Width = 148

    Height = 21

    Properties.Alignment.Vert = taBottomJustify

    Properties.DropDownListStyle = lsFixedList

    Style.BorderStyle = ebsFlat

    TabOrder = 1

    второй-неизменяемый

    object edStartURL: TcxComboBox

    Left = 162

    Top = 17

    Width = 257

    Height = 21

    PopupMenu = WebAppSearch.EditorsPopup

    Properties.Alignment.Vert = taBottomJustify

    Style.BorderStyle = ebsFlat

    TabOrder = 0

    В этом боксе три урла, которые используются для поиска.

    Вопрос такой: можно ли как-то разлочить этот комбокс в скомпилированной проге? Под отладчиком.Как можно найти в дизассемблерном листинге свойства и изменить их?

    Исходников нет.Прога на Делфи.
     
  2. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    а послать сообщение enable?
     
  3. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    Найти вызов EnableWindow и изменить пар-ры, как вариант.
     
  4. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    Ну, скажем я вызов найду. А как параметры изменить?Прога не маленькая, и только EnableWin раз 30 вызывается. И можно про параметры поподробней.Какой за каким идет? Или методом тыка.
     
  5. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    The EnableWindow function enables or disables mouse and keyboard input to the specified window or control. When input is disabled, the window does not receive input such as mouse clicks and key presses. When input is enabled, the window receives all input.



    Syntax



    BOOL EnableWindow( HWND hWnd,

    BOOL bEnable

    );

    Parameters



    hWnd

    [in] Handle to the window to be enabled or disabled.

    bEnable

    [in] Specifies whether to enable or disable the window. If this parameter is TRUE, the window is enabled. If the parameter is FALSE, the window is disabled.
     
  6. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    А ноль на единицу поменять в HEX редакторе можно..
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Для исследования программ на Дельфях есть средство под названием DeDe. Можешь прислать мне прогу, у меня есть доп. тулза :)
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Нужно найти, в каком месте программы устанавливается соответствующее свойство комбобокса, если в коде - меняешь 0 на 1. Но по любому надо сначала прогу дизассемблировать. А найти нужное место поможет DeDe.
     
  9. readme

    readme New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2005
    Сообщения:
    271
    Адрес:
    Russia
    нефакт что вобще вызывается EnableWindow

    мож задаётся при создании
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    readme

    Это свойство может быть установлено на уровне дизайна форм, но его тоже можно подправить.
     
  11. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    Бокс прописан в DATA. DeDe эту форму не открывает. Вернее открывает, но этого бокса на ней нету. 0 на 1 я поменять могу. Вот может кто подскажет, где поменять?

    Вот кусок листинга

    005C4B7B . 54 63 78 43 75>ASCII "TcxCustomComboBo"

    005C4B8B . 78 ASCII "x"

    005C4B8C 08 DB 08

    005C4B8D . 07 DB 07

    005C4B8E . 41 43 61 6E 76>ASCII "ACanvas"

    005C4B95 . 09 DB 09

    005C4B96 . 54 63 78 43 61>ASCII "TcxCanvas"

    005C4B9F 00 DB 00

    005C4BA0 . 06 DB 06

    005C4BA1 . 41 49 6E 64 65>ASCII "AIndex"

    005C4BA7 . 07 DB 07

    005C4BA8 . 49 6E 74 65 67>ASCII "Integer"

    005C4BAF 12 DB 12

    005C4BB0 . 05 DB 05

    005C4BB1 . 41 52 65 63 74>ASCII "ARect"

    005C4BB6 . 05 DB 05

    005C4BB7 . 54 52 65 63 74>ASCII "TRect"

    005C4BBC 00 DB 00

    005C4BBD . 06 DB 06

    005C4BBE . 41 53 74 61 74>ASCII "AState"

    005C4BC4 . 0F DB 0F

    005C4BC5 . 54 4F 77 6E 65>ASCII "TOwnerDrawState"

    005C4BD4 00 DB 00



    Так же в Дате есть и свойства, а от каждого идет DD на булеан, где выбирается фалс или тру.Конечно все это потом проверяется в коде.Но в том-то и дело, что в коде я найти это не могу.

    А ловиться только на мемори-ассес

    00403FB9 |. 57 PUSH EDI

    00403FBA |. 89D7 MOV EDI, EDX

    00403FBC |. 8B70 D4 MOV ESI, DWORD PTR DS:[EAX-2C] ; wvs.005C568C

    00403FBF |. 31C9 XOR ECX, ECX

    00403FC1 |. 8A0E MOV CL, BYTE PTR DS:[ESI]

    00403FC3 |. 41 INC ECX

    00403FC4 |. F3:A4 REP MOVS BYTE PTR ES:[EDI], BYTE PTR> //вот здесь

    00403FC6 |. 5F POP EDI ; 0108065C

    00403FC7 |. 5E POP ESI ; 0108065C

    00403FC8 \. C3 RETN

    И где чего тут поменять? Я чота не въеду.

    На EnableWin он не ловится, но можно поставить бряк на него, или на строку, которая в него вбита.

    И может меня не так поняли, но он активен, но его нельзя редактировать.

    На этом боксе, собсно, и стоит защита. Пока он не работает-прога не функциональна.

    crypto

    Прога - 6метров.На сколько кусков порезать? =)

    Чо за тулза?Может выложишь где?Если весчь полезная.
     
  12. HitmaN85

    HitmaN85 New Member

    Публикаций:
    0
    Регистрация:
    6 окт 2005
    Сообщения:
    36
    Сорри за ОФФ



    Моя девушка далека от программирования. Увидев название темы "Можно ли изменить под отладчиком?" спросила: "А кто кому изменять собрался?"
     
  13. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    Берешь свою прогу, запускаешь айс, запускаешь спай, смотришь хэндл своего комба, ставишьбряку на соответствующий месадж в айсе, ловишь бряку и смотриш в каком месте всё это безобразие. Дальше делаешь что тебе надо.
     
  14. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    stahh

    этого бокса на ней нету



    Скорее всего он во время исполнения создается. Прогу сожми РАРом на куски по 2 метра. Шли на crypto2001@hotmail.ru



    Тулза - вещь полезная, но она в процессе доведения до ума...
     
  15. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    CARDINAL

    Вот я тоже так думал.И все это уже проделывал. Но бряк срабатывает в функции, кот. вызывается при любом хандле(окне).Если я ее пропатчу, прога просто падает при первом же вызове.

    Этот бокс-функционал проги. И я думаю, что он создается и устанавливаются свойства при самом запуске.Когда прога проверяет - демо-не демо. Дальше ставится на бокс лок.И его какбы нет.Т.е. его изменение штатными средствами самой проги - не возможно. Пока не будет дописан кусок кода, кот. это дело изменяет. Поэтому после запуска я не могу отследить установку свойств.

    Вот как это сделать на старте. Может поставить бряк на DropDownList ?

    HitmaN85

    Рулезззззззззз! Привет подруге. Я чать со стула не упал.Хорошо у меня кресло =)
     
  16. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    для начала посмотри в ресурсах свой комво икакие у него свойства по умолчанию, найдёшь исправь а потом брякай EnableWindow, у каждогоокна есть свой Caption, ClassName, Style, опирайся на эти параметры
     
  17. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    CARDINAL

    Не, ну я конечно чайник. Но не ламер. Все эти трюки я уже пробовал.На EnableWindow этот бокс не реагирует.Можно поймать на DrawText. Можно на хендл. Но что это даст?Бокс не на основной форме. При любом переключении хендл меняется. Я проверял на SetFocus.Да и еслиб не менялся ?!

    Свойства остаются те же. На панели два бокса. В одном три урла, во втором - скрипты.У второго стиль - DropDown Style=lsFixedList. В Рестораторе меняю на DropDown,- и можно писать в боксе любую фигню. А первый стиля вообще не имеет.В ресурсах. Изменениям не поддается. Даже размер нельзя поменять. Добавления нового свойства вызывает ошибку, типа такого свойства нет.

    Но если я чего не доганяю, то на пальцах покажи.Типа, ставь бряк сюда, потом смотри там, и т.д.

    И если есть в наличии, то покажи кусок кода, где устанавливаются свойства.

    Хоть примерно буду знать, как это выглядит.
     
  18. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Значица, открываешь файл wvs.exe, переходишь на смещение 398DBCh от начал файла, находишь следующие строки



    xor edx, edx

    mov eax, [ebx+2A4h] //edStartURL

    mov ecx, [eax]

    call Dword Ptr [ecx+64h] //SetEnabled



    исправляешь

    xor edx, edx (33h, 0D2h) на mov dl, 1 (0B2h, 1).



    И еще хочу тебя огорчить - это действительно evaluation версия, например, при сохранении файла вызывается чисто MessageBox с этой огорчительной новостью...
     
  19. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Должно сработать, я у себя не пробовал, некогда... Правда там есть еще один подозрительный фрагмент, но надо сначала попробовать мой рецепт.
     
  20. stahh

    stahh New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    11
    Ну во первых у меня по этому смещению вот такое

    00798DBB |. E8 F0C1C6FF CALL wvs.00404FB0

    00798DC0 |. 33D2 XOR EDX, EDX

    00798DC2 |. 8B83 88020000 MOV EAX, DWORD PTR DS:[EBX+288]

    00798DC8 |. 8B08 MOV ECX, DWORD PTR DS:[EAX] ; wvs.00761364

    00798DCA |. FF51 64 CALL NEAR DWORD PTR DS:[ECX+64]



    У тебя билд какой?

    Во вторых такую последовательность я нашел, переправил, но бокс как был нередактируемый,-так и остался.

    Ты лучше весь кусок покажи. Чо там рядом есть? И вот это

    call Dword Ptr [ecx+64h] //SetEnabled

    из Оли или Иды ?