Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Пропатчить программу
Посл.ответ Сообщение

Ранг: 15.8 (новичок), 9thx
Активность: 0.010.03
Статус: Участник

Создано: 13 апреля 2012 18:51 · Поправил: esa_r
· Личное сообщение · #1

Есть программка, написана на Визуал Васике. Бесплатная, но в каждой форме заблокирована кнопка "Закрыть". Жуть как неудобно.
В коде каждой формы сидит функция DisableXbutton. Примерно вот такая:
Code:
  1. Public Sub DisableXbutton(frmHwnd) '5938E0
  2.   loc_00593902: var_8 = &H401238
  3.   loc_00593909: var_4 = 0
  4.   loc_0059391F: GetSystemMenu(frmHwnd, 0)
  5.   loc_0059392C: GetLastError
  6.   loc_00593930: If GetSystemMenu(frmHwnd, 0) = 0 Then GoTo loc_00593949
  7.   loc_0059393A: DeleteMenu(GetSystemMenu(frmHwnd, 0), -4000, 0)
  8.   loc_0059393F: GetLastError
  9.   loc_00593942: DrawMenuBar(frmHwnd)
  10.   loc_00593947: GetLastError
  11.   loc_00593949: 
  12. End Sub

Собственно, занопить её проблем нет, но форм таких более 30. И программа периодически обновляется.

Присоветуйте идею, как написать патчер, чтобы каждый раз нажатием заветной кнопочки сделать Disable этой треклятой DisableXbutton ).
Я пробовал dup2-ом искать последовательность байт. Но там, где байты одинаковые для всех ф-ций, они встречаются и в других, которые патчить не надо.
--> Link <--

з ы языками владею



Ранг: 13.9 (новичок), 9thx
Активность: 0.010
Статус: Участник

Создано: 13 апреля 2012 23:44
· Личное сообщение · #2

Установить сплайс на DeleteMenu/DeleteMenuBar и блокировать исполнение ф-и.



Ранг: 15.8 (новичок), 9thx
Активность: 0.010.03
Статус: Участник

Создано: 14 апреля 2012 12:36
· Личное сообщение · #3

ADACH пишет:
Установить сплайс на DeleteMenu/DeleteMenuBar

Ниасилил (
Можно поподробнее?



Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 14 апреля 2012 13:04
· Личное сообщение · #4

http://ru.wikipedia.org/wiki/Сплайсинг_%28информатика%29



Ранг: 116.1 (ветеран), 5thx
Активность: 0.060
Статус: Участник

Создано: 14 апреля 2012 15:07 · Поправил: BoOMBoX
· Личное сообщение · #5

esa_r пишет:
Собственно, занопить её проблем нет, но форм таких более 30. И программа периодически обновляется.


патчить нужно еще и кучу файлов в папке mod,
а так ничего сложного, коль уж кодить умеешь:

находишь в кодовой секции файлов последовательность

8B 45 08 50 8B 10 FF 52 08 8B 45 FC 8B 4D EC

Code:
  1. 00593932   6A 00            PUSH 0
  2. 00593934   68 60F0FFFF      PUSH -0FA0
  3. 00593939   56               PUSH ESI
  4. 0059393A   E8 7D8CF0FF      CALL 0049C5BC
  5. 0059393F   FFD7             CALL EDI
  6. 00593941   53               PUSH EBX
  7. 00593942   E8 E18CF0FF      CALL 0049C628
  8. 00593947   FFD7             CALL EDI
  9. 00593949   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]       <-сигнатура для поиска отсюда
  10. 0059394C   50               PUSH EAX
  11. 0059394D   8B10             MOV EDX,DWORD PTR DS:[EAX]
  12. 0059394F   FF52 08          CALL DWORD PTR DS:[EDX+8]
  13. 00593952   8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
  14. 00593955   8B4D EC          MOV ECX,DWORD PTR SS:[EBP-14]


поднимаешься выше:
Code:
  1. 0059393A   E8 7D8CF0FF      CALL 0049C5BC

вычисляешь адрес процедуры, т.е. 0049C5BC и патчишь эту процедуру в начале на RET 0C:
Code:
  1. 0049C5BC   C2 0C00          RETN 0C



P.S.
активизация кнопки "Х" чревата закрытием некоторых форм без активации главного окна проги, к примеру - при нажатии на кнопку "радиотехника" скрывается главное окно и появляется дочернее, так вот, при нажатии на кнопку "X" дочернее окно просто закроется, а главное окно так и останется скрытым.


 eXeL@B —› Вопросы новичков —› Пропатчить программу
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати