eXeLab
eXeL@B DVD 2017 !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: август 2O17)
Свежие инструменты, новые видеоуроки!

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

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

Русский / Russian English / Английский

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

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

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

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

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

| Сообщение посчитали полезным: baduba

Bronco


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

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

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

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

| Сообщение посчитали полезным: baduba

Jupiter


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

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

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

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


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

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

difexacaw

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

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

vnekrilov

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

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

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

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

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