2010-03-11 18 views
1

Je dois construire des versions OEM d'une bibliothèque COM (DLL). Est-ce que quelqu'un connaît un outil (hacker de ressources) qui peut remplacer certains de mes guids d'interface après le temps de construction?Modifier les guids d'interface de COM DLL (ressource patch)

Je veux juste construire et tester une DLL et générer les versions OEM par la suite.

Répondre

1

Aucun outil que je connais. Vous pouvez utiliser un processus de construction automatisé pour construire des dll avec des GUID différents.

+0

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

0

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.