Такая ситуация - выловил в дикой природе троян-лоадер, и попытался разобраться в его работе. При загрузке в IDA выдается полная чушь в районе EP. Olly ругается "Bad or unknown format of 32-bit executable file C:\loader.exe". Посмотрев его Hiew'ов выяснил, что он имеет 3 секции доступных на запись, при снятии атрибута записи с любой секции выпадает с ошибкой записи в память, т.е. он себя распаковывает. PE-заголовки наложены друг на друга, EP равен 1018h. Имеется импорт с именем dll kernel32.dll и функциями LoadLibraryA и GetProcAddress. Нашел EP в файле - попытался проверить его правильность путем записи в это место опкода команды jmp $ - файл не запускается. Вставлял этот опкод рандомно в другие места - программа останавливается, как и должно быть. Видно что exe попался очень извращенный. Какие существуют способы анализа подобных файлов? Я понимаю, что для полной ясности нужно дизасмить виндовый загрузчик exe файлов, и смотреть как он себя ведет с подобными вещами, скоро я этим займусь. Может быть существуют способы разобраться попроще? Мне нужно узнать хотя-бы правильную entry point. Файл в аттаче, тестил на WinXP SP2 eng
Upack использует тот факт, что выравнивание файла/секций (File/Section Alignment) существует не только для того, чтобы занимать место в заголовке файла Подумай над этим. Опережая твой вопрос "а где бы об этом почитать": почитай доки по формату PE - найдёшь на данном сайте (васм.ру).
Удалось поймать обращение к entry point, поставив брэкпоинт на обращение к адресу памяти в Olly. Но в секции на диске в этом месте совсем другой код! Как он мог модифицироваться? Записи о TLS в таблице директории нет, как тогда код мог получить управление до перехода на EP? Или все же EP 00401018 неправильный?