Сейчас на форуме: jinoweb (+4 невидимых)

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

Ранг: 20.2 (новичок), 16thx
Активность: 0.020.01
Статус: Участник

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

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

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


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

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



Ранг: 71.2 (постоянный), 33thx
Активность: 0.050.12
Статус: Участник

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

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



Ранг: 20.2 (новичок), 16thx
Активность: 0.020.01
Статус: Участник

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

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

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

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



Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

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

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

-----
...или ты работаешь хорошо, или ты работаешь много...





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

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

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

-----
Give me a HANDLE and I will move the Earth.




Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

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

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

-----
старый пень



 eXeL@B —› Программирование —› Редактирование lib-файла
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати