Кстати, insolor, я хотел уточнить по поводу работы патча. Он при замене меняет только полностью совпадающие строки или частично тоже?
Просто в обоих случаях свои особенности.
В первом, если патч ищет строки между 0x00, а затем заменяет их при полном совпадении, строка во входящем тексте должна полностью совпадать. А это сейчас не везде так. Взять хотя бы последние изменения в переводе на вики: строки атаки случайно сгенерированных существ. Строки вынесены не совсем полностью, там в начале строки отсутствует символ табуляции, который есть в исполняемом файле. Да и бугимены явно не с полной строкой. Так что, по-видимому, используется второй случай.
Во втором случае, при частичном совпадении, имеет большое значение порядок замены строк. Например, если у нас во внешний файл не вынесена строка полностью, а в нём уже есть частичные совпадения. Возьмём абстрактный пример: строка "word1 word2 word3", во внешнем файле попадаются "|word1 word2|слово1 слово2|" и "|word2 word3|слово2 слово3|". При разном порядке прохождения замен мы можем получить "слово1 слово2 word3" и "word1 слово2 слово3". Чем определяется этот порядок? Порядком следования замен во внешнем файле (trans.txt)?