1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Как менять что то в Exe-файле ?

Тема в разделе "Другие", создана пользователем Guest_Artur_*, 4 май 2006.

Статус темы:
Закрыта.
  1. Guest_Artur_*

    Guest_Artur_* Гость

    Задачка у меня такая:
    Есть программа в виде exe файла для Win32, в программе кнопочка пассивна, хочу акиивизировать. Как можно это сделать ????
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Найди лучше бесплатную альтернативу тому, что хочешь сломать :blink: надо хотя бы основные вещи понимать в асме и Win32 программировании. Начнешь понимать - не будешь спрашивать. Хочешь поучится - в сети полно материалов по дизассемблированию\крекингу.
    Хотя в твоем случае может оказаться что и простого изменения ресурсов будет достаточно.
     
  3. Guest_Artur_*

    Guest_Artur_* Гость

    Альтернатива тому, что хочу сломать, точно нету (прога написана именно для нас)! Простое изменение ресурсов думаю тоже никак не поможет, эта кнопка не всегда пассивна, толко при некотрых событиях. По моему в коде этих событий было что то вроде
    button.Enable = False
    Вот как получить АСМ код из ехе и на этом коде поменять False и получить обратно ехе, не знаю B) . Пробовал HIEW32 но полученный код совсем на АСМ не похож. Буду благодарен если посоветуете как выкрутится
     
  4. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Ну в таком случае лучше автора искать и исходники. Кнопка - это только вершина айсберга. Почему она блокируется? А может там данные не готовы, и приложение ляжет после нажатия и всю базу положит?
    В общем случае надо нечто вроде http://www.ollydbg.de/, отладкой искать нужное место (а в асме ты такого
    не увидишь B) ), потом править. В принципе, если владеешь любым отладчиком, показывающим асм код, можно попробовать в привычной среде, но спецсредства лучше.
    Если же ты не разработчик - то забудь, или ищи кого-нибудь кто увлекается именно этим
     
  5. Guest_Artur_*

    Guest_Artur_* Гость

    Спасибо за ответы !!!
    Опишу ситуацию:
    Программа-экзаминатор (разработчик не я, и кода мне не достать B) )
    Нажимаю на кнопку №1, идёт запрос к серверу, получаю ответ от сервера то есть экзаменный вопрос с вариантами ответов, активируется кнопка №2 "Ответить !", через некотрое время опять становится пассивным.
    Я вот хочу держать её активным в 10 раз дольше.
    А если от опаздавшего ответа в базе на сервере случится "катастрофа" мне от этого терять нечего
     
  6. zubr

    zubr Гость

    2 варианта:
    1. Тупой и простой вариант: раз кнопка бывает активна, можно попробовать в этот момент определить ее хэндл, и затем по этому хэндлу (не выгружая приложение) посылать ему сообщение WM_ENABLED.
    2. В отладчике типа DASM или SoftIce поставить точки останова на функции APi SendMessage, PostMessage, PeekMessage. При отладке смотреть, что в параметрах этих функций - если WM_ENABLED(числовая константа) с WParam=0 то патчить.
     
  7. Guest_Artur_*

    Guest_Artur_* Гость

    А как можно получить хэндл кнопки из другой программы ??????
     
  8. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Добавлю только что лучше уж EnableWindow ловить.
    Кстати, можно еще воспользоваться тулзами которые управляют окнами на ходу - помню была у меня такая - ей можно было показать кнопку у работающего приложения, и сказать ей - Enable. Это надо каждый раз ручками вызывать, конечно, но в твоем случае может помочь. Вот только найти сейчас не смог сходу.
     
  9. Guest_Artur_*

    Guest_Artur_* Гость

    <!--QuoteBegin-grigsoft+5:05:2006, 08:21 -->
    <span class="vbquote">(grigsoft @ 5:05:2006, 08:21 )</span><!--QuoteEBegin-->Кстати, можно еще воспользоваться тулзами которые управляют окнами на ходу - помню была у меня такая - ей можно было показать кнопку у работающего приложения, и сказать ей - Enable. Это надо каждый раз ручками вызывать, конечно, но в твоем случае может помочь. Вот только найти сейчас не смог сходу.
    [snapback]35010" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Думаю мне это в полне подойдёт. :)
    Прошу отправте если найдёте artur@arway.am
     
  10. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Где ж ее найти :) Но это мне напомнило, что я когда-то сам такое писал ради интереса. Нашел, собрал, вроде работает даже. Тут выложил - http://www.grigsoft.ru/winstyle.zip (75K). Надо мишень тащить и бросить на кнопку.
     
  11. Guest

    Guest Гость

    <!--QuoteBegin-grigsoft+5:05:2006, 08:48 -->
    <span class="vbquote">(grigsoft @ 5:05:2006, 08:48 )</span><!--QuoteEBegin-->Где ж ее найти Но это мне напомнило, что я когда-то сам такое писал ради интереса. Нашел, собрал, вроде работает даже. Тут выложил - [snapback]35015" rel="nofollow" target="_blank[/snapback]</div>[/quote]

    Спасибо большое !!!!! Отличная програмка :) , но задача моя оказалась сложнее чем я мог представить !
    В программе время контроллируется, когда нажимаю кнопку ответа, выдает что я опаздал :(
    Придётся всё таки иметь дело с АСМ и поменять там разницу времени.
    Как думаете, этот путь разумна ????????????????
     
  12. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    о чем я и говорил. Я думаю правильный путь - лучше к тесту готовиться :) Менять надо не время, а проверку условия, но я не вижу как тебе это поможет - наверняка на сервере тоже проверка от таких умных.
     
  13. Guest

    Guest Гость

    <!--QuoteBegin-grigsoft+5:05:2006, 10:01 -->
    <span class="vbquote">(grigsoft @ 5:05:2006, 10:01 )</span><!--QuoteEBegin-->о чем я и говорил. Я думаю правильный путь - лучше к тесту готовиться Менять надо не время, а проверку условия, но я не вижу как тебе это поможет - наверняка на сервере тоже проверка от таких умных.
    [snapback]35033" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    И всё же хотелось бы пробовать :)
    Не подскажете как приблизительно может выглядит в АСМ следующее условие ??

    if ( time1 - time2 >= dtime) then
    AfxMessageBox("Опаздали",0,0)
    else
    Send(Ответ);


    Сложно ли всё это настолько, чтоб отказатся от этой затеи ??????
     
  14. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    На мой взгляд не имея навыка работы с отладчиком в асме сам ты этого не сделаешь. Ну загрузи приложение в том же OllyDbg и попробуй разобраться. Наличие сообщения упрощает ситуацию - можно остановиться когда сообщение видно и посмотреть на стек - где то рядом будет и проверка jnz\jz.
    Если пользуешься VS, можно и в его отладчике этот момент посмотреть.
     
  15. zubr

    zubr Гость

    Один из способов обмануть по времени:
    запатчить функции GetLocalTime, GetSystemTime в kernel32.dll на определенное время, так чтобы они выдавали нужное тебе время. Саму запатченную длл-ку разместить в каталоге программы, тогда программа будет загружать вместо настоящей дллки, которая в System32, твою запатченную.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей