eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


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

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

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

 eXeL@B —› Программирование —› Редактирование lib-файла
Посл.ответ Сообщение

Ранг: 18.7 (новичок)
Статус: Участник

Создано: 13 марта 2016 11:08 New!
Цитата · Личное сообщение · #1

Есть скомпилированный lib-файл, без исходников, но с хидерами, в нём имеется функция

Code:
  1. DWORD ProcessData(LPBYTE lpData,DWORD dwSize);


Надо ее переопределить на свою. При вызове из своего кода проблем нет, просто вызываем другую и оригинальная ProcessData не линкуется. Но проблема в том, что она вызывается другими функциями внутри lib.

Подскажите, есть ли возможность отредактировать lib, чтобы переопределить вызов функцию на свою?

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

Создано: 13 марта 2016 11:44 · Поправил: 13 марта 2016 11:50 kunix New!
Цитата · Личное сообщение · #2

Я бы предложил слинковаться с оригинальной либой, а потом в процессе исполнения получить адрес ProcessData и перехватить ее.

Ранг: 18.7 (новичок)
Статус: Участник

Создано: 13 марта 2016 11:51 New!
Цитата · Личное сообщение · #3

kunix пишет:
Я бы предложил слинковаться с оригинальной либой, получить адрес ProcessData, и перехватить ее

Хук - это понятно, я бы хотел чтобы в статику ничего из старого кода не попадало.

Например, как-то отредактировать lib-файл, переименовав функцию, чтобы он не находил ее внутри себя, а линкер подставлял ему адрес моей реализации новой функции.

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

Создано: 13 марта 2016 18:41 New!
Цитата · Личное сообщение · #4

был в давние времена у мелкомягких библиотекарь lib.exe и он вроде позволял добавлять/убирать объектники из либ


Ранг: 436.8 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 13 марта 2016 19:27 · Поправил: 13 марта 2016 19:36 plutos New!
Цитата · Личное сообщение · #5

Дак librarian (lib.exe) и сейчас есть, жив-здоров.
https://msdn.microsoft.com/en-us/library/0xb6w1f8.aspx

Ранг: 565.4 (!)
Статус: Модератор

Создано: 13 марта 2016 19:28 New!
Цитата · Личное сообщение · #6

GroundHog
Если ссылки на эту функцию идут исключительно из других объектников либы, то разбираешь либу на объектники утилью lib, затем переименовываешь функцию на ProcessDatB, пишешь свою ProcessData, компилишь объектник и собираешь либу обратно.
Чуть большая проблема если рефы на эту функцию идут также внутри того же объектника. Прийдется либо полностью его поменять, либо патчить оригинальную функцию чтобы она вызывала твою новую.
 eXeL@B —› Программирование —› Редактирование lib-файла

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

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