Замена идентификаторов интерфейса в скомпилированном двоичном файле не так просто. Они обычно жестко запрограммированы, и компилятор размещает их в статическом хранилище, и они могут даже иметь статическую связь, поэтому у вас будут проблемы с их поиском. Помните, как обычно реализуется QueryInterface()
?
HRESULT CImpl::QueryInterface( IID& iid, void** result )
{
if( iid == __uuidof( IInterfaceThisClassImplements1 ) ) {
*result = static_cast<IInterfaceThisClassImplements1*>( this );
} else {
///same stuff for other interfaces
}
//call AddRef() if succeeded
}
Это не ограничивается редактированием ресурсов, вы должны на самом деле исправлять статические данные двоичного изображения, и, вероятно, ни один инструмент не сможет сделать это автоматически для вас.
Поскольку у вас есть полный исходный код, лучше всего просто перестроить двоичный файл.