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

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

    Автор темы

    NNK_RTR

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

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

    Сообщений: 315

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

    Рейтинг: 5

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

    Баллы: 1976

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

    Лайков: 94

    Абсолютно ничего не понял, просто тупо выполнил действия указанные вами в сообщении "Один из вариантов обхода" и все заработало, в том числе и файл, несколько строк которого было переведено в Radialix.
    То есть, проблема снята.
    Большое спасибо!
    Ваша логика мне если понятна, то весьма смутно. Я полз другим путем. Пытался найти различия в результатах трассировки оригинальной и измененной программы. Для чего мне и потребовалось в первую очередь снять защиту от отладчика. Мой путь мог оказаться слишком длинным, возможно посмертным.
    Дальше не просьба и, даже, не пожелание, а так, просто надежда, что вы найдете время и у вас появится желание популярно описать ваши рассуждения и практические действия по снятию защиты.
    С уважением, Николай.
    4 апреля 2019 - 10:48 / #21
  2. Оффлайн

    Krig

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

    Знаток

    Сообщений: 188

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

    Рейтинг: 4

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

    Баллы: 56

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

    Лайков: 82

    Вряд ли вы дождетесь от меня вменяемого описания или рассуждения, потому как не умею облекать непрерывный поток мыслей в доступную для чтения и осмысливания форму. Вот элементарно, как начать? С чего? То что делаешь порою интуитивно, на словах может превратиться в очередной том "Война и Мир". Сложно все это, да и не нужно.

    Сообщение отредактировал 23 января 2023 - 19:42
    9 апреля 2019 - 00:56 / #22
  3. Оффлайн

    Автор темы

    NNK_RTR

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

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

    Сообщений: 315

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

    Рейтинг: 5

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

    Баллы: 1976

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

    Лайков: 94

    Я понимаю, невозможно облечь интуицию в письменную форму, разве что, одним словом -"догадался". Но практический опыт можно, еще легче: вопрос - ответ (мой опус - борцу с крякозябликами. Мне задавали раньше вопросы, а я потом объединил ответы в одной статье).
    Я не знаю, кто вы по образованию, я всю жизнь проработал прорабом-электриком, а радиотехника и потом компьютеры - чисто на любительском уровне. Поэтому я не всегда могу понять некоторые термины и сокращения, даже если они общеприняты (сам я, стараюсь не использовать сокращений и, если есть возможность, не использовать сленг и транскрипцию английских терминов).
    Я тоже пытался отследить работу программы после щелчка по кнопке "Старт" - сравнивал журналы трассировки. Бесполезное дело, сначала нужно снять защиту от отладчика.
    Теперь вопросы (это общие вопросы, не по конкретной программе):
    Цитата: Krig
    под ВМ также нельзя запустить


    Что такое ВМ?
    Чтобы найти код, отвечающий за щелчок по кнопке, я поставил контрольные точки на все команды RET, затем щелкал по кнопке и последовательно удалял их, пока не нашел нужный код. Как Вы нашли этот код?
    Как Вы считаете, может ли программа узнать об установленной контрольной точке до ее срабатывания (считаем, что программа пока не знает, что она загружена в отладчике)
    9 апреля 2019 - 10:13 / #23
  4. Оффлайн

    Krig

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

    Знаток

    Сообщений: 188

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

    Рейтинг: 4

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

    Баллы: 56

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

    Лайков: 82

    Цитата: NNK_RTR
    Чтобы найти код, отвечающий за щелчок по кнопке, я поставил контрольные точки на все команды RET, затем щелкал по кнопке и последовательно удалял их, пока не нашел нужный код.


    Ну, ничего так. Нормальные герои всегда идут в обход (из кф. Айболит-66). roll
    Главное результат.

    Цитата: NNK_RTR
    Как Вы нашли этот код?


    Если коротко: в любой программе каждый ресурс (иконки, диалоги, строки, элементы управления и т.п.) и событие (ввод текста, клики мышкой, нажатия кнопок и прочее) имеет идентификатор ID. Вот по такому идентификатору можно найти и отследить конкретный ресурс или событие.

    ID интересующего ресурса можно узнать:
    1) В любом редакторе ресурсов, если об этом позаботился программист и допускает язык программирования, на котором написана программа.
    2) С помощью оконных сканеров. Посмотрите статью "Программы для работы с окнами приложений", автор ManHunter.
    3) В отладчике по строке на элементе управления.

    ID событий - это сообщения, которые используются для создания и управления окнами, например WM_ACTIVATE, WM_CLOSE и т.д. (см. справочник по WinAPI). В зависимости от цели берется конкретное сообщение, а точнее его ID.

    В данном конкретном случае я смотрел сообщение WM_COMMAND. При его вызове смотрим, чтобы значение параметра wParam совпадало с идентификатором элемента управления, событие которого мы хотим отловить. Далее управление передается на системные функции и по возврату обратно в основной код программы мы будем находиться на участке в коде, который должен направить на исполняемую для данного ID элемента функцию. Как было сказано ранее, по адресу перехода в памяти записаны нули, поэтому ничего не происходит.
    9 апреля 2019 - 22:23 / #24
  5. Оффлайн

    Автор темы

    NNK_RTR

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

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

    Сообщений: 315

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

    Рейтинг: 5

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

    Баллы: 1976

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

    Лайков: 94

    Ну вот, все стало ясно. Вы прекрасно можете популярно разъяснять. (Не хуже Касперского, который мышъях. Это относительно статьи)
    Я пытался найти с помощью оконного шпиона идентификатор кнопки, но она на панели инструментов и шпион показывает идентификатор панели инструментов, тогда я попытался перехватить сообщение при щелчке мыши по панели инструментов. Видимо панель инструментов не обрабатывает это событие - ничего не вышло. Лет 10 - 15 назад я что-то встречал относительно поиска идентификаторов кнопок на панели инструментов. Тогда мне это было не нужно...
    10 апреля 2019 - 09:51 / #25
  6. Оффлайн

    Krig

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

    Знаток

    Сообщений: 188

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

    Рейтинг: 4

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

    Баллы: 56

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

    Лайков: 82

    Цитата: NNK_RTR
    Как Вы считаете, может ли программа узнать об установленной контрольной точке до ее срабатывания (считаем, что программа пока не знает, что она загружена в отладчике)


    Тут не имеет значения как считаю я, потому что это один из вариантов защиты приложения от работы под отладчиком. Что такое "контрольная точка"? Это исскуственная установка прерывания - INT3 (0xCC). Программа может проверять наиболее важные участки кода на наличие команд прервания, которых там быть не должно и попросту игнорировать их или делать что-то другое, в общем как пожелает программист.
    11 апреля 2019 - 00:36 / #26

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

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