Blog. Just Blog

Разблокировка редактирования банкнот в Adobe Photoshop CC

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Разблокировка редактирования банкнот в Adobe Photoshop CC
Разблокировка редактирования банкнот в Adobe Photoshop CC

Статья про разблокировку сканирования банкнот неожиданно вызвала интерес и получила хорошее развитие в комментариях. Главное, что удалось определить основную причину, по которой некоторые устройства отказываются обрабатывать купюры. Также выяснилось, что подобными закидонами грешат не только сканеры, но и такая популярная программа обработки изображений, как Adobe Photoshop. Выражаясь армейской терминологией, сегодня будем приводить ее к нормальному бою.

Эта статья без привязки к конкретной версии программы, дистрибутивов в сети много, версий тоже немало. У меня установлен Adobe Photoshop CC, но все теоретические выкладки и методы из статьи подходят и для других версий. Предполагается, что у вас тоже установлен какой-то Photoshop. Итак, при попытке открыть на редактирование изображение какой-либо купюры, программа вывалит нам такое окно:

Сообщение о запрете редактирования
Сообщение о запрете редактирования

Исходная точка для исследований у нас есть, отправляем главный исполняемый файл Photoshop.exe в дизассемблер и уходим пить чай. Распетрушить почти 50 мегабайт кода для дизассемблера не самая рядовая задача, даже на современных мощных машинах.

По уже знакомому нам названию говносайта с правилами использования изображений банкнот, мы выходим поиском на такой текст внутри исполняемого файла. Это то же самое сообщение, только на английском языке.

Текст сообщения
Текст сообщения

Язык нам не важен, поищем код, который ссылается на этот текст.
  1. .text:00A96670                 push    ebp
  2. .text:00A96671                 mov     ebp, esp
  3. .text:00A96673                 push    0FFFFFFFFh
  4. .text:00A96675                 push    offset unk_24062FB
  5. .text:00A9667A                 mov     eax, large fs:0
  6. .text:00A96680                 push    eax
  7. .text:00A96681                 sub     esp, 10h
  8. .text:00A96684                 mov     eax, dword_2AE8E34
  9. .text:00A96689                 xor     eax, ebp
  10. .text:00A9668B                 push    eax
  11. .text:00A9668C                 lea     eax, [ebp+var_C]
  12. .text:00A9668F                 mov     large fs:0, eax
  13. .text:00A96695                 call    sub_13AF3B0
  14. .text:00A9669A                 push    eax
  15. .text:00A9669B                 push    0FFFFFFFFh
  16. .text:00A9669D                 push    offset aOpenAlertLevel
  17. ; "$$$/Open/Alert/Level1=This application "...
  18. .text:00A966A2                 lea     ecx, [ebp+var_14]
  19. .text:00A966A5                 call    sub_13A9FC0
  20. .text:00A966AA                 push    offset sub_13AA450
  21. .text:00A966AF                 push    offset sub_13A87D0
  22. .text:00A966B4                 push    2
  23. .text:00A966B6                 push    4
  24. .text:00A966B8                 lea     eax, [ebp+var_1C]
  25. .text:00A966BB                 push    eax
  26. ...
В этой функции ничего патчить не надо, так как тут просто осуществляется вывод окна с текстом. По цепочке переходим в функцию, которая ее вызывает.
  1. ...
  2. .text:00A97139                 cmp     [ebp+var_390], 1
  3. .text:00A97140                 jnz     short loc_A97165
  4. .text:00A97142                 mov     ecx, [ebp+var_338]
  5. .text:00A97148                 push    ecx
  6. .text:00A97149                 call    sub_1777C90
  7. .text:00A9714E                 cmp     [ebp+arg_4], 4
  8. .text:00A97152                 jnz     short loc_A9715B
  9. .text:00A97154                 call    sub_A96550
  10. .text:00A97159                 jmp     short loc_A97160
  11. .text:00A9715B ; ------------------------------------------
  12. .text:00A9715B loc_A9715B:
  13. ; Показать сообщение о запрете редактирования
  14. .text:00A9715B                 call    sub_A96670
  15. .text:00A97160 loc_A97160:
  16. .text:00A97160                 call    sub_15F6360
  17. .text:00A97165 ; ---------------------------------------
  18. .text:00A97165 loc_A97165:
  19. ...
Вроде бы очевидным местом для патча является место 00A97140, где можно заменить условный переход на безусловный. Но увы, сообщения о запрете редактирования нет, однако само изображение банкноты открывается в редакторе лишь на секунду, после чего красиво преобразуется в размытую цветную мозаику.

Изображение банкноты размывается
Изображение банкноты размывается

Откатываем изменения и по перекрестным ссылкам идем выше еще на один уровень вложенности вызовов функций.
  1. .text:00A97230                 push    ebp
  2. .text:00A97231                 mov     ebp, esp
  3. .text:00A97233                 mov     ecx, [ebp+arg_0]
  4. .text:00A97236                 test    ecx, ecx
  5. .text:00A97238                 jz      short loc_A9725D
  6. .text:00A9723A                 movzx   eax, word ptr [ecx+78h]
  7. .text:00A9723E                 cmp     ax, 8
  8. .text:00A97242                 jl      short loc_A9725D
  9. .text:00A97244                 cmp     ax, 10h
  10. .text:00A97248                 jg      short loc_A9725D
  11. .text:00A9724A                 mov     eax, [ebp+arg_8]
  12. .text:00A9724D                 mov     edx, [ebp+arg_4]
  13. .text:00A97250                 push    eax
  14. .text:00A97251                 push    edx
  15. .text:00A97252                 push    ecx
  16. .text:00A97253                 mov     ecx, offset unk_2C46BC8
  17. ; Вызвать функцию проверки и вывода сообщения
  18. .text:00A97258                 call    sub_A96E10
  19. .text:00A9725D loc_A9725D:
  20. .text:00A9725D                 pop     ebp
  21. .text:00A9725E                 retn
Тут даже и думать не надо. Никаких других вызовов функций кроме описанных выше тут нет, условные переходы и возврат. Так что смело записываем команду RET в начало функции по адресу 00A97230, сохраняем изменения, запускаем редактор и открываем в нем изображение банкноты.

Изображение банкноты открыто для редактирования
Изображение банкноты открыто для редактирования

Помнится, в самом начале исследования в файле встречались строчки о запрете печати банкнот. На всякий случай проверим и печать. И тоже никаких ограничений нет:

Изображение банкноты доступно для печати
Изображение банкноты доступно для печати

Вот и все, банкноты можно редактировать и печатать как угодно, а очередной приступ человеческой жадности помножен на ноль. По этому же принципу разблокируется редактирование и печать банкнот и в других версиях Adobe Photoshop, алгоритм поиска строк и порядок вызова функций в них аналогичный.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 10132 | Комментариев: 23

Метки: реверсинг
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Spirit (08.09.2017 в 20:59):
Adobe Photoshop Версия: 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00) x32

Я правильно понял инструкцию? -   .00A97230 - C3   RETN

видимо не очень... Потому как в таком формате там коллапс.

.text:00A97230 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS CTRL-NUMPAD+ TO EXPAND]
Юзер (04.06.2017 в 20:43):
Патчить фотошоп, это надо же ) Какое кощунство )
Валера (07.07.2015 в 12:06):
Обойти эту "защиту" очень просто. Открываешь фото банкноты в GIMPе, копируешь её в буфер обмена, создаешь новый документ в фотошопе, вставляешь изображение из буфера обмена. Profit! С банкнотой теперь можно делать что хочешь.
arhives (08.11.2014 в 17:08):
Можно формат сканированного изображения переделать в psd и фотошоп откроет.
Grax (03.11.2014 в 16:31):
На всякий случай для Photoshop CS6 13.0 х64 - поправить 64B3A0h:C3 ;-))
Grax (02.11.2014 в 15:36):
Нипонил, это ты СС х86 ковырял штоле?
Fedor (25.04.2014 в 23:37):
Тогда может более подробно разъясните какую строку редактировать в диссасемблере? И какой диссасемблер лучше использовать?

Увы но мои познания в ассемблере ограничиваются прочтением данной статьи((
ManHunter (25.04.2014 в 23:02):
Нет и не будет
Fedor (25.04.2014 в 22:35):
Может есть возможность выложить уже пропатченный файл для скачки?
pilulkin (21.12.2013 в 07:19):
Дмитрий Скляров подтвердит.
pilulkin (21.12.2013 в 06:56):
Бросайте Вы эту гнилую тему с банкнотами. Нам будет Вас не хватать.

Заметил ошибку да поздно.
По теме:
Еще и Adobe. Опасно это.
ManHunter (09.12.2013 в 10:31):
Не использую, т.к. не делаю в нем действий, которые требуют больше нажатия пары горячих клавиш :)
Grey (09.12.2013 в 10:15):
В фотошопе есть прикольная возможность - запись действий пользователя в файл сценария. Не пробовал использовать?
ManHunter (08.12.2013 в 23:57):
Chan, IDA pro
morgot (08.12.2013 в 23:26):
ManHunter, я думаю, тут каждому свое, есть люди с техническим складом ума, а есть там художники, поэты и так далее. Например я относительно неплохо пишу на asm/php, но с веб дизайном очень туго; все получается кривое, негармоничное, неприятные глазу цвета. Вот не могу сделать красиво внешний вид и все тут, и дело не в незнании ксс. А кто-то создает дизайн быстро и красиво, но зато не понимает, скажем, битовые операции.
Chan (08.12.2013 в 22:06):
ManHunter,
Какой дизассемблер Вы используете?
ManHunter (07.12.2013 в 09:01):
morgot, зато я белой завистью завидую тем, кто в фотошопе может делать всякие прикольные штуки. У меня дальше коллажей из готовых картинок дело не идет, а все мои попытки сделать какие-нибудь элементарные вещи заканчиваются или ничем, или напряженным многочасовым штудированием "Уроков по фотошопу для ясельной группы детского сада". Так что каждый занимается своим делом.
morgot (07.12.2013 в 02:36):
Вот все таки Ассемблер есть Ассемблер, его знание дает полный контроль над системой. Взял и пропатчил прогу, и пошли они нафиг эти ограничения. А то проблема эта с фотошопом и купюрами существует давно, и что придумали разные веб-дезигнеры и прочие фрилансеры? Ничего кроме как ерунды вида "разбить купюры на части, потом соединить" и все такое.

p.s. говорят, что в европах купюру 500 евро называют "бен ладен", типа все про нее слышали, но мало кто видел.
ManHunter (05.12.2013 в 10:42):
В европах в мелких торговых точках часто висят объявления, что с 500 евро сдачи нет.
Андрей (05.12.2013 в 10:08):
Интересно, как можно сбыть скопированные 500 евро ?
В европах бабушки семки продают ?

Шутка. :)
Михаил (05.12.2013 в 09:11):
+1
ManHunter (05.12.2013 в 08:32):
Раньше тырил по интернетам, сейчас обычно сам мастерю. В этом же самом прострелянном фотошопе.
Grey (05.12.2013 в 08:31):
Крутой ты чувак. Вопрос "не в тему": такие изображения для сайта, как первое ("прострелянное и подранное") ты сам мастеришь или заимствуешь?

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0039 сек.) / Память: 4.5 Mb
Наверх