WYLEK.ru

avatar_NNK_RTR

Загрузчик приложений

Автор NNK_RTR, 20 марта 2019, 11:09:18

« WinAPIOverride | Multilizer »

0 Пользователи и 1 гость просматривают эту тему.

NNK_RTRАвтор темы

Может кто-то знает ссылку на статью, в которой подробно описывается работа загрузчика, или сам может пошагово описать работу загрузчика.
В настоящий момент мне интересно, каким образом в куче по умолчанию появляются данные из РЕ-заголовка, почему изменяются данные в образе секции данных файла (не смещение), выполняется ли какая то часть приложения в процессе работы загрузчика, откуда в блоке данных потока берутся данные (не случайные). Какую информацию вообще передает загрузчик приложению.
Вопрос возник в связи с попыткой снять защиту целостности файла. Может кто-то подскажет общий принцип защиты и способ ее снятия. Может существует общий алгоритм подсчета контрольной суммы в исполняемом файле, по которому можно обнаружить его. Используется ли при сравнении контрольная сумма, прописанная в РЕ-заголовке. И вообще, как можно больше толковой (не заумной) информации по этой теме.

Спасибо.
  •  

Krig

#1
Описание РЕ-формата (для начинающих) : Войдите на сайт для перехода по ссылке
Описание загрузчика : Войдите на сайт для перехода по ссылке

https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/corkami/PE101-v1RU.png
  •  

Krig

Цитата: NNK_RTRМожет существует общий алгоритм подсчета контрольной суммы в исполняемом файле, по которому можно обнаружить его.
Ищем в отладчике обращение к одной из этих функций. И далее:

Цитата: NNK_RTRМожет кто-то подскажет общий принцип защиты
1. Объект (файл, секция, ресурс) защиты проецируется в память.
2. Вычисляется его контрольная сумма, которая...
3. Сравнивается с эталонным значением.

 https://wylek.ru/Smileys/emoticons/roll.gif
  •  

NNK_RTRАвтор темы

Спасибо.
Первая статья мне попадалась, вторую прочитал (пока бегло) и сделал вывод, что загрузчик работает стандартно для всех приложений и в проверке целостности файла не участвует.
Наличие указанных вами функций я проверял раньше и сейчас еще раз проверил (в отладчике и APImonitor) - отсутствуют.
Изменение контрольной суммы в заголовке РЕ файла в шест. редакторе на работоспособность программы не влияют. Вывод - эти данные в проверке целостности не участвуют и сам заголовок не проверяется на предмет изменений.
Если внести изменения в код или данные программы в отладчике, непосредственно после загрузки, то программа работает нормально. Вывод, проверяется файл на диске, а не в памяти.
Я несколько дней потратил на поиск считывания из файла (ReadFile) данных и последующей обработке этих данных, надеясь найти место подсчета контрольной суммы - не нашел.
Вы натолкнули меня на мысль, что, возможно, файл повторно отображается в память (для проверки целостности используется второй образ файла).
Попробую обнаружить такие действия.
Еще раз спасибо за отклик. Если Вы в моих выводах видите ошибку, или у Вас есть другие идеи, сообщите пожалуйста.
  •  

Krig

Проверка цифровой подписи выполняется функцией Войдите на сайт для перехода по ссылке.

Посмотрите Войдите на сайт для перехода по ссылке по снятию CRC проверок (Урок #2). Возможно это ваш случай.
  •  

NNK_RTRАвтор темы

#5
Урок 3 дает пищу для размышлений.
Однако возникла "загвоздка". Программа перестает работать после установки контрольной точки, хотя скрытие отладчика включено. Я раньше встречал в этой программе типовую защиту от трассировки, но она должна срабатывать только в случае, если контрольная точка установлена вблизи кода защиты.
Я продолжу исследование, но на случай, если кому-то интересно, выкладываю программу
Может "ларчик открывается просто" и я не на тот "шпенек"  нажимаю.
Я перевел в шест. редакторе всего одну подсказку. Программа запускается, подсказка отображается правильно, больше того, при перемещении "Цели" в окно другой программы, эта программа сворачивается и разворачивается штатным образом, но после щелчка по кнопке "Старт" ничего не происходит.
  •  

Krig

Цитата: NNK_RTRЯ продолжу исследование, но на случай, если кому-то интересно, выкладываю программу
Вот с этого и нужно было начинать, а то полезли в какие-то дебри, которые тут вообще и никаким боком. По факту имеем неделю потерянного времени. Для вас, возможно, оно было плодотворным, но для участников форума - потрачено в пустую. Больше так не делайте.  https://wylek.ru/Smileys/emoticons/beee_mini.gif

WinAPIOverride
Мощнейший API-монитор, который позволяет анализировать, отслеживать, внедрять и заменять любые вызовы функций API для приложений Windows.

https://wylek.ru/proxy.php?request=http%3A%2F%2Fjacquelin.potier.free.fr%2Fwinapioverride32%2Fimg%2Fmain_big.jpg&hash=33e3bb078eb9276aa0062ef815d6ae337adc2e93

Инструмент очень специфичный и в локализации, по моему скромному мнению, абсолютно нее нуждается. Кто в теме, и так все понимает.
Зачем переводить то, что не будет востребовано пользователями?
У вас есть опыт по исследованию и дективации защит?
Нужно просить помощи специалистов на краклабе или руборде. При указании заявки обязательно укажите, что это для последующей локализации приложения.
У меня вообще нет никаких мыслей в какую сторону копать. Если глянуть крипто функции, используемые в программе, то такого разнообразия я еще никогда не встречал.

https://funkyimg.com/i/2SDQb.gif
  •  

NNK_RTRАвтор темы

Если Вы посмотрите другие переведенные мною программы, то заметите, что большая часть из них специфичны.
ЦитироватьКто в теме, и так все понимает
Согласен. Я сам себе задавал этот вопрос.
У меня на яндекс-диске включен счетчик скачивания файлов. ollydbg, например, приближается к 2000.
Цитироватьдля участников форума  время потрачено в пустую
Извините. Я воспринимаю все это, как хобби, не как работу, думал и все так...
Вы предлагаете вообще не задавать вопросов? По какому-то признаку сортировать вопросы? По какому? По моему, отвечать на вопросы дело абсолютно добровольное. Жалко Вам времени - не отвечайте.
Мне тоже поступает много вопросов, правда пишут в основном на почту.
Я не считаю, что напрасно трачу время, даже, если по вопросу вижу, что спрашивает дилетант. Наоборот, стараюсь, как можно популярней и подробней изложить ответ. Не на все вопросы я могу ответить, но все равно стараюсь помочь. Вот Вы, например, здорово помогли мне. Дали ссылки на уроки. Спасибо. Кстати, что это за приведенная Вами на скриншоте программа, мой PEiD_v0.95 находит несколько меньше. Дадите ссылочку?
Почему я не обращаюсь на специализированные форумы? Как правило там отвечают "через губу".
Этот сайт тем и хорош, что советуют по доброму.
Вопрос ко всем.
Вы считаете, что не нужно переводить "специфические" программы?
Вы считаете, что вопросы на этом сайте нужно ограничивать по некоторому принципу?
  •  

Krig

NNK_RTR, вы неправильно меня поняли (или я неправильно выразился). Я имел в виду, что сразу бы в первом сообщении написали: такая-то программа, такой-то сайт, такая-то ссылка скачать, такая-то проблема. Мы бы сразу вели предметный разговор и к этому моменту уже бы имели какой-то результат.

А переводить или не переводить - это сугубо личное дело каждого. Есть желание, то почему-бы и нет. Я озвучил собственную позицию.

Цитата: NNK_RTRКстати, что это за приведенная Вами на скриншоте программа, мой PEiD_v0.95 находит несколько меньше. Дадите ссылочку?
Это анализатор PE-файлов "Detect It Easy", ссылка - Войдите на сайт для перехода по ссылке. PEiD_v0.95 - безбожно устарел и очень-очень давно не развивается. Нет смысла им пользоваться. Опять же - по желанию. Нравится PEiD_v0.95 - пользуйтесь.

С наилучшими пожеланиями.  https://wylek.ru/Smileys/emoticons/agree.gif
  •  

Krig

#9
Во зараза, а на виртуалке она не работает, требует лицензию и при нажатии на кнопку старта ничего не происходит! Шайтан однако.  https://wylek.ru/Smileys/emoticons/wacko.gif
  •  

NNK_RTRАвтор темы

Спасибо, что разъяснили свою позицию, а то мне стало неловко, отнимаю у людей время.
Я то пенсионер, вот и развлекаюсь...
В последнее время мне стало не интересно просто переводить программу, важно, чтобы возникали сложности - крякозяблики, не исправимые без вмешательства в код программы и другое подобное. Собственно со съемом защиты кода я встречался, но там обошлось малой кровью.
Перевод строк в главном окне программы, если не превышать размер оригинала, работает нормально. Но если перевести подсказку к кнопкам "Start", "Pause", то подсказка отображается правильно, но приложение не работает.
Переводил непосредственно в шестнадцатеричном редакторе.
После перевода в Radialix приложение не работает. Если вручную добавить секцию в конец файла - приложение работает, но если изменить ссылку в отладчике или шест. редакторе , то приложение не работает. (любое изменение кода в файле приводит к не работоспособности, если изменить код в отладчике после загрузки, то все нормально)
  •  

Krig

Цитата: NNK_RTRНо если перевести подсказку к кнопкам "Start", "Pause", то подсказка отображается правильно, но приложение не работает.
Хм, действительно. Перевел только подсказку "Start" и программа больше не работает, точнее кнопка пуска. Нужно ломать...
  •  

Krig

NNK_RTR, возможно вам будет интересно следующее.

1. Программа создает копию самой себя в памяти.
2. Вычисляет хеш файла (или процесса ?).
3. Затем вычисляет хеш каждой секции в файле.
4. На базе полученных хешей (8 значений, релокации не учитываются) вычисляет общий хеш.
5. Сравнивает значения хешей файла и общего по секциям.
6. Если все ок, дешифрует и перезаписывает криптованный участок кода.
7. Наконец запускает свою модифицированную копию из памяти.

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

По виду хеши походят на MD5 (длина 32 символа), но это что-то другое или какая-то самопальная дурь.
Дальнейшая инфа на базе файла WinAPIOverride64.exe, версия 6.6.5, CRC32=8869C3AD (отладчик x64dbg, ОС Windows 10 x64).

Все хеши вычисляются в функции по адресу 00007FF68D7D0397 (@10F797).
Валидный хеш исполняемого файла - A357D3FECB10F60D36B54C61972245C0.

Валидные хеши секций:
.text  - 1DD072B0387A09061918D61696FE941B
.rdata - 3ABBD1F6128786AF3972E5D90192CB75
.data  - 30BDECB183524DF42B30C4D5C1353087
.pdata - 70D727DDA503543747FE22C857C76DA9
text   - 04ED7D5700CF692B0EBE80EAC3E4A356
data   - 502BB638BDA76A612230EAE1E62B70A6
.tls   - FE81C98ECB23F4A1068BBE63C0A71096
.rsrc  - F1775F9DEE9D57E2D070C94446A4F346

Общий хеш вычисляется по адресу 00007FF68D6E3C0B (@2300B) и далее идет сравнение хешей. Причем, если бряк по этому адресу включен, то общий хеш вычисляется неправильно (программа не работает). Если бряк отключить, то все ок (программа работает). Я первый раз с такой хренью сталкиваюсь и как это бороть без понятия. Может какие настройки в отладчике надо изменить?
Чтение криптованного участка кода происходит по адресу 00007FF68D6D02F0 (@F6F0).

Также все ключевые строки, по которым можно определить важные места в коде и начать раскручивать алго в обратном направлении, зашифрованы. Но это легко определяется, именно с них я начал ковыряние в коде. Строки представляют собой хрень вида: "9z2S#~_Pf57UEe7+Zi5R$&"lHlGTu!&wzv". И им подобные.

В общем поковыряйте пока, может кто еще подойдет. У меня пока больше никаких мыслей, беру отгулы.

На сайте версия программы 6.6.6. Что-то стремно эту версию у себя запускать.  https://wylek.ru/Smileys/emoticons/biggrin_mini2.gif
  •  

Krig

Один из вариантов обхода.
Показать / Скрыть текст
Показать / Скрыть текст
>>>      32-bit------------------------------
mask              || || ||
         8B 0D C8 78 44 00 33 C0 83 C1 04 89
         \/ \/             \/ \/ \/ \/ \/
6.6.5    90 A1             E9 95 FC FF FF
6.6.6                         A5
>>>      64-bit-----------------------------
mask              || || ||
         48 8B 05 51 23 1C 00 33 C9 48 89 48
         \/ \/ \/ \/ \/ \/ \/
6.6.5    E9 7B FC FF FF 90 90
6.6.6    --------//----------
[свернуть]
[свернуть]
  •  

NNK_RTRАвтор темы

Сейчас я пробую в первую очередь снять защиту от трассировки, от бряков и в целом от отладчика. Иначе не получается отследить логику программы. Сложность в том, что в файле сохранить изменения нельзя, приходится при каждом запуске изменять код в отладчике. Заметил, что аппаратную контрольную точку программа не замечает (или делает вид), пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки
Признаюсь, моя активность значительно снизилась, чему способствует изучение методов защиты программ...
  •  

* Ваши права на сайте

    Light Portal

  • Вы можете просматривать элементы портала
  • Вы не можете управлять блоками
  • Вы не можете управлять своими страницами
  • Вы не можете размещать свои страницы без модерации

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

Яндекс.Метрика Каталог@MAIL.RU - каталог ресурсов интернет