• Добро пожаловать на WYLEK.ru. Пожалуйста, войдите или зарегистрируйтесь.
 
98 гостей, 3 пользователей

avatar_NNK_RTR

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

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

« предыдущая - следующая »

NNK_RTRАвтор темы

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

Спасибо.

Krig

Ответ #1 : 21 марта 2019, 23:09:46 #1 Последнее редактирование: 21 марта 2019, 23:12:58 от Krig
Описание РЕ-формата (для начинающих) : Войдите на сайт для перехода по ссылке
Описание загрузчика : Войдите на сайт для перехода по ссылке


Krig

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

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

 

NNK_RTRАвтор темы

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

Krig

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

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

NNK_RTRАвтор темы

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

Krig

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

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



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


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 - пользуйтесь.

С наилучшими пожеланиями.  

Krig

Ответ #9 : 24 марта 2019, 16:39:53 #9 Последнее редактирование: 24 марта 2019, 16:43:14 от Krig
Во зараза, а на виртуалке она не работает, требует лицензию и при нажатии на кнопку старта ничего не происходит! Шайтан однако.  

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. Что-то стремно эту версию у себя запускать.  

Krig

Ответ #13 : 01 апреля 2019, 03:23:30 #13
Один из вариантов обхода.
Извините, вам запрещён просмотр содержимого спойлеров.

NNK_RTRАвтор темы

Ответ #14 : 01 апреля 2019, 10:09:59 #14
Сейчас я пробую в первую очередь снять защиту от трассировки, от бряков и в целом от отладчика. Иначе не получается отследить логику программы. Сложность в том, что в файле сохранить изменения нельзя, приходится при каждом запуске изменять код в отладчике. Заметил, что аппаратную контрольную точку программа не замечает (или делает вид), пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки
Признаюсь, моя активность значительно снизилась, чему способствует изучение методов защиты программ...

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

    TinyPortal

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

    Simple Machines

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

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