Я хочу изменить exe-шник в ходе выполнения моей проги (изменить одну из моих функций). В приципе это возможно через VirtualQuery, заменив аттрибут защиты страниц региона на PAGE_EXECUTE_READWRITE. Но записанное не сохраняется после завершения проги, хотя, по идее, должно (работает такой-же механизм как для проецируемых в память файлов). Кто подскажет что дельное, как это сделать, может можно другим способом?
Ясно море, не сохранится! Он же не просто проецируется, он распаковывается по страницам в зависимости от полей РЕ-заголовка. Единственный выход, находить местоположение ф-ции в файле (если она не экспортируется, то проще всего по сигнатуре, и там переписывать. При этом, новая ф-ция, не должна вылезать за пределы старой, иначе "выступающую часть" придется записывать в хвост кодового сегмента и передавать туда управление, не забыв при этом исправить размер сегмента в заголовке.