eXeLab
eXeL@B DVD 2017 !

Курс видеоуроков КРЭКЕРСТВО + ПРОГРАММИРОВАНИЕ 2017
(актуальность: апрель 2017)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100 свежих книг и статей

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

Нанимаем реверс-инженеров на постоянной основе
Русский / Russian English / Английский

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

 eXeL@B —› Основной форум —› Как программистом задается адрес хранения данных потока (Thread)
Посл.ответ Сообщение
vnekrilov

Ранг: 320.0 (мудрец)
Статус: Участник

Создано: 6 марта 2017 19:06 New!
· Личное сообщение · #1

Вопрос к специалистам в области программирования... Столкнулся с одной проблемой. Суть ее такова. Программа упакована протектором Obsidium. При ее загрузке в отладчик (OllyDbg) создается поток, который хранит свои данные по определенному адресу. После распаковки программы, и загрузке распакованной программы в отладчик, создается поток, который хранит свои данные уже по другому адресу (смещение в 800 байтов). Все это было бы ничего, но, при запуске распакованной программы, она записывает данные в область хранения данных потока, и, естественно, их повреждает. В результате чего программа заваливается. Причем адреса хранения данных потока в упакованной и распакованной программах - постоянные, и не меняются от многократной перезагрузки программы. Отсюда вопрос - как можно указать нужный адрес хранения данных потока в распакованной программе, который должен совпадать с адресом хранения данных потока в упакованной программе?
Bronco


Ранг: 170.5 (ветеран)
Статус: Участник

Создано: 6 марта 2017 20:02 New!
· Личное сообщение · #2

vnekrilov пишет:
она записывает данные в область хранения данных потока, и, естественно, их повреждает.

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


Ранг: 514.9 (!)
Статус: Модератор
Research & Development

Создано: 6 марта 2017 20:04 New!
· Личное сообщение · #3

Программа использует функции TlsAlloc, TlsFree, TlsGetValue, TlsSetValue?

Вот схема работы TLS (Thread Local Storage):


Проверь директорию TLS и указатели на данные.

| Сообщение посчитали полезным: vnekrilov, hlmadip, parfetka

difexacaw

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

Создано: 7 марта 2017 10:57 New!
· Личное сообщение · #4

vnekrilov

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

> Причем адреса хранения данных потока в упакованной и распакованной программах - постоянные

Не могут они быть постоянные, если только это не смещение(RVA) в модуле. Сам же модуль может релоцироваться, если конечно имеет релоки и не откючен ASLR.
 eXeL@B —› Основной форум —› Как программистом задается адрес хранения данных потока (Thread)
Эта тема закрыта. Ответы больше не принимаются.

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

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