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

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

Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 августа 2016 14:07 · Поправил: popov654
· Личное сообщение · #1

Нужно модифицировать эту софтину, сам пытался - не выходит, получается полная ерунда.

В качестве дизассемблера использовал встроенный в PE Explorer - мне нравится результат его работы, но:

1. Изменять команды в нём нельзя, он read-only
2. При попытке открыть в HIEW в ассемблерном режиме всё выглядит далеко не так
3. Сами "сырые" байты, если я беру их из правильной колонки в дизассемблере - не находятся ни в HIEW, ни в обычном WinHEX

Что делать, не понимаю.

Программа условно-бесплатная, более того, я уже делал донат автору в размере 1.5-2 евро, но загвоздка в том, что донат даёт лишь временное снятие ограничений, вроде на месяц, и то я тогда не смог воспользоваться его плодами из-за неочевидности системы активации.

Буду рад любой помощи - как советами, так и делом, прога очень нужна в полном виде.

Что нужно:

1. Убрать сплэш скрин на 3-4 секунды при запуске (если сделать клик куда угодно в области программы, пока он активен, открывается сайт программы в дефолтном браузере). Где находится этот код в ассемблере - я нашёл, осталось его подправить или выпилить.

2. Убрать ограничение бесплатной версии - периодически выводящийся после конвертирования диалог с просьбой выполнить арифметический пример. Мне иногда бывает нужно делать пакетные перекодирования, а это окно останавливает дальнейшую очередь, пока туда не введёшь верный ответ и не нажмёшь кнопку ОК. С этим я пока не работал, есть идея использовать программу, отображающую хендлы всех активных графических элементов в винде, узнавать хендл окна с запросом этого примера, и дальше искать по ассемблерному коду уже через него.

P. S. PRO-версию купить можно, но не факт, что там отсутствует сплэш-скрин, да и её возможности для меня несколько избыточны. Кроме того, мне в образовательных целях интересно научиться модифицировать экзешники.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 02 августа 2016 14:15 · Поправил: Kindly
· Личное сообщение · #2

красиво расписал, но не по делу
https://exelab.ru/f/action=vthread&forum=2&topic=23172&page=38
popov654 пишет:
То есть писать туда, и просить за вознаграждение это сделать?

там вознаграждение опционально.

-----
Array[Login..Logout] of Life




Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 августа 2016 14:25 · Поправил: popov654
· Личное сообщение · #3

То есть писать туда, и просить за вознаграждение это сделать?
Понятно.

А просто совет можно получить, как быть, если нашёл нужные строчки в дизассемблере? Как и в чём потом править? HIEW уже пробовал - результат описал выше.

Добавлено спустя 13 минут
Code:
  1. L0042A796:
  2.                push 00000010h
  3.                lea  eax,[esp+10h]
  4.                push eax
  5.                push 00001004h
  6.                push 00000800h
  7.                call [KERNEL32.DLL!GetLocaleInfoA]
  8.                test eax,eax
  9.                jle  L0042A7C3
  10.                lea  eax,[esp+0Ch]
  11.                push eax
  12.                call SUB_L004C3027
  13.                add  esp,00000004h
  14.                mov  [L005388C8],eax
  15.  
  16.  L0042A7C3:
  17.                mov  edi,[USER32.dll!LoadCursorA]
  18.                push 00007F02h
  19.                push 00000000h
  20.                call edi
  21.                mov  ebx,[USER32.dll!SetCursor]
  22.                push eax
  23.                call ebx
  24.                push 0000006Ah
  25.                push esi
  26.                mov  [L00538B34],esi
  27.                call [USER32.dll!LoadIconA]
  28.                mov  ecx,[ebp+10h]
  29.                xor  edx,edx
  30.                mov  [L00538AE4],eax
  31.                call SUB_L0042A030
  32.                call SUB_L00438820
  33.                call SUB_L00429660
  34.                test eax,eax
  35.                jnz  L0042B02B
  36.                lea  ecx,[eax+01h]
  37.                call SUB_L0043D9A0
  38.                neg  eax
  39.                sbb  eax,eax
  40.                neg  eax
  41.                push SSZ0050F3C8_overall_ui_mode
  42.                mov  [L00538AA8],eax
  43.                call SUB_L0044F4A0
  44.                mov  [L0052CC10],eax
  45.                call SUB_L0040D7A0
  46.                push SSZ00513884_overall_ui_noWelcome
  47.                call SUB_L0044F4A0
  48.                add  esp,00000004h
  49.                cmp  eax,[L00538ADC]
  50.                jge  L0042A874
  51.                cmp  dword ptr [L0052CC10],00000003h
  52.                jz   L0042A874
  53.                call [mccommon.dll!IsUnderWine]
  54.                test eax,eax
  55.                jnz  L0042A874
  56.                call SUB_L00427790
  57.                mov  [L00538AFC],al
  58.                test al,al
  59.                jnz  L0042A8DC
  60.                or   eax,FFFFFFFFh
  61.                pop  edi
  62.                pop  esi
  63.                pop  ebx
  64.                mov  esp,ebp
  65.                pop  ebp
  66.                retn 0010h


Вот листинг. У меня конструкция

Code:
  1. test     eax,eax
  2. jle      L0042A7C3


вызывает вопросы, выглядит странно. Там ведь всегда равенство будет, поэтому jz было бы логичнее (если это не косяк дизассемблера). Я бы соответственно исправил на jnz, чтобы в следующую функцию вообще не было захода. Но поскольку я не понимаю всего, что в ней делается, быть может, полностью игнорировать её и нельзя...

Ну и независимо от того, хороша ли моя идея - я не знаю, как сделать правку.

Добавлено спустя 15 минут

Kindly пишет:
там вознаграждение опционально.


Спасибо. Там ещё требуется протестить некой прогой на тип защиты... Вот интересно, неужели эти защиты типовые (то есть автор не мог написать свою этом случае)? Впрочем, я скачаю и протестирую, сделаю всё по инструкции.

Добавлено спустя 25 минут

С чего я взял, что это место - то, что нужно? USER32.dll!LoadCursorA и USER32.dll!SetCursor тонко намекнули (во время сплэш-скрина курсор другой устанавливается).



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

Создано: 02 августа 2016 14:48
· Личное сообщение · #4

Потчить модули без проблем можно в OllyDbg, все секции обратно пересчитает из памяти. Да и с дизассемблером лучше не изобретать велосипед, и взять IDA
А вообще, когда я лечил эту программу, чтобы пакетной обработкой нормально пользоваться, то сделал заметку, что патчить сам EXE нельзя, нужно патчить JZ на JMP в памяти. Вот только подробностей не помню

| Сообщение посчитали полезным: popov654

Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 августа 2016 14:58 · Поправил: popov654
· Личное сообщение · #5

Vicshann, а не поделитесь, почему? Падать будет?

IDA у меня просто тупо не запускалась и вылетала с ошибкой, когда я пытался её запустить год или полтора назад.

Olly сегодня пробовал запускать. Видимо, я смотрел не туда... Я пытался читать окно "CPU", и видел там какой-то бред (без понятия, что там выводится, если процесс относящийся к выбранному экзешнику не запущен). Но ведь это же отладчик? А тут скорее дизасм нужен с возможностью правки.

Глупо, но в остальных окнах было не то, что мне нужно.

Добавлено спустя 5 минут

Скачал OllyDbg ещё раз, запустил процесс кнопкой с треугольником. Вот лог:

Code:
  1. Log data
  2. Address    Message
  3.            OllyDbg v1.10
  4.            Bookmarks sample plugin v1.06 (plugin demo)
  5.              Copyright (C) 2001, 2002 Oleh Yuschuk
  6.            Command line plugin v1.10
  7.              Written by Oleh Yuschuk
  8.  
  9.            File 'C:\Program Files\MediaCoder\mediacoder.exe'
  10.            New process with ID 00000734 created
  11. 00595AC0   Main thread with ID 00000BD8 created
  12. 00340000   Module C:\Program Files\MediaCoder\mccommon.dll
  13. 00380000   Module C:\WINDOWS\system32\Normaliz.dll
  14. 003A0000   Module C:\Program Files\MediaCoder\SDL_image.dll
  15. 00400000   Module C:\Program Files\MediaCoder\mediacoder.exe
  16. 005D0000   Module C:\Program Files\MediaCoder\libxml2.dll
  17. 00670000   Module C:\Program Files\MediaCoder\SDL.dll
  18. 10000000   Module C:\Program Files\MediaCoder\jpeg.dll
  19. 3F9E0000   Module C:\WINDOWS\system32\WININET.dll
  20. 40080000   Module C:\WINDOWS\system32\iertutil.dll
  21. 45020000   Module C:\WINDOWS\system32\urlmon.dll
  22. 5D5B0000   Module C:\WINDOWS\system32\COMCTL32.dll
  23. 66000000   Module C:\Program Files\MediaCoder\libiconv-2.dll
  24. 66D80000   Module C:\Program Files\MediaCoder\avutil-52.dll
  25. 6AB00000   Module C:\Program Files\MediaCoder\swscale-2.dll
  26. 6AFC0000   Module C:\Program Files\MediaCoder\postproc-52.dll
  27. 71A80000   Module C:\WINDOWS\system32\WS2HELP.dll
  28. 71A90000   Module C:\WINDOWS\system32\WS2_32.dll
  29. 71AB0000   Module C:\WINDOWS\system32\WSOCK32.dll
  30. 73B10000   Module C:\WINDOWS\system32\AVIFIL32.dll
  31. 75A40000   Module C:\WINDOWS\system32\MSVFW32.dll
  32. 76380000   Module C:\WINDOWS\system32\COMDLG32.dll
  33. 76B20000   Module C:\WINDOWS\system32\WINMM.dll
  34. 76BE0000   Module C:\WINDOWS\system32\PSAPI.DLL
  35. 76D50000   Module C:\WINDOWS\system32\IPHLPAPI.DLL
  36. 77110000   Module C:\WINDOWS\system32\OLEAUT32.dll
  37. 774D0000   Module C:\WINDOWS\system32\ole32.dll
  38. 77BD0000   Module C:\WINDOWS\system32\MSACM32.dll
  39. 77C00000   Module C:\WINDOWS\system32\msvcrt.dll
  40. 77DC0000   Module C:\WINDOWS\system32\ADVAPI32.dll
  41. 77E70000   Module C:\WINDOWS\system32\RPCRT4.dll
  42. 77F10000   Module C:\WINDOWS\system32\GDI32.dll
  43. 77F60000   Module C:\WINDOWS\system32\SHLWAPI.dll
  44. 77FE0000   Module C:\WINDOWS\system32\Secur32.dll
  45. 7C800000   Module C:\WINDOWS\system32\kernel32.dll
  46. 7C900000   Module C:\WINDOWS\system32\ntdll.dll
  47. 7C9C0000   Module C:\WINDOWS\system32\SHELL32.dll
  48. 7E360000   Module C:\WINDOWS\system32\USER32.dll
  49. 00C20000   Module C:\WINDOWS\system32\HookDLL.DLL
  50. 76360000   Module C:\WINDOWS\system32\IMM32.DLL
  51. 00CB0000   Module C:\WINDOWS\system32\vct3216.acm
  52. 00CB0000   Unload C:\WINDOWS\system32\vct3216.acm
  53. 7C8106F9   New thread with ID 00000FFC created
  54. 00595AC0   Program entry point
  55.            Analysing mediacod
  56.              0 heuristical procedures
  57.              2 switches
  58. 7C8106F9   New thread with ID 00000BE0 created
  59. 773C0000   Module C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\comctl32.dll
  60. 5B260000   Module C:\WINDOWS\system32\uxtheme.dll
  61. 746E0000   Module C:\WINDOWS\system32\MSCTF.dll
  62. 75310000   Module C:\WINDOWS\system32\msctfime.ime
  63. 01220000   Module C:\Program Files\MediaCoder\mcres.dll
  64. 017E0000   Module C:\WINDOWS\system32\RSLSP.dll
  65. 7C8106F9   New thread with ID 00000860 created
  66. 7C8106F9   New thread with ID 00000530 created
  67. 7C8106F9   New thread with ID 00000BDC created
  68. 7C8106F9   New thread with ID 000006E4 created
  69. 7C8106F9   New thread with ID 00000A80 created
  70. 7C8106F9   New thread with ID 00000204 created
  71. 71A30000   Module C:\WINDOWS\system32\MSWSOCK.dll
  72. 698B0000   Module C:\WINDOWS\system32\hnetcfg.dll
  73. 7C8106F9   New thread with ID 00000518 created
  74. 7C8106F9   New thread with ID 00000DD4 created
  75. 7C910A1B   Access violation when reading [00730072]


В этом месте всё повисло, хотя точек останова не было. Кажется, что-то пошло не так

Добавлено спустя 15 минут

Может, вы просто не нашли способ? Можно же заставить прогу думать, что она активирована кодом, выдаваемым при донате. Если она лезет на сервер - убрать строчки, где она лезет.



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

Создано: 02 августа 2016 15:26
· Личное сообщение · #6

Кажется там проверка на патч EXE была, другой причины не могу представить
Что-то я еще патчил в jpeg.dll. Но не ясно что, видимо лень было подписать Но то версия трехлетней давности, сейчас могли все по другому сделать. Дизассемблировать действительно лучше в IDA
Потом цеплять OllyDbg к процессу, патчить все, что нужно и сохранять. Но это если ни чем не упаковано
Вроде раньше там UPX был.



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

Создано: 02 августа 2016 15:30
· Личное сообщение · #7

Оставлю без комментариев.
http://forum.ru-board.com/topic.cgi?forum=35&topic=42865&start=40



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

Создано: 02 августа 2016 21:30
· Личное сообщение · #8

Vicshann пишет:
Кажется там проверка на патч EXE была, другой причины не могу представить

MD5 непатченного экзешника хранится в ресурсах файла mcres.dll и если он не совпадает, то очередь прекращается после первого же отрендеренного файла

| Сообщение посчитали полезным: popov654

Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 августа 2016 04:21 · Поправил: popov654
· Личное сообщение · #9

v00doo, цель была в первую очередь научиться работать с дизассемблером

И к сожалению, в той теме, которую вы скинули, часть файлов удалена (более старые версии), а как минимум те, что не удалены - те 64-битные. А мне надо 32-битную...

Добавлено спустя 12 часов
Вообще, я не понимаю. Вот статья из журнала "Хакер" бородатого года (честно говоря, именно она вдохновила меня на эти эксперименты):

http://xakep-archive.ru/spec/057/048/1.htm

Я скачал и запустил Kerberous, получил длинный листинг вызовов API. Вот его конец:

Code:
  1. mediacoder.exe | 0042A74B | LoadAcceleratorsA(00400000, 00000070) returns: 009703F5
  2. mediacoder.exe | 0042A755 | GetTickCount() returns: 0057A2B1
  3. mediacoder.exe | 0042A7AD | GetLocaleInfoA(00000800, 00001004, 0012FC2C, 00000010) returns: 00000005
  4. mediacoder.exe | 0042A7D2 | LoadCursorA(00000000, 00007F02) returns: 00010015
  5. mediacoder.exe | 0042A7DB | SetCursor(00010015) returns: 00010015
  6. mediacoder.exe | 0042A7EA | LoadIconA(00400000, 0000006A) returns: 009602E9
  7. mediacoder.exe | 004C4A19 | HeapAlloc(00260000, 00000000, 00000034) returns: 00273090
  8. mediacoder.exe | 0042699F | CreateThread(00000000, 00000000, 00426D70, 00273090, 00000000, 0012FC00) returns: 00000114
  9. mediacoder.exe | 004269D2 | WaitForSingleObject(10073D1C, 00000000) returns: FFFFFFFF
  10. mediacoder.exe | 00426A96 | SetParent(004C0045, 00000000) returns: 00000000


Теперь я открываю HIEW, как написано в статье, жму два раза Enter, нажимаю F5 и ввожу после точки адрес, взятый из листинга (.0042A7D2). Получаю ошибку - "Offset is out of file". Ну и какого фига...

В самом деле, почему у HIEW такая "дырка" в адресации?

Code:
  1. .004003FC: 2617                  pop         ss
  2. .004003FE: 00F0                  add         al,dh
  3. .0050C000: FFFF                  #UD
  4. .0050C002: 4F                    dec         edi




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

Создано: 03 августа 2016 20:21
· Личное сообщение · #10

тебе ж уже посоветовали
Vicshann пишет:
с дизассемблером лучше не изобретать велосипед, и взять IDA

и WaitForSingleObject тебе нафиг не нужен - наги выводятся через GetDlgItem и затем SendMessageA



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 03 августа 2016 21:44
· Личное сообщение · #11

popov654, тебе нужно прочитать и изучить вот это: https://download.microsoft.com/download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/pecoff.doc и 98% твоих глупых вопросов отпадет.


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


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