Re[5]: Почему не запускается самодельный ехе-шник?
От: qwerpoi  
Дата: 19.12.13 13:57
Оценка:
Здравствуйте, EreTIk, Вы писали:

Q>>Прога заработала после того, как я выровнял имена импортируемых функций на 2, т.е. добавил код, который дописывает нолик, если длинна имени не четная. Т.е. по факту, после MessageBoxA был добавлен один нулевой байт.

ETI>Проведем небольшой эксперимент. Поправим a.exe в a_new.exe как указал я:
ETI>
>>fc /b a.exe a_new.exe
ETI>Comparing files a.exe and A_NEW.EXE
ETI>00000046: 03 02
ETI>00000080: 08 05
ETI>00000088: 08 05
ETI>

ETI>Пробуем — exe'шник успешно запускается


Да наверное дело было в количестве секций. Просто я был уверен, что пробовал и так и так. Запутался, извиняюсь.
Действительно, нечетная длина имени импортируемой функции не препятствует запуску, а неверное(увеличенное на 1) число секций приводит к ошибке(я тоже провел эксперимент).

Если интересно, скажу из каких соображений завысил число секций: некогда до этого тоже делал ехе-файл вручную, и он не работал, если число секций не увеличить на одну. Это я помню точно(иначе с чего бы мне увеличивать число секций, не с потолка же?).
Только вот я тогда, вроде, делал файл без секций, код шел после заголовка, и число секций из таких соображений сначала ставил 0, и не работало. Но это я не помню точно.

Спасибо большое, а то так и тупил бы дальше
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.