Remplacer les ID d'interface dans le fichier binaire compilé n'est pas si simple. Ils sont généralement codés en dur et le compilateur les alloue en stockage statique et ils peuvent même avoir une liaison statique, vous aurez donc du mal à les trouver. Rappelez-vous comment QueryInterface()
est généralement mis en œuvre?
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
}
Il est ne se limite pas à l'édition des ressources, vous devez patcher réellement les données statiques de l'image binaire et probablement aucun outil ne sera en mesure de le faire automatiquement pour vous.
Puisque vous avez la source complète, votre meilleur pari est de simplement reconstruire le binaire.
C'est ce que nous faisons pour le moment. Mais à travers cela, nous devons construire et tester chaque version OEM - au lieu d'une seule! – ndee