Стоит непростая задача заменить имя PDB-файла в собранном модуле.
На первый взгляд, все относительной просто, при использовании ImageHelp:
1. MapAndLoad
2. находим Debug Directory в Optional Headers (7 элемент).
3. Находим запись с IMAGE_DEBUG_TYPE_CODEVIEW, где расположена сигнатура "RSDS" и имя файла.
Но есть проблема. Если новое имя файла меньше по длине старого, то никаких проблем нет. А если оно больше? то как определить, сколько еще байт за именем текущего PDB-файла можно использовать?
Вариант "полностью разобрать PE-файл, исправить и собрать заново" лучше не предлагать, так как соответствие отладочных символов в PDB трудно гарантировать.