eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Xlab0s, yashechka (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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

Ранг: 26.3 (посетитель)
Статус: Участник

Создано: 20 февраля 2019 19:05 New!
Цитата · Личное сообщение · #1

Исследуемая жертва - инструмент для обработки изображений. Триальный режим отключает возможность сохранения изображения, с которым производилась работа. Задача: убрать это ограничение, не используя для этого регистрацию.
Разрабы - явные параноики, на пути к GetSaveFileNameW нагородили чёрт знает что, от запутывания путей до встраивания в код закладок, от которых не зарегистрированный сабж крашится. Всё это удалось разрулить, и остался один самый последний (надеюсь) момент: сохранить картинку в неиспорченном виде. Суть в том, что картинка сохраняется, однако вместо изображения получаем сплошной чёрный фон.
Само сохранение происходит в два цикла: в первом файл сохраняется в виде стандартной виндусовой иконки (CreateFileW), и здесь всё нормально, а во втором виндусовый шаблон должен быть заменён изображением (CloseHandle). На этом пути десятки процедур, и все их проанализировать нереально, особенно если не знаешь, что точно надо искать. Короче, опять закладка. Ощущение такое, что в ней используется флаг "не зарегистрировано", а вот в каком виде, куда его воткнули и, главное, что конкретно он делает с атрибутами изображения - не понятно.

За что можно зацепиться для решения проблемы?


Ранг: 262.5 (наставник)
Статус: Участник
RBC

Создано: 20 февраля 2019 19:49 · Поправил: Kindly New!
Цитата · Личное сообщение · #2

Че за софт то?

Chris пишет:
--> Link <--

Файла Target.rar нет.
очень информативно

Ранг: 26.3 (посетитель)
Статус: Участник

Создано: 20 февраля 2019 20:01 · Поправил: Chris New!
Цитата · Личное сообщение · #3

Kindly пишет:
Че за софт то?


--> Link <--



{ Атач доступен только для участников форума } - 2019-02-20_220710.png

Ранг: 378.6 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 20 февраля 2019 20:12 New!
Цитата · Личное сообщение · #4

Chris
Похожая тема на форуме была 1-1,5 года назад.
Мыслю, что при сохранении в каком нибудь jpg, подгружается сторонняя библиотека, куда отправляется буфер с изображением. И скорее всего, оно туда приходит покарапченным. Membp на буфер.

Kindly пишет:
Файла Target.rar нет.

Разработчики софта всё скачали))


Ранг: 262.5 (наставник)
Статус: Участник
RBC

Создано: 20 февраля 2019 20:22 · Поправил: Kindly New!
Цитата · Личное сообщение · #5

Chris пишет:
bc37_20.02.2019_EXELAB.rU.tgz - 2019-02-20_220710.png

--> тыц! <--

ELF_7719116 пишет:
Разработчики софта всё скачали))

и не говори, бьют по сигнатурам

Ранг: 26.3 (посетитель)
Статус: Участник

Создано: 20 февраля 2019 20:36 New!
Цитата · Личное сообщение · #6

Kindly пишет:
и не говори, бьют по сигнатурам

От политических высказываний с привлечением русского фольклора воздержусь.

--> Link <--


Ранг: 262.5 (наставник)
Статус: Участник
RBC

Создано: 20 февраля 2019 20:50 New!
Цитата · Личное сообщение · #7

Chris пишет:
За что можно зацепиться для решения проблемы?

за кастомную VM.

Ранг: 26.3 (посетитель)
Статус: Участник

Создано: 20 февраля 2019 20:51 New!
Цитата · Личное сообщение · #8

ELF_7719116 пишет:
при сохранении в каком нибудь jpg, подгружается сторонняя библиотека, куда отправляется буфер с изображением

Очевидно так и есть, т.к. сохранение только в семействе jpeg (одна библиотека).
По каким признакам искать буфер?


Ранг: 262.5 (наставник)
Статус: Участник
RBC

Создано: 20 февраля 2019 21:01 · Поправил: Kindly New!
Цитата · Личное сообщение · #9

можешь даже не тратить время на стандартные средства. там патчить саму vm надо, павка это в 4 байта делал. есть также собственное решение, основанное на баге или особенности регистрационной схемы, когда прога сама считает фейковый короткий номер, и он срабатывает при определенной доли вероятности, регистрируя софт на 1 сутки. этим вполне можно было воспользоваться. как обстоят дела сейчас не знаю, софт не интересен, автор только и умеет банить серийники (которые легко разбаниваются, если знать как), а после инцидента с кейгеном он вообще убрал алгоритм, делая для каждого нового покупателя новый билд с белым хешем серийника внутри.

речь про фотоинструмент.

Ранг: 26.3 (посетитель)
Статус: Участник

Создано: 20 февраля 2019 21:39 · Поправил: Chris New!
Цитата · Личное сообщение · #10

Kindly пишет:
можешь даже не тратить время

Общая картина мне примерно известна, и именно поэтому обозначена задача убрать ограничение, не используя регистрацию. Осталось-то всего-ничего: "разбанить" изображение, тем более, что оно уже сохраняется.
Сабж мне тоже не нужен, но интересно решить до конца эту задачку. Есть ещё и сопутствующие моменты.

Ранг: 67.5 (постоянный)
Статус: Участник

Создано: 20 февраля 2019 22:05 · Поправил: Boostyq New!
Цитата · Личное сообщение · #11

Есть у кого нибудь дамп таргета после распаковки или что там? (не хочу устанавливать эту мишуру, а мне только взглянуть)


Ранг: 1011.4 (!!!!)
Статус: Участник

Создано: 20 февраля 2019 22:13 New!
Цитата · Личное сообщение · #12

суровые хакерши innounp принципиально не используют ?

Ранг: 67.5 (постоянный)
Статус: Участник

Создано: 20 февраля 2019 22:33 · Поправил: Boostyq New!
Цитата · Личное сообщение · #13

Boostyq пишет:
суровые хакерши innounp принципиально не используют

Нее, это ты хакерша, а я просто рядом стою
И про Inno Setup я вообще второй раз слышу, так что хз чего ты троллишь
Я просила дамп главного файла, т.к. не хочу запускать эту штукенцию даже на вм, тем более автор параноик, а тс все равно его запустил уже


Ранг: 1011.4 (!!!!)
Статус: Участник

Создано: 20 февраля 2019 22:35 New!
Цитата · Личное сообщение · #14

вот я и говорю какой дамп ?
там инсталляха которая открывается через innounp
дальше чистый екзе файл
лучше сначала посмотреть а не спрашивать

Ранг: 67.5 (постоянный)
Статус: Участник

Создано: 20 февраля 2019 22:51 New!
Цитата · Личное сообщение · #15

reversecode пишет:
лучше сначала посмотреть а не спрашивать

Хорошо, насчет Inno Setup вы правы, действительно есть строки соответствующие строки в установочнике
Но насчет самого файла вы зря агритесь, т.к. было сказано, что там вм и я предположила, что файл так же упакован, соответственно проще спросить сразу дамп конечно файла, чем все это расковыривать
И нет, не лучше, дешевле спросить, чем тратить личное время на низкоприоритетную вещь, я спросила и вы выдали мне все с потрохами, просто чтобы унизить и показать какой вы умный


Ранг: 1011.4 (!!!!)
Статус: Участник

Создано: 20 февраля 2019 22:56 New!
Цитата · Личное сообщение · #16

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

Ранг: 67.5 (постоянный)
Статус: Участник

Создано: 21 февраля 2019 02:55 · Поправил: Boostyq New!
Цитата · Личное сообщение · #17

reversecode пишет:
я плохой

Такого не говорила, просто ты хулиган
Ладно, первая вм для детишек (уе, мой уровень):
Code:
  1. struct VM1
  2. {
  3.          std::deque<uint32_t> argstk; // 0000
  4.          std::deque<uint32_t> callstk; // 0014
  5.          const uint32_t* data; // 0028
  6.          uint32_t ip; // 002C
  7.          uint32_t size; // 0030
  8. }; // 0034

Code:
  1. 01 - add:
  2. tmp1 = as_pop();
  3. as_back() += tmp1;
  4. ip += 1;
  5.  
  6. 02 - neg:
  7. tmp1 = as_back();
  8. as_back() = -tmp1;
  9. ip += 1;
  10.  
  11. 03 - jne(arg):
  12. ip += (as_back() != arg) ? 2 : 1;
  13.   
  14. 04 - jeb(arg):
  15. ip += (as_back() >= arg) ? 2 : 1;
  16.   
  17. 05 - jel(arg):
  18. ip += (as_back() <= arg) ? 2 : 1;
  19.   
  20. 06 - je(arg):
  21. ip += (as_back() == arg) ? 2 : 1;
  22.   
  23. 07 - jmp(arg):
  24. ip = find_label(arg) + 1;
  25.  
  26. 08 - label(arg):
  27. ip += 1;
  28.  
  29. 09 - call(arg):
  30. tmp1 = find_proc(arg);
  31. cs_push(ip);
  32. ip = tmp1;
  33.  
  34. 0A - proc(arg):
  35. ip = find_ret() + 1;
  36.  
  37. 0B - ret:
  38. ip = cs_pop() + 1;
  39.  
  40. 0C - nop:
  41. ip += 1;
  42.  
  43. 0D - pop:
  44. as_pop();
  45. ip += 1;
  46.  
  47. 0E - pushac:
  48. tmp1 = as_count();
  49. as_push(tmp1);
  50. ip += 1;
  51.  
  52. 0F - swap:
  53. tmp1 = as_pop();
  54. tmp2 = as_back();
  55. as_back() = tmp1;
  56. as_push(tmp2);
  57. ip += 1;
  58.  
  59. 10 - pushi(arg):
  60. as_push(arg);
  61. ip += 1;

Code:
  1. 0000 | 0A 000D7E | proc(000D7E)  ;
  2. 0001 | 10 000001 | pushi(1)      ;
  3. 0002 | 01 000000 | add           ;
  4. 0003 | 0B 000000 | ret           ;
  5.   
  6. 0004 | 0A 012721 | proc(012721)  ;
  7. 0005 | 10 000001 | pushi(1)      ;
  8. 0006 | 02 000000 | neg           ;
  9. 0007 | 01 000000 | add           ;
  10. 0008 | 0B 000000 | ret           ;
  11.   
  12. 0009 | 0A 000513 | proc(000513)  ;
  13. 000A | 08 00000A | label(00000A) ;
  14. 000B | 0E 000000 | pushac        ;
  15. 000C | 04 000002 | jeb(2)        ; 000E
  16. 000D | 07 00000B | jmp(00000B)   ; 0011
  17. 000E | 0D 000000 | pop           ;
  18. 000F | 01 000000 | add           ;
  19. 0010 | 07 00000A | jmp(00000A)   ; 000A
  20. 0011 | 08 00000B | label(00000B) ;
  21. 0012 | 0D 000000 | pop           ;
  22. 0013 | 0B 000000 | ret           ;
  23.  
  24. 0014 | 0A 00D448 | proc(00D448)  ;
  25. 0015 | 09 000513 | call(000513)  ; 0009
  26. 0016 | 09 00A55E | call(00A55E)  ; 0018
  27. 0017 | 0B 000000 | ret           ;
  28.   
  29. 0018 | 0A 00A55E | proc(00A55E)  ;
  30. 0019 | 08 000046 | label(000046) ;
  31. 001A | 10 000007 | pushi(7)      ;
  32. 001B | 02 000000 | neg           ;
  33. 001C | 01 000000 | add           ;
  34. 001D | 05 000000 | jel(0)        ; 001F
  35. 001E | 07 000046 | jmp(000046)   ; 0019
  36. 001F | 03 000000 | jne(0)        ; 0021
  37. 0020 | 0B 000000 | ret           ;
  38. 0021 | 10 000007 | pushi(7)      ;
  39. 0022 | 01 000000 | add           ;
  40. 0023 | 0B 000000 | ret           ;
  41.   
  42. 0024 | 0A 015526 | proc(015526)  ;
  43. 0025 | 03 000000 | jne(0)        ; 0027
  44. 0026 | 0B 000000 | ret           ;
  45. 0027 | 10 000001 | pushi(1)      ;
  46. 0028 | 0B 000000 | ret           ;
  47.   
  48. 0029 | 0A 0083E4 | proc(0083E4)  ;
  49. 002A | 09 015526 | call(015526)  ; 0024
  50. 002B | 09 012721 | call(012721)  ; 0004
  51. 002C | 04 000000 | jeb(0)        ; 002E
  52. 002D | 02 000000 | neg           ;
  53. 002E | 0B 000000 | ret           ;
  54.   
  55. 002F | 0A 009A3D | proc(009A3D)  ;
  56. 0030 | 0E 000000 | pushac        ;
  57. 0031 | 03 000001 | jne(1)        ; 0033
  58. 0032 | 07 000050 | jmp(000050)   ; 0039
  59. 0033 | 0D 000000 | pop           ;
  60. 0034 | 01 000000 | add           ;
  61. 0035 | 05 000000 | jel(0)        ; 0037
  62. 0036 | 09 012721 | call(012721)  ; 0004
  63. 0037 | 09 015526 | call(015526)  ; 0024
  64. 0038 | 07 000058 | jmp(000058)   ; 003C
  65. 0039 | 08 000050 | label(000050) ;
  66. 003A | 0D 000000 | pop           ;
  67. 003B | 10 000000 | pushi(0)      ;
  68. 003C | 08 000058 | label(000058) ;
  69. 003D | 09 015526 | call(015526)  ; 0024
  70. 003E | 0B 000000 | ret           ;
 eXeL@B —› Вопросы новичков —› Сохранить изображение

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS