eXeL@B —› Вопросы новичков —› Где начало оверлея |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 08 мая 2016 15:38 · Поправил: Kuzya69 · Личное сообщение · #1 Есть жертва - ехе-файл с оверлеем. Но в этом файле, на диске, за границей последней секции располагается сначала таблица сертификатов, а уже следом идет этот оверлей (добавленный байт-код). Я пересобрал длл которую грузит программа-жертва. Длл должна вычитывать оверлей из запускаемого файла. И по таблице, которая хранится в оверлее программы-жертвы, модифицировать код программы-жертвы. То-есть длл не меняется, а оверлей я могу писать разный под свои нужды в саму программу любой версии. Вопрос. Всегда-ли таблица сертификатов является заключетельными байтами ехе-файла (имеется ввиду файл, только что скомпилированный, пока еще не приписали байты нового оверлея)? Или какой правильный порядок поиска начала оверлея в файле? |
|
Создано: 09 мая 2016 02:23 · Личное сообщение · #2 |
|
Создано: 09 мая 2016 15:12 · Личное сообщение · #3 dosprog пишет: Так это и есть последняя секция, описанная заголовке. С точки зрения смещений в файле если, то они не обязаны идти по порядку. Но если имелось в виду в образе - то да, последняя секция ориентируется по VirtualAddress. DenCoder пишет: Ну может чего подзабыл, завтра посмотрю Вообще говоря, интересно... на моём компе файл маппится полностью вне зависимости от манипуляций с размерами секций... Раньше был других представлений... Добавлено спустя 22 минуты VT-x пишет: Да неужели? ) Вот для вычисления фактической длины eof это и используется в последствии. 1) Зачем писать Code:
То же самое, что и Code:
Понятно, что если a == b, то a не трогаем, поскольку подразумевается, что оно должно быть равно тому, чему приравниваем, если оно не равно... Познакомьтесь, вот так вот и пишут индусы 2) первоначального приравнивания d не было! И случая else не было!... Но это мелочи... без которых вылетит на ассерте ваша прога! VT-x пишет: фактической длины eof Для вычисления фактической длины eof... Я не знаю, что Вы имели в виду, но фактическую длину файла можно узнать функцией или GetFileSize(), или SetFilePointer(hFile, 0, NULL, FILE_END), ну или уже функцией fstat(), что как раз из той области, откуда, видимо, Вы и вспомнили про eof. eof - это End Of File - конец файла, в линукс-совместимых функциях чтение файла производится, пока функция eof(fd) не вернёт 1 ----- IZ.RU |
<< . 1 . 2 . |
eXeL@B —› Вопросы новичков —› Где начало оверлея |