Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 287
от 14.11.2005, 19:00

Администратор:Калашников О.А.
В рассылке:Подписчиков: 267, Экспертов: 25
В номере:Вопросов: 3, Ответов: 10


Вопрос № 29187: Привет всем ! У меня вопрос такой, кто-нибуть знает состав exe файла ? Я в одной книге видел такую таблицу там показан заголовок ехе его длинна и т.д ! вот если не трудно кто что знает об этом или знает сайтик про это можь скините на мыло пл...
Вопрос № 29262: Написал программу которая копирует данне из одного файла в другой. Подскажите как сделать, чтобы можно было копироват фаил больше 64к, например 50mb... Код программы ниже...
Вопрос № 29265: Здравствуйте уважаемые эксперты, у меня такой вопрос: - Почему при просмотре через debug, таблица вект.прерываний разная в разных OS (у ХР - одна, вин98 - другая, MSDOS - третья)(в особенности меня интересует прерывание BIOS int 09h...

Вопрос № 29.187
Привет всем !
У меня вопрос такой, кто-нибуть знает состав exe файла ?
Я в одной книге видел такую таблицу там показан заголовок ехе его длинна и т.д ! вот если не трудно кто что знает об этом или знает сайтик про это можь скините на мыло плиз !
Ps: Мне нужно именно структура а не создание ехе на различных языках ! Если можно поподробнее !
Можно кидать сюда ----> Prgeorgiy.ru@mail.ru

Отправлен: 08.11.2005, 19:27
Вопрос задал: STK (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, STK!
Просвещайся
http://lex-lamer.narod.ru/more/filem010.html
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 8-ой класс)
Отправлен: 08.11.2005, 22:06
Оценка за ответ: 4

Отвечает: Юра Устинов
Здравствуйте, STK!
В тех файлах которые я вам отправил рассказывается про написание вирусов под дос и win32, там есть и структура дос-exe и pe файлов.
---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 09.11.2005, 05:03
Оценка за ответ: 5

Отвечает: Sager
Здравствуйте, STK!
На сайте wasm.ru есть в путеводителе по написанию вирусов и вообще там много чего еще есть, еще там вроде бы должен быть PEFORMAT описанный Hard Wisdom(если тебе нужен заголовок exe для win32, если для доса, то тоже в путеводители вирусов дял дос), в общем поройся по сайту...
Ответ отправил: Sager (статус: Студент)
Отправлен: 09.11.2005, 18:09
Оценка за ответ: 3


Вопрос № 29.262
Написал программу которая копирует данне из одного файла в другой.
Подскажите как сделать, чтобы можно было копироват фаил больше 64к, например 50mb... Код программы ниже

Приложение:

Отправлен: 09.11.2005, 18:24
Вопрос задал: Gwest (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Gwest!
Так и читай, пока читается, и записуй...(пока читается не нуль байт)
Буфер желательно побольше, скажем 32к, быстрее будет
По большому счету, надо бы еще анализировать флаг С после каждой файловой операции.

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: 8-ой класс)
Отправлен: 09.11.2005, 19:59
Оценка за ответ: 4
Комментарий оценки:
спасибо

Отвечает: Евгений Иванов
Здравствуйте, Gwest!
выдели буфер и открывай последовательно кусок за куском.

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 09.11.2005, 20:07

Отвечает: Юра Устинов
Здравствуйте, Gwest!
Вообще-то вы можете копировать данные из одного в другой кусками.Допустим по 50 кбайт 1000 раз.
Удачи!


---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 10.11.2005, 07:15
Оценка за ответ: 4

Отвечает: Ayl
Здравствуйте, Gwest!

По частям. То есть делаешь все ровно также. Запрашиваешь из исходного файла количество байт, равное размеру буфера. Записываешь из буфера в новый файл столько байт, сколько прочитали. После этого, если число прочитанных байт соответствует запрошенному, повторяешь цикл Чтение-Запись. Если не соответствует - значит, достигли конца файла и надо прекращать копирование - закрывать файлы и т.д.

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 10.11.2005, 12:24
Оценка за ответ: 5


Вопрос № 29.265
Здравствуйте уважаемые эксперты, у меня такой вопрос:

- Почему при просмотре через debug, таблица вект.прерываний разная
в разных OS (у ХР - одна, вин98 - другая, MSDOS - третья)(в особенности меня
интересует прерывание BIOS int 09h по адресу 0:24h ???

- В резидентной программе (под ХР или вин98) возникает ошибка вот тут:

....
....
mov ax,2509h ;заменить в таюлице прерываний адрес процедуры int 09h
mov dx,offset _Obrabot ;на адрес _Obrab
int 21h
....
....
ну просто не хочет заменять и всё! Выдает ошидку что в чистом дОСе, что
под любыми виндами
( на прямую тоже не заменяется, типа:
mov es:[24h],offset _Obrab
mov es:[26h],cs
Отправлен: 09.11.2005, 18:54
Вопрос задал: Петров Максим Викторович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Петров Максим Викторович!
1) Да потому что показывается таблица прерываний, заполненной каждой ОСью по-своему. При MSDOS BIOSовские прерывания показывают на BIOS (если не запущены резиденты, перехватывающие их). В Винде же похоже все вектора прерывания показывают на собственный код.
2)Раз показывает, что ошибка, значит так и есть :)
Больше без кода добавить нечего...Только одно предположение - может DS не туда показывает?
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 8-ой класс)
Отправлен: 09.11.2005, 20:58

Отвечает: Юра Устинов
Здравствуйте, Петров Максим Викторович!
Попробуйте всё ли из перечисленных шагов вы выполняли, потому что таким же образом перехватывали 1c интерупт, а он как и 9 от внешнего ус-ва.
; скопировать адрес предыдущего обработчика в переменную old_handler
mov ax,3587h ; АН = 35h, AL = номер прерывания
int 21h ; функция DOS: считать
; адрес обработчика прерывания
mov word ptr old_handler,bx ; возвратить
; смещение в ВХ
mov word ptr old_handler+2,es ; и сегментный
; адрес в ES,
; установить наш обработчик
mov ax,2587h ; АН = 25h, AL = номер прерывания
mov dx,seg int_handler ; сегментный адрес
mov ds,dx ; в DS
mov dx,offset int_handler ; смещение в DX
int 21h ; функция DOS: установить
; обработчик
; (не забывайте, что ES изменился после вызова функции 35h!)
[...]
; восстановить предыдущий обработчик
lds dx,old_handler ; сегментный адрес в DS и смещение в DX
mov ax,2587h ; АН = 25h, AL = номер прерывания
int 21h ; установить обработчик


---------
Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 5-ый класс)
Отправлен: 10.11.2005, 07:16

Отвечает: Ayl
Здравствуйте, Петров Максим Викторович!

Потому что разная.
Под MSDOS, которая работает в реальном режиме, все честно - это таблица векторов реального режима.
Под виндами все сложнее. Т.к. они работают в защищенном режиме, то для каждой DOS-задачи выделяется свое адресное пространство со своей таблицей векторов прерываний.

Насчет второй части вопроса - код в студию! Потому что в таком виде ответить на него невозможно. По крайней мере у меня никогда не возникало проблем при переопределении 9-го прерывания, что под чистым DOSом, что при эмуляции.

А при изменении вектора через функцию MSDOS ты регистр DS правильно устанавливаешь? А при прямой замене ты прерывания отключаешь на момент изменения таблицы? Что за ошибка возникает?

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 10.11.2005, 12:34


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное