Объективный эквивалент для Windows? (Взломать за столкновение символов lib)

Я ищу Windows эквивалент инструмента GNU objcopy. Я ищу для реализации предложение размещено здесь к моей проблеме, однако мне нужно сделать это кросс-платформенный (Windows, Linux и Mac). Я не смог найти ответ на мой друг Google, поэтому, возможно, решение должно быть реализовано по-другому. Спасибо!

6

Решение

Часть стандартного инструментария MSVC: LIB /EXTRACT извлекает копию объекта; LIB /REMOVE затем удаляет его из библиотеки.

Я думаю LIB /DEF /EXPORT:externalName=internalName также будет полезно для вас, когда вы положите объектный файл обратно в.

4

Другие решения

Если вы не возражаете против взлома, замена всех экземпляров конфликтующего имени другим именем одинаковой длины в одном из файлов библиотеки библиотек может работать. Делайте это на свой страх и риск.

пример

// a.h
void doSomething();

// b.h
void doSomething();

Мы можем заменить doSomething от doSomethink

В Python это было бы что-то вроде:

f = open('b.lib',"rb")
s = f.read()
f.close()
s = s.replace(b'doSomething',b'doSomethink')
f = open('b.lib',"wb")
f.write(s)
f.close()

И измените заголовок b соответственно

// b.h
void doSomethink();

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

0

По вопросам рекламы [email protected]