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

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

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Команда сайта

    Сообщений: 315

    Создано тем: 53

    Рейтинг: 5

    Репа: (62|62|0)

    Баллы: 1976

    Был: 2024-10-25 08:37

    Лайков: 94

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

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

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


    Хм, действительно. Перевел только подсказку "Start" и программа больше не работает, точнее кнопка пуска. Нужно ломать...
    24 марта 2019 - 17:43 / #12
  3. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    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. Что-то стремно эту версию у себя запускать. biggrin_mini2
    Сообщение отредактировал 23 января 2023 - 19:41
    27 марта 2019 - 00:46 / #13
  4. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Один из вариантов обхода.
    Сообщение отредактировал 23 января 2023 - 19:41
    1 апреля 2019 - 03:23 / #14
  5. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Команда сайта

    Сообщений: 315

    Создано тем: 53

    Рейтинг: 5

    Репа: (62|62|0)

    Баллы: 1976

    Был: 2024-10-25 08:37

    Лайков: 94

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

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Цитата: NNK_RTR
    пытаюсь отследить разницу в выполнении программы при установке аппаратной и обычной контрольной точки


    Зачем? Берите мои данные патча и переводите. smile_mini
    Сильно не гонял, но после перевода строк в коде работает.

    Цитата: NNK_RTR
    моя активность значительно снизилась, чему способствует изучение методов защиты программ...


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

    1 апреля 2019 - 16:37 / #16
  7. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Команда сайта

    Сообщений: 315

    Создано тем: 53

    Рейтинг: 5

    Репа: (62|62|0)

    Баллы: 1976

    Был: 2024-10-25 08:37

    Лайков: 94

    Берите мои данные патча

    Хотите сказать, что если применить ваш патч и сохранить изменения на диске программа работает? Тогда подробней.

    Сохраняйте промежуточные патчи

    После сохранения изменений на диск программа не работает, поэтому я вынужден изменять код непосредственно в отладчике после загрузки приложения. Разумеется, я не делаю этого каждый раз вручную - использую многострочный ассемблер (плагин) для сохранения и восстановления изменений
    Цитата: Krig
    выявления отладчика


    С отладчиком программа борется весьма активно и разными способами. В том числе, непосредственно с ollydbg - выявляет его наличие.
    Проверяет время выполнения некоторого участка кода, проверяет флаг ловушки (TF), причем хитрым способом:
    PUSHFD
    ...
    POP EAX
    Причем первая команда может быть далеко от второй и в промежутке могут быть другие команды изменяющие стек или другие флаги, в том числе команды CALL и RET. Впечатление, что программист, кроме использования некоторых стандартных алгоритмов, "запутывал" программу вручную.
    Сообщение отредактировал NNK_RTR 2 апреля 2019 - 16:05
    2 апреля 2019 - 11:16 / #17
  8. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Цитата: NNK_RTR
    Тогда подробней.


    О чем?
    2 апреля 2019 - 22:45 / #18
  9. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Команда сайта

    Сообщений: 315

    Создано тем: 53

    Рейтинг: 5

    Репа: (62|62|0)

    Баллы: 1976

    Был: 2024-10-25 08:37

    Лайков: 94

    Цитата: Krig
    Один из вариантов обхода


    Стыдно конечно, но я никогда не встречался с подобной записью.
    Что это? Шестнадцатеричный дамп?
    Сообщение отредактировал NNK_RTR 3 апреля 2019 - 10:34
    3 апреля 2019 - 10:25 / #19
  10. Оффлайн

    Krig

    Звание: Бывалый

    Знаток

    Сообщений: 188

    Создано тем: 7

    Рейтинг: 4

    Репа: (86|86|0)

    Баллы: 56

    Был: 2023-03-14 15:26

    Лайков: 82

    Цитата: NNK_RTR
    Дальнейшая инфа на базе файла WinAPIOverride64.exe, версия 6.6.5, CRC32=8869C3AD (отладчик x64dbg, ОС Windows 10 x64).


    Это означает, что
    1) Операционная система у меня Windows 10, 64-разрядная.
    2) Разбирал я 64-разрядную версию 6.6.5 программы, а именно файл WinAPIOverride64.exe.
    3) Анализ выполняю в отладчике x64dbg.
    Цитата: NNK_RTR
    Что говорит символ @, я подумал, что это и есть смещение в файле


    Да, это смещение, но в файле WinAPIOverride64.exe, версия 6.6.5.
    Цитата: NNK_RTR
    Стыдно конечно, но я никогда не встречался с подобной записью.
    Что это? Шестнадцатеричный дамп?


    Да че, стыд? Я тоже не все знаю и понимаю, сижу порой на форумах, читаю, читаю и нифига не понимаю... Как там Ленин говорил: "Учится, учиться и еще раз учиться!"
    Да, это последовательность байт для поиска в шестнадцатеричном редакторе. Сверху исходная последовательность, а снизу показаны байты на замену. Символами || над исходной последовательностью указаны байты, которые при поиске в шестнадцатеричном редакторе нужно заменить на маску, т.е. вместо этих конкретных байт могут быть какие-угодно байты, поэтому при поиске их не нужно учитывать. Слева от байт замены написана версия файла программы. Открываете файл нужной разрядности. Вводите в поиске последовательность байт, находите её и заменяете соответствующие байты. Потом сохраняете изменения в файле. Если вам трудно или ничего не понятно, скажите, я вам предоставлю готовые файлы.
    4 апреля 2019 - 00:34 / #20

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1197
Всего сообщений
15762
Пользователей
18015
Новый участник
HELIUM