Не хочется ковырять руками. Нужно удалить их из таблицы экспорта и удалить полностью их код, уменьшив размер.
Сложно и в общем случае работать не будет. Во-первых, не всегда можно точно на автомате определить точные границы функции. Как то встречал экспортируемую функцию, которая шарила часть своего тела с другой функцией Плюс релоки. Здесь же надо двигать функции для уменьшения размера. Во-вторых, встречается так, что, вроде как, релоков нет, но есть некий call на функцию, которая считает дельту, которая потом прибавляется к imm. Сдвинешь код - получишь exception. Где-то видел и точно помню, что это компилятор создавал.
bondyara Это пермутации задача. Для длл относительно проста(так как есть фиксапы) и очень эффективна. Передаёте список функций которые необходимо сохранить в двиг создающий граф, а затем компилите.
seniour_juggler в осевых дллях. часто и густо такое компилеры лепят. а если на цэпэпэ, то и классы объединить могет, если они в одном/проинклуденных файлах. Clerk если экспорт длли вызывается из самой длли, то он будет вызываться относительно. те релоков не будет. чтобы знать точно надо трасить всю дллю. в том числе и случаи с регистрами. или надеяться на авось. овчинка выделки не стоит.
кто ж спорит, что они удобны. но не на все они есть и приходится извращаться. (и это тоже не всегда проходит)
Двиг должен быть весьма продвинутым. Например, понимать, что идет вызов виртуальной функции, которую можно совсем случайно не распознать Свитчи также составляют некоторую проблему - для каждого компилятора есть свои нюансы с ними. Да и с исключениями не все так просто. Некоторые экспортируемые функции могут вызываться из нераспознанного блока запросто. Сложно решаемая задача в общем случае.