Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 451
от 23.12.2002, 16:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2240 Отправлено ответов: 6789 Активность: 303.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.19 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 148.53 [Подробней >>] |
Traish Статус: Доверительный Общий рейтинг: 130.14 [Подробней >>] |
St Статус: Опытный Общий рейтинг: 114.88 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 139.56 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
igorash Статус: Профессиональный Общий рейтинг: 114.95 Телефон: 8(903)251-86-01 [Подробней >>] |
Eugene Статус: Опытный Общий рейтинг: 108.61 URL: мощный файловый архив [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 127.71 URL: моя рассылка по Protected Mode [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.41 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Александр Статус: Доверительный Общий рейтинг: 113.07 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 119 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2189. Слушай ну ты приколист! А ты далеко живешь?, а то бы пивка с тобой дернули. И все же может ты DX7 и ... (ответов: 1)
Вопрос № 2190. Здравствуйте, Меня интересует как к готовой проге прицепить Dll, и запускать ее оттуда(из проги)?Воо... (ответов: 4)
Вопрос № 2191. Нет, не в начало. Как именно мне поступить? Да, добавить просто код в программу было бы лучше чем по... (ответов: 1)
Вопрос № 2193. [здрствйт вжм кспрт] Поясняю свой вопр. Ну не знает ли кто чего там с кодством видеоадаптеров,etc. в... (ответов: 3)
Вопрос № 2194. Уважаемые эксперты, нет ли у кого хороший доков по описанию прерывания int 1, а то мне самому нужно ... (ответов: 3)
Вопрос № 2195. Помогите плз написать прогу на асм'е: резидентная программа, которая будет отлавливать нажатие alt-c... (ответов: 1)
Вопрос № 2197. Уважаемые эксперты! Заранее извините, если такой вопрос уже был. Под windows2000 не хотят загружатьс... (ответов: 4)
Вопрос № 2198. Просьба к Maverick Пришли, пожалуйста, исходник чернобыля. Заранее благодарен, rams.... (ответов: 2)
Вопрос № 2199. Здравствуйте Bob Johnson! Чижик-пыжик на дисководе ?! Буду рад если пришлешь мне. Адрес: tepex at ho... (ответов: 1)
Вопрос № 2201. Здравствуйте. Вопрос по расылке №19 ""Ассемблер? Это просто! ...". В процедуре устано... (ответов: 5)
Вопросов: 10, ответов: 25
Вопрос № 2189 |
Слушай ну ты приколист!
А ты далеко живешь?, а то бы пивка с тобой дернули.
И все же может ты DX7 и DX8 путаешь в 7-ом все, что хочешь рисовать
можно а на 8-ом нет понятия даже переднего и заднего буфера
(Все через Device происходит).
Потому что Microsoft (как и производители Harda) не хотят,
что бы програмисты на прямую могли баловаться с поверхностями,
вообщем может и можно рисовать на текстурах, так только через шейдеры
(про них ни чего сказать не могу) а Rener хоть какой ставь, только
если нет функций типа DirectDrawSurface7::DrawLine (x1,y1,x2,y2), то
ты никак линию не нарисуешь.
Ну да ладно я вчера DirectX 9.0 (Beta 1) закачал так там библиотеки под
Net студию есть. Только вот они ни хрена к проекту не цепляются.
А ты Net еше не пробовал юзать?
Ладно давай гудбай.
Вопрос отправлен: 18.12.2002, 16:19
Отправитель: Nimnul (Nimnul@atrus.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Nimnul!
> А ты далеко живешь?, а то бы пивка с тобой дернули.
Не очень. Город Калуга, 180 км от Москвы.
> И все же может ты DX7 и DX8 путаешь
Не могу путать, потому что с 7 вообще не знаком.
> 8-ом нет понятия даже переднего и заднего буфера
Бросай, бросай курить... Когда ты создаешь девайс (IDirect3D8::CreateDevice) там есть ссылочка на структурку D3DPRESENT_PARAMETERS, в которой есть членs BackBufferCount, BackBufferFormat и т.д.
> могли баловаться с поверхностями,
вообщем может и можно рисовать на текстурах, так только через шейдеры
Вот снова говорю - конопля - это яд. Фунции рисования линии в таком виде, как ты написал нет. И не должно быть. Это все-таки Direct 3D а не Windows GDI. Чтобы нарисовать именно линию, необходимо вызвать IDirect3DDevice8::SetRenderState (D3DRS_FILLMODE, D3DFILL_WIREFRAME), после чего вместо треугольников тебе будут рисоваться линии (точнее - каркас). Можно даже точки заставить рисовать (причем, потом наложить на них текстуру!) А рисовать - стандартно: IDirect3DDevice8::DrawPrimitive и все такое.
Далее, если уж тебе захочется самому нарисовать что-то там, то указывай D3DPRESENTFLAG_LOCKABLE_BACKBUFFER - тогда сможешь и руками рисовать все, что захочешь. (но это, говорят, приводит к падению производительности, что неудивительно).
Про DX9 и .net ничего сказать не могу. Желания ставить С# пока нет. Возможно, оно вообще не будет работать без internet. Я не сторонник устанавливать все самое последнее (хотя, по словам знающих людей DirectX8 стал значительно проще, чем 7 - поэтому поставил себе DXSDK сразу, как только достал). И вот тебе советую - поставь DXSDK - там много примеров. В частности, для 3Д - там есть и зеркальное отражение летающего самолета в чайнике (Cube Env Mapping + Rendering into Textures - то что тебе нужно).
Ответ отправлен: 19.12.2002, 22:11
Отправитель: Bob Johnson
Вопрос № 2190 |
Здравствуйте,
Меня интересует как к готовой проге прицепить Dll, и запускать ее оттуда(из проги)?Вообще мне нужно дописать байт 200 кода, но места нет в проге.Всмысле она уже скомпилирована.
Извените если вопрос глупый.
Вопрос отправлен: 18.12.2002, 16:59
Отправитель: XShocK (xshock@exnet.kg)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, XShocK!
Вопрос не глупый. Во-первых, чтобы прицепить к программе библиотеку, необходимо править таблицу импорта (как это сделать, смотри формат РЕ). Дальше, если в секции кода места нет, создавай новую секцию, присвой ей только характеристики правильные (executabe, readable, etc). По вопросу непонятно, будет ли твой код первым получать управление, иначе патчить код оригинала прийдется, если первым, то OEP где-то запоминать нужно, чтобы вернуть управление оригиналу. Вкратце так...
Ответ отправлен: 18.12.2002, 17:11
Отправитель: masquer
Отвечает Traish
Добрый день, XShocK!
Тут просто так ничего не получится. Библиотеки загружаются функцией LoadLibrary. Если ты говоришь, что прога уже скомпилирована, то это тебе ничем не поможет. А добавить код в программу можно и без всяких библиотек - правишь PE - заголовок и дописываешь свой код. Так многие вирусы действуют.
Ответ отправлен: 18.12.2002, 17:25
Отправитель: Traish
Отвечает St
Привет, XShocK!
Обычно это делают загружая DLL с помощью LoadLibrary(Ex) и получением адреса функции с GetProcAddress (плюс название файла и название (или номер) функции в сегменте данных). Однако вам сначала нужно узнать использовались ли в в данной программе эти функции, тогда можно попытаться подключить свою функцию, в противном случае не знаю можно ли.
St
Ответ отправлен: 18.12.2002, 17:55
Отправитель: St
Отвечает Maverick
Здравствуйте, XShocK!
Насчет dll тебе уже наверное ответили, а почему бы не дизасмить прогу и не дописать то, что тебе надо.
Ответ отправлен: 20.12.2002, 05:02
Отправитель: Maverick
Вопрос № 2191 |
Нет, не в начало. Как именно мне поступить? Да, добавить просто код в программу было бы лучше чем подключать библиотеку. если не трудно можно поподробнее обьяснить как создать новую секцию? Мне нужно чтобы запускался этот код при какихто действиях программы.
Вопрос отправлен: 18.12.2002, 18:33
Отправитель: XShocK (xshock@exnet.kg)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, XShocK!
Для начала совет - бери описание формата РЕ, иначе мне слишком долго объяснять прийдется, и все равно не понятно будет.
В общем, смотришь внимательно на свой код, если ему нужна таблица импорта, отличная от оригинала, то прийдется вручную дописывать к импорту оригинала отсутствующие функции. Дальше в файле создаешь новую секцию в файле по смещению кратному File Alignment, указанному в заголовке по смещению +3Ch, дальше смотришь на какой виртуальный адрес посадить твой код, для этого просматриваешь все секции и там где будет последняя, смотришь ее виртуальный адрес, прибавляешь ее же виртуальный размер и получаешь свой виртуальный адрес.
Это все только пол-дела. Резюме - изучай формат РЕ, без него я тебе помочь не смогу...
Ответ отправлен: 19.12.2002, 10:58
Отправитель: masquer
Вопрос № 2193 |
[здрствйт вжм кспрт]
Поясняю свой вопр. Ну не знает ли кто чего там с кодством видеоадаптеров,etc. в наше 32-разрядное время с его технологиями(svga, или что у нас сейчас на дворе, графические процессоры...)?
В iНете все на english, а хуже того еще и на СиСи++!
[д свдн]
Вопрос отправлен: 18.12.2002, 19:16
Отправитель: DyC (dyc@nm.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, DyC!
Ну а что тебе хочется? На русском ассемблере, да еще чтобы тебе деньги давали за то, что ты это читал??? Ты уж учи с++. Почитать рекомендую (как, в прочем, и всем остальным, кто уже спрашивал) - DirectX 8 SDK. Там тоже все на english + C++, но зато есть примеры.
Ответ отправлен: 20.12.2002, 17:07
Отправитель: Bob Johnson
Отвечает igorash
Доброе время суток, DyC!
Есть такой стандарт как VESA, вот под него и пиши... или если в винде, то пиши для directx или opengl, а сишные примеры разбирай и переводи на асм, все равно там одни вызовы функций из длл ;)
Ответ отправлен: 18.12.2002, 19:39
Отправитель: igorash
Отвечает Eugene
Приветствую Вас, DyC!
Если уж чего-то хочешь писать профессионально, то придётся изучить английский язык. А язык С++ ничем особо от других языков высокого уровня не отличается. Тем более, что на нём довольно понятно, как выглядит код на асме. На делфи по-моему менее понятно.
Ответ отправлен: 19.12.2002, 09:21
Отправитель: Eugene
Вопрос № 2194 |
Уважаемые эксперты, нет ли у кого хороший доков по описанию прерывания int 1, а то мне самому нужно его написать, хотелось бы понять как ето работает. Если есть, пожалуйста кинте в мыло, буду очень признателен
Заранее спасибо
Вопрос отправлен: 18.12.2002, 20:59
Отправитель: Vladimir (petrov_v@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Traish
Доброе время суток, Vladimir!
Как может работать исключение #DB? Так же как и любое другое. Процессор может генерировать его по разным причинам - пошаговый режим (флаг TF), бряк на адрес в DRn, переключение задачи и т.д. Оно не получает кода ошибки. Сохраняются CS и EIP инструкции, вызвавшей исключение или следующей за ней (зависит от класса исключения). Все это довольно подробно описано в интеловской документации, которую некоторое время назад можно было заказать, сейчас -не знаю, кажется, что нельзя. Но она доступна в электронном виде (а конкретно - в виде мерзопакостного PDF-файла).
http://developer.intel.ru/download/design/mobile/MANUALS/
Ответ отправлен: 19.12.2002, 12:47
Отправитель: Traish
Отвечает Broken Sword
Приветствую Вас, Vladimir!
А чего тут описывать? Если флаг TF стоит, то int 1 генерируется аппаратно после каждой выполненной инструкции
Генерируется также при использовании отладочных регистров:
- при исполнении инструкции по заданному адресу
- при чтении/записи данных по заданному адресу
- при обращении к заданным портам в/в
- при переключении задач (если станет TF)
- при исполнении INT1
Используется отладчиками. При вызове в стеке сохраняются CS и EIP инструкции, вызвавшей прерывание (кроме случая с генерацией при исполнении инструкции - здесь в стек кладется адрес СЛЕДУЮЩЕЙ инструкции). Этого вполне достаточно, чтобы после передачи управления отладчику (делаешь что угодно) вернуться в программу.
Ответ отправлен: 19.12.2002, 18:50
Отправитель: Broken Sword
Отвечает Maverick
Добрый день, Vladimir!
Кое что есть, но в TechHelp описано лучше, погляди там.
Приложение:
Ответ отправлен: 20.12.2002, 05:03
Отправитель: Maverick
Вопрос № 2195 |
Помогите плз написать прогу на асм'е:
резидентная программа, которая будет отлавливать нажатие alt-ctrl-del и осуществлять блокировку рабочей станции до ввода пользователем пароля. Пароль сохранять (и изменять) как переменную окружения (см. команду set). Если соответствующая переменная (например, passwd) не определена, паролем считать пустую строку
Буду премного благодарен тому кто поможет.
Вопрос отправлен: 18.12.2002, 22:00
Отправитель: Hammer
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Hammer!
Тебе надо вешаться на прерывание 9 (как я понимаю, речь идет про ДОС), потому что оно позволит перехватить ctrl-alt-del. В его обработчике необходимо анализировать scan-codы, которые поступают от клавиатуры (in al, 60h в обработчике прерывания) и запоминать их. Потом обычно ты должен будешь вызвать старый обработчик, если только не отловил последнюю из 3 клавиш (иначе произойдет стандартная реакция на эти кнопки). Когда же будет вызвана именно эта комбинация - сбросишь контроллер клавиатуры и прерываний (см. вопрос № 2150 - там в вопросе это есть), после чего перейдешь в свой кусок программы, который будет использовать твой же обработчик 9 прерывания (вот тут старый вызывать не надо) для ввода пароля. Придется использовать scan-codы.
Ответ отправлен: 20.12.2002, 17:07
Отправитель: Bob Johnson
Вопрос № 2197 |
Уважаемые эксперты!
Заранее извините, если такой вопрос уже был.
Под windows2000 не хотят загружаться DLL-ки, сделанные на Масме. Под win98 все работает.
Как (или чем) можно откомпилировать DLL-ки, чтобы они работали под w2k?
Пользуюсь пакетом masm32v7.
Заранее благодарен.
Вопрос отправлен: 18.12.2002, 23:54
Отправитель: rust_br (rust_br@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, rust_br!
Как это не хотят??? Где они у тебя находятся, что конкретно значит "не хотят" - какая ошибка возникает. Проверь дизассемблером список экспортируемых функций.
Ответ отправлен: 20.12.2002, 17:08
Отправитель: Bob Johnson
Отвечает Traish
Доброе время суток, rust_br!
Все должно нормально грузится, иначе бы программы написанные под Win9x в w2k не работали бы. Я написал для проверки простейшую библиотеку - работает и в Win98, и в w2k. Код свой проверяй.
Ответ отправлен: 19.12.2002, 12:52
Отправитель: Traish
Отвечает Gibbel
Доброе время суток, rust_br!
Вероятно, ты что-то не так делаешь в самой DLLке... Кинь исходник, скажу где что не так...
Ответ отправлен: 19.12.2002, 10:40
Отправитель: Gibbel
Отвечает masquer
Здравствуйте, rust_br!
Исходник в студию. У меня все длл работают как в 98, так и в 2к. Следи за предохранением регистров.
Ответ отправлен: 19.12.2002, 10:42
Отправитель: masquer
Вопрос № 2198 |
Просьба к Maverick
Пришли, пожалуйста, исходник чернобыля.
Заранее благодарен, rams.
Вопрос отправлен: 19.12.2002, 09:37
Отправитель: rams (gultso5@belovo.net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Traish
Здравствуйте, rams!
Если уж ты отправил этот вопрос всем экспертам, я тебе тоже вышлю этот исходник.
Ответ отправлен: 19.12.2002, 12:20
Отправитель: Traish
Отвечает Maverick
Добрый день, rams!
Я же вроде тебе слал, или не тебе.
Я уж со счета сбился от заказов, зачем он вам ? :)
Лови!
Ответ отправлен: 20.12.2002, 05:03
Отправитель: Maverick
Вопрос № 2199 |
Здравствуйте Bob Johnson!
Чижик-пыжик на дисководе ?! Буду рад если пришлешь мне.
Адрес: tepex at hotbox.ru
Вопрос отправлен: 19.12.2002, 13:38
Отправитель: Tepex
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Tepex!
Да я бы и сам рад теперь его найти... Но боюсь, что уже файла такого нет. Он был около 600 байт, com, кажется. Хотя вот нашел. Так что высылаю.
Ответ отправлен: 20.12.2002, 17:10
Отправитель: Bob Johnson
Вопрос № 2201 |
Здравствуйте.
Вопрос по расылке №19 ""Ассемблер? Это просто! ...". В процедуре установки резидента (Set_resident) записано:
mov ax,2521h
mov dx,offset Int_21h_proc
int 3 ;"Повесим" нашу процедуру на 21h прерывание
Вопрос: как прерыванию 03h удается переопределить вектор пррывания 21h ? Т.к. эту операцию выполняет функия 25h пррывания 21h, то 03h-е к этому моменту уже должно откуда-то знать, что на него подвешено 21h. Что же там происходит?
Спасибо.
Приложение:
Вопрос отправлен: 19.12.2002, 16:02
Отправитель: Bayram Annanurov
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Bayram Annanurov!
Так у тебя же в примере адрес обработчика 21h заносится в вектор 3. Вот поэтому потом можно использовать 3 как 21h.
Ответ отправлен: 20.12.2002, 17:08
Отправитель: Bob Johnson
Отвечает Traish
Добрый день, Bayram Annanurov!
Дело в том, что установить вектор прерывания можно не только функцией 21h прерывания, но и прямой модификацией таблицы векторов прерываний, которая находится по адресу 0000:0000. Каждый вектор имеет длину 4 байта.
mov es:[3*4],bx
mov es:[3*4+2],ax
Этот код и устанавливает вектор 3 на старый обработчик 21h
Ответ отправлен: 19.12.2002, 18:39
Отправитель: Traish
Отвечает Александр
Приветствую Вас, Bayram Annanurov!
А те строчки которые не были прокомментированы естественно и не вызвали у тебя никаких вопросов.
mov es:[3*4],bx
mov es:[3*4+2],ax
В этих строчках собственно и производится установка обработчика 21-го прерывания на 3-е. Т.е. когда говорят int 3 реально вызывается оригинальный int 21.
Ответ отправлен: 20.12.2002, 11:31
Отправитель: Александр
Отвечает Maverick
Добрый день, Bayram Annanurov!
Хай, а ты погляди внимательнее:
mov es:[3*4],bx
mov es:[3*4+2],ax
Ну и перед этим, короче мы установили int 21h на 3h
Так мы наколим TD!
Ответ отправлен: 20.12.2002, 05:05
Отправитель: Maverick
Отвечает ASMодей
Приветствую Вас, Bayram Annanurov!
Вектор INT 03h ничего не переопределяет, это просто точка
останова программы (breakpoint) и используется он отладчиками.
Так что смотри дальше по тексту программы: там должен быть
вызов INT 21h.
Ответ отправлен: 20.12.2002, 06:03
Отправитель: ASMодей
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (39) C / C++ (30) Perl (5) Delphi (21) Pascal (23) Basic / VBA (10) Java / JavaScript (6) PHP (4) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (32) Windows NT/2000/XP (27) "Железо" (32) Поиск информации (14) |
Администратору Windows NT/2000/XP (10) Linux / Unix (14) |
Юристу Гражданское право (8) Семейное право (3) Трудовое право (5) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||