![]() |
|
![]() ![]() ![]() |
|
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
Помогите .Очень нравится программировать и изучать машинный код.
Прочитав топики и поэкспереминтировав ,столкнулся с такой проблемой. После ручной правки exe-ка он не запускается,проверял поля ,на валидность,но так и не понял в чем беда.Поля оригинала и подопытного одинаковы - а это же не верно,ведь я изменяю структуру файла... Научите на что обращать внимание,а то во всех описаниях PE-формата как говорят профи очень мудрены и туманны.Объясните если не трудно начинающему.Надеюсь на вашу отзывчивость... |
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
PoSoL ,помоги или другие.Очень нужна помощь.
А то живу в глуши и не у кого спросить. Занимаюсь ликбезом самостоятельно.... Пожалуйста!!!! |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
Во-первых, вооружитесь программой (30 К) для удобного просмотра структуры таких файлов...
|
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
Спасибо за совет, но программы с работой exe-ов есть полный комплект.
Знаю что такое Stub, PE или COFF заголовок,секции,читал что есть импорт и экспорт. Есть доки по описанию формата, искал подобное освещение на Wasm.ru и Cracklab.ru,но там все лишь ограничиваются тем ,что нажми то получишь это....Моя же цель понять ,что и где поправить в заголовке (когда я вручную в Hex-редакторе в exe-ке убираю ненужные нули например) так чтоб потом exe-к работал... Прошу помощи!!!!!!!!!!!!!!!! |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
Конкретно где меняете и что (по возможности, давайте файл)
|
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
Вот мой бинарник. Безобиднее чем "hello world!" и не придумаешь.
А как спецы пишут в нем все равно очень много воды - ненужных нулей,так вот как вручную их выкроить ,так чтоб до минимума и файл работал???? Это сообщение отредактировал(а) 4udo - 21.4.2006, 18:52 Присоединённый файл ( Кол-во скачиваний: 22 ) ![]() |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
File Alignment поставьте 0x10 вместо 0x200 (вроде, оно такое по умолчанию)...
Ключ такой есть у линкера Правда, тогда в Win9x не запустится... Это сообщение отредактировал(а) SergeCpp - 21.4.2006, 22:17 |
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
Спасибо за совет!!!!!!!!!
А как по поводу нулей???????????? И ручной липосакции файла??????....... ![]() ![]() ![]() Это сообщение отредактировал(а) 4udo - 21.4.2006, 20:36 |
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
Модернизированный бинарник - выставил File Alignment в 0x10.
На XP стартует ,ну и размер меньше,но до мастерства далеко. Жир,жир,жир.... Это сообщение отредактировал(а) 4udo - 21.4.2006, 22:46 Присоединённый файл ( Кол-во скачиваний: 19 ) ![]() |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
Нету жира...
Нули — в DOS-заголовке, в IMAGE_NT_HEADERS и в SECTION_HEADER .text |
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
SergeCpp , спасибо за внимание.
Один только ты мной заинтересовался. Подскажи, как от этих нулей избавится — в DOS-заголовке, в IMAGE_NT_HEADERS и в SECTION_HEADER .text или это не реально?????????? |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
Эти заголовки имеют фиксированный размер и все нули в них имеют смысл...
То есть, от них не избавиться... Объединяя секции (.text, .data, .rdata, etc.) можно добиться уменьшения размера... Но это достигается за счет уменьшения чего-нибудь другого... (закон сохраниния...) Например, .text не доступна для записи... чтобы объединить её с .data, нужно разрешить запись в полученную общую секцию... что не есть хорошо... и так далее... |
|||
|
||||
4udo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 13.4.2006 Где: Казахстан Репутация: нет Всего: -1 |
SergeCpp ,объясни тогда вот это.
Это сообщение отредактировал(а) 4udo - 23.4.2006, 12:52 Присоединённый файл ( Кол-во скачиваний: 32 ) ![]() |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 1 Всего: 124 |
1. IMAGE_DOS_HEADER — не используется как таковой — на его месте (с адреса 4) находится IMAGE_NT_HEADERS (смысл в такой экономии весьма призрачен...)
2. IMAGE_FILE_HEADER неверны поля Time Dite Stamp, Pointer to Symbol Table, Number of Symbols (на их месте находится имя импортируемой функции) 3. IMAGE_OPTIONAL_HEADER — аналогичного типа "трюки" В целом, не вижу смысла в такого рода "оптимизации"... |
|||
|
||||
Heremum |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 7.4.2006 Репутация: нет Всего: нет |
4udo
Если тебя интересует написание самой короткой проги Hello World, то она весит 22 байта, 13 из которых - (это его улыбка ![]() Главное, в *.exe файлах - адрес смещения для начала работы с программой. Далее тебе надо просто смотреть, чтобы команды процесора были корректно отредактированны. Вот гляди, друг сердешный: была у тебя команда, которая ссылалась на адрес строки, а ты подправил пару байта другой команды, которая стояла перед той строкой, на которую ссылалась первая команда, следовательно - адрес строки изменился, ты про это не подумал, а первая команда так и ломиться к строке по адресу, который уже изменился, следовательно всё начинает галить, писюкать и мышкать. Тут надо много концентрации. Вообще, я наконец-то нашёл человека, которого тоже интересует машинный код. Сколько я не искал никого "нормального" не отыскал. Скажи, друг мой: каким образом ты изучаешь машинные коды? Добыл коды преобразований для процессоров? Как они генерируются, всмысле. Или разбираешь сам по кускам, компилируя маленькие программы? Я вторым способом изучалнекоторое время. Про первый так почти ничего и не нашёл. Только в книге друконов по разработке компиляторов есть об этом упоминание и немного находил в 5-ом издании о принципах ЭВМ. Не больше. Это сообщение отредактировал(а) Heremum - 23.4.2006, 18:56 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |