Gardez à l'esprit que ce qui est généralement pas possible. Il existe plusieurs façons de stocker des chaînes dans un programme C++ natif. Les chaînes de ressources sont le cas facile, comme le mentionne correctement aman.tur.
Les chaînes du segment de données, d'autre part, sont généralement indexées directement. Dans ce cas, si vous modifiez leur décalage de début (car la longueur d'une chaîne précédente change), vous devrez trouver toutes les façons d'exprimer ce décalage, ce qui est pratiquement impossible. En outre, lorsque les chaînes dans le DataTase deviennent plus longues, vous pouvez exécuter sur des tampons fixes. Et si la collection totale de chaînes augmente, les données qui suivent peuvent également se déplacer.
Il est également tout à fait possible que de petites chaînes (par exemple jusqu'à 4 caractères, y compris \ 0) soient tronquées dans le segment de code. Changer cela pourrait être un défi encore plus grand, car vous êtes encore moins susceptible de modifier la longueur de la chaîne.
Veuillez noter que, par conception, cela invalidera toutes les signatures numériques.
comme je l'ai commenté à msalters, juste des ressources sont nécessaires. Le problème est, je ne suis pas fan de faire cela "à la main" mais dans ma propre application C# pour automatiser certaines choses. Alors, quel est le début à l'analyseur PE? – Uwe
PE/COFF est le format exe des programmes Windows. Si vous voulez juste modifier les ressources, je ne pense pas que vous aurez besoin d'un analyseur. Vous pouvez commencer par utiliser LoadLibraryEx() avec les indicateurs LOAD_LIBRARY_AS_IMAGE_RESOURCE | LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE pour charger l'exe afin d'utiliser la ressource et de la rendre accessible en écriture. Puis commencez à regarder LoadString(). Ce sont tous des appels d'API natifs. Je ne sais pas vraiment comment tu le fais en C#. –