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

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


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

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

Выпуск № 526
от 19.04.2003, 20:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3008
Отправлено ответов: 8868
Активность: 294.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


От Администратора



Здравствуйте!
Буду краток, т.к. время поджимает.
Разместил архив основной рассылки "Ассемблер? Это просто! Учимся программировать". Ссылка на самораспаковывающийся архив на головной странице RusFAQ.ru!
Качайте!!!


Калашников О.А. (admin@rusfaq.ru)


 Список экспертов, ответы которых опубликованы в данном выпуске

K0dMaster
Статус: Доверительный
Общий рейтинг: 123.44
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.61
URL: Программирование
[Подробней >>]
Hangatyr
Статус: Начальный
Общий рейтинг: 125
[Подробней >>]
 
Maverick
Статус: Профессиональный
Общий рейтинг: 135.81
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.01
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 141.2
[Подробней >>]
 
Tigran K. Kalaidjian
Статус: Доверительный
Общий рейтинг: 114.04
[Подробней >>]
Joy
Статус: Опытный
Общий рейтинг: 125.11
[Подробней >>]
akul
Статус: Опытный
Общий рейтинг: 114.47
Телефон: +6019-6416245
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.3
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
Knignick
Статус: Начальный
Общий рейтинг: 122.85
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.07
[Подробней >>]
 
Paulkan
Статус: Начальный
Общий рейтинг: 111.11
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 115.21
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 2979. Hi! У меня есть зашифрованная программа Win32 (чем - незнаю, но UnAsPack не помогает). Это вирус. Пр... (ответов: 3)
Вопрос № 2980. Уважаемые! Нужен словарь русского языка в эл.виде. На каждой строчке - одно слово. Ну, типа как для ... (ответов: 1)
Вопрос № 2981. Люди помогите сделать такую вещь!! Мне надо в регистр АХ в С++ 3.11 записать элемент массива void ma... (ответов: 3)
Вопрос № 2982. Доброе время суто !! Хочу разъяснить ситуацию.Я пробовал подключить вместо джойстика восемь тумблеро... (ответов: 2)
Вопрос № 2983. Как из ассеблера вызвать функцию на си используя TASM и TURBO C? Желательно пример вызова небиблиоте... (ответов: 1)
Вопрос № 2984. Где мне найти файлы - приложения к рассылкам Калашникова по ассемблеру под ДОС (резидент,вирус и т.д... (ответов: 2)
Вопрос № 2986. Добрый день, уважаемые эксперты. У меня вопрос про Compatible DC. При запуске программы я получаю DC... (ответов: 2)
Вопрос № 2987. Здравствуйте! Научите меня писать VxD. Или хотя-бы пните в нужную сторону(доки, мануалы - e-mail, сс... (ответов: 5)
Вопрос № 2988. Уважаемые эксперты возможно ли вывести символ в любую часть экрана не используя прерываний... (ответов: 11)

Вопросов: 9, ответов: 30


 Вопрос № 2979

Hi! У меня есть зашифрованная программа Win32 (чем - незнаю, но UnAsPack не помогает). Это вирус. При запуске он делает свои грязные дела и сразу выходит. Мне нужно перехватить ВСЕ его данные сразу после того, как он себя расшифрует. (Я делаю это с помощью ArtMoney - ищу неизвестное значение для этого приложения, а потом сохраняю дамп в файл.) Но я не могу этого сделать, так как он выходит сразу. Как не дать ему завершить себя? Может быть его можно как-нибудь замедлить. А может есть хороший отладчик для пошагового выполнения Win32-файлов! Помогите, пожалуйста!


Приложение:


Вопрос отправлен: 13.04.2003, 18:42
Отправитель: Kevin David Mitnick (alu6@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Доброе время суток, Kevin David Mitnick!


Ответ отправлен: 14.04.2003, 15:08
Отправитель: K0dMaster


Отвечает Bob Johnson

Приветствую Вас, Kevin David Mitnick!
1. Используй softice - в нем поставишь break на какую-либо функцию, которая вызывается вируском в начале работы (после распаковки). Затем можешь его сохранять и все такое.
2. Ты вот постоянно даешь ссылку на свою страницу в вопросах так или иначе, хотя никакого отношения к их сути она не имеет. Пойми, наша рассылка создавалась не в рекламных целях, не смотря на то даже, что твоя страница посвящена бесплатным программам. Лучше используй обмен баннерами или ссылками с другими программистами или организациями.

Ответ отправлен: 14.04.2003, 12:16
Отправитель: Bob Johnson


Отвечает Hangatyr

Добрый день, Kevin David Mitnick!
А SoftIce пробовал? По-моему, как раз то, что надо.


Ответ отправлен: 13.04.2003, 23:16
Отправитель: Hangatyr


 Вопрос № 2980

Уважаемые! Нужен словарь русского языка в эл.виде. На каждой строчке - одно слово. Ну, типа как для брутфорсера. Если знаете где взять, подскажите... А если есть, кидайте на _inbox_@mail.ru



Вопрос отправлен: 14.04.2003, 07:35
Отправитель: Ищущий словарь

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Приветствую Вас, Ищущий словарь!
Если это тебе для подбора паролей, то это не выход.
Тут тебе нужно список часто используемых слов, можешь сам использовать, можешь найти готовый. Я натыкался в инете на такие.


Ответ отправлен: 15.04.2003, 05:11
Отправитель: Maverick


 Вопрос № 2981

Люди помогите сделать такую вещь!! Мне надо в регистр АХ в С++ 3.11 записать элемент массива
void main()
{
int mas[5]={0,1,2,3,4};
_asm{
mov cx,3
mov ax,mas[cx] //Вот здесь мне пишет ошибку что сделать надо??
}
}



Вопрос отправлен: 14.04.2003, 14:22
Отправитель: Lamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Здравствуйте, Lamer!
Использовать другой регистр. Для 16-разрядных инструкций в качестве индексных могут использовать ся только регистры BX, BP, DI и SI, причем регистр BP по умолчанию использует сегментный регистр SS и вообще его трогать не рекомендуется.

Ответ отправлен: 14.04.2003, 14:56
Отправитель: Ayl


Отвечает masquer

Добрый день, Lamer!
Размер указывай,
mov ax, word ptr mas[cx]

Ответ отправлен: 14.04.2003, 14:47
Отправитель: masquer


Отвечает Bob Johnson

Здравствуйте, Lamer!
1. Адресоваться по cx нельзя. Можно только по bx, si, di (и еще bp, но его лучше не трогай).
2. У тебя элемент массива имеет размер 2 байта, значит для получения адреса нужно номер умножить на 2. Этого процессор сам не может. Можешь сделать так:
mov bx, 3
...
shl bx, 1
mov ax, [offset mas + bx]


Ответ отправлен: 15.04.2003, 03:01
Отправитель: Bob Johnson


 Вопрос № 2982

Доброе время суто !!
Хочу разъяснить ситуацию.Я пробовал подключить вместо джойстика восемь тумблеров.Делал это так:
2,7,10,14 ноги через тумблера на землю
3,6,11,13 ноги через тумблера на 5 вольт
Прога которая этим заведует в приложении.При подключении 3,6,11,13 ног переменная iy2 все время равна 0.И еще хотелось узнать как сдернуть состояние 4-7 битов по отдельности т.е.чтобы их значения не валились в кучу,переменную А.


Приложение:


Вопрос отправлен: 14.04.2003, 17:58
Отправитель: anon (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Здравствуйте, anon!
Ну про подключение ничего не скажу - не знаю, а по второму вопросу - очень просто:


Приложение:

Ответ отправлен: 14.04.2003, 18:41
Отправитель: Ayl


Отвечает Tigran K. Kalaidjian

Доброе время суток, anon!
Не знаю... У меня все нормально. Буквально сегодня пробовал закоротить все соотв. контакты(2->земля, 7->земля и пр.). Получил нормальные и адекватные результаты. А нулей никогда не бывает(хе-хе! даже при том, что сопротивление при закорачивании нулевое =), только если сопротивление замеряемого резистора больше 1МоМ (воздух, например)Т.е. у тебя, видимо, что-то со звуковухой, ибо у меня всё в норме... Прога, которой тестировал в приложении.

Приложение:

Ответ отправлен: 16.04.2003, 16:13
Отправитель: Tigran K. Kalaidjian


 Вопрос № 2983

Как из ассеблера вызвать функцию на си используя TASM и TURBO C? Желательно пример вызова небиблиотечной функции с исходниками на асме и си.



Вопрос отправлен: 14.04.2003, 22:27
Отправитель: Sergey

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Добрый день, Sergey!
Начнем с того, что если твоя небиблиотечная функция вызывает какую-либо библиотечную функцию, то на нее распространяются требования, предназначенные для библиотечных функций.
А требования эти прежде всего включают в себя необходимость включения первым модулем начального кода Си, а именно одну из библиотек (c0t, c0s, c0c, c0m, c0l, c0h) в зависимости от модели памяти.
Имена функции в Си должны быть объявлены как extern "C", в ассемблере - через extrn и с ведущим знаком подчеркивания.
Небольшой пример см. в Приложении

Приложение:

Ответ отправлен: 15.04.2003, 11:07
Отправитель: Ayl


 Вопрос № 2984

Где мне найти файлы - приложения к рассылкам Калашникова по ассемблеру под ДОС (резидент,вирус и т.д)Например,resid15.rar Пожалуста киньте на мыло.



Вопрос отправлен: 14.04.2003, 22:56
Отправитель: paulkan (paulkan@hotmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Joy

Добрый день, paulkan!
А ты не пробывал взять с сайта Боба Джонсона? Там есть уроки, приложения и даже первые выпуски этой рассылки!

Ответ отправлен: 15.04.2003, 11:16
Отправитель: Joy


Отвечает Bob Johnson

Добрый день, paulkan!
У меня на странице есть какие-то файлы приложения к рассылки Олега Калашникова. Посмотри: bobjohnson.nm.ru


Ответ отправлен: 15.04.2003, 03:03
Отправитель: Bob Johnson


 Вопрос № 2986

Добрый день, уважаемые эксперты.
У меня вопрос про Compatible DC.
При запуске программы я получаю DC окна, затем создаю два Compatible DC функцией CreateCompatibleDC(). Затем в течение жизни моей программы я юзаю эти Compatible DC (один для выбора битмапов для BitBlt() во второй Compatible DC, другой - для формирования общего изображения для последующего копирования в окно) и убиваю их при завершении программы. Да, со вторым Compatible DC соответственно связан еще Compatible Bitmap, который я так же создаю при инициализации программы. Так вот вопрос - при изменении настроек экрана (разрешение, битность и т.д.) эти Compatible DC станут невалидными или же нет??? В MSDN по этому поводу я ничего не нашел, к сожалению.
Заранее большое спасибо. Надеюсь на вашу квалифицированную помощь.



Вопрос отправлен: 15.04.2003, 11:48
Отправитель: NizeG (nizeg@beep.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает akul

Доброе время суток, NizeG!
Конечно он станет неверным, поскольку поверхность экрана создается по новому при смене настроек. Так что придется создавать по новому а иначе глюки.

Ответ отправлен: 17.04.2003, 19:36
Отправитель: akul


Отвечает Bob Johnson

Приветствую Вас, NizeG!
Предположу, что они останутся в том же формате, в котором были. Т.е. когда ты их создавал они были в формате экрана, потом ты формат экрана сменил, а они остались в прежнем. Работать будет все также... Но когда происходит смена формата экрана, windows рассылает сообщение WM_DISPLAYCHANGE, так что в его обработчике можешь заново их пересоздать.
И самое интересное - я тестировал работу с графикой и выяснил, что в принципе на современных видеоадаптерах, не обязательно создавать в памяти битмапы в формате как на экране, т.к. даже если форматы совпадать не будут, операция копирования пройдет быстро. Т.е. ты можешь просто всегда буфер держать 16-ти или 32-х разрядным (в зависимости от качества графики, которая необходима твоему приложению).


Ответ отправлен: 16.04.2003, 18:18
Отправитель: Bob Johnson


 Вопрос № 2987

Здравствуйте!
Научите меня писать VxD. Или хотя-бы пните в нужную сторону(доки, мануалы - e-mail, ссылки и.т.д.и.т.п.).
Спасибо.
P.S. Исходники тоже подойдут (ASM, С(++))



Вопрос отправлен: 15.04.2003, 19:05
Отправитель: Илья (b.i@date.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает K0dMaster

Добрый день, Илья!
Читай книжку Пирогова программирование под виндувс на ассемблере и зайди сюды www.wasm.ru

Ответ отправлен: 16.04.2003, 09:41
Отправитель: K0dMaster


Отвечает Bob Johnson

Доброе время суток, Илья!
Опа... Скачай с моей страницы доку, как написать vxd на ассемблере. Там же есть пример. bobjohnson.nm.ru


Ответ отправлен: 16.04.2003, 18:18
Отправитель: Bob Johnson


Отвечает Gibbel

Здравствуйте, Илья!
DDK

Ответ отправлен: 16.04.2003, 13:09
Отправитель: Gibbel


Отвечает Maverick

Приветствую Вас, Илья!
На wasm.ru есть хорошие уроки на эту тему от Iczelion'a
По моему его туториалы считаются лучшими.


Ответ отправлен: 17.04.2003, 05:30
Отправитель: Maverick


Отвечает masquer

Приветствую Вас, Илья!
Исходников в соответствующем DDK просто немеряно. Хотя имхо vxd сейчас менее актуальны, чем WDM и KMD драйвера. Хотя в образовательных целях...

Ответ отправлен: 17.04.2003, 12:35
Отправитель: masquer


 Вопрос № 2988

Уважаемые эксперты возможно ли вывести символ в любую часть экрана не используя прерываний



Вопрос отправлен: 15.04.2003, 20:38
Отправитель: Dim-A

[Следующий вопрос >>] [Список вопросов]

Отвечает Knignick

Доброе время суток, Dim-A!
Да. Просто использовать прямую запись в видеопамять.
по сегментному адресу B800h. Начиная с этого адреса расположены двухбайтовые поля. 1 байт - символ, 1 - атрибут(цвет).


Приложение:

Ответ отправлен: 15.04.2003, 22:16
Отправитель: Knignick


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Dim-A!
Без проблем ! Выводишь напрямую - по адресу B800:xxxx. Прога для примера в приложении - выводит дату выпуска BIOS

Приложение:

Ответ отправлен: 16.04.2003, 15:54
Отправитель: Tigran K. Kalaidjian


Отвечает K0dMaster

Доброе время суток, Dim-A!
Напрямую в видео память через порты вода вывода

Ответ отправлен: 16.04.2003, 09:43
Отправитель: K0dMaster


Отвечает vitya

Добрый день, Dim-A!
Да. Можно. (в текстовом режиме 25x80, для остальных смотри доки).
Начиная с адреса B800h один байт отводится под символ, второй байт под его аттрибут. Так что - если ты запишешь по адресу a = B800h + 160 * y + 2 * x символ, а по адресу [а + 1] аттрибут символа, то он будет там, где надо.

Ответ отправлен: 16.04.2003, 08:28
Отправитель: vitya


Отвечает Paulkan

Здравствуйте, Dim-A!
Это можно сделать прямым отображением в видеобуфер,
который лежит по адресу B800:0000h(верхний левый угол)и т.д
Следует учитывать, что после каждого символа (занимающего байт)лежит байт с атрибуттами текста.

Приложение:

Ответ отправлен: 15.04.2003, 22:51
Отправитель: Paulkan


Отвечает akul

Доброе время суток, Dim-A!
Если под досом, то можно записаться в видеопамять. В текстовом режиме буфер экрана начинается по адресу 0xB8000 там 2 байта на символ: первый код символа, а второй цвет. И вообще имеет смысл почитать литературу про программирование видеоадаптеров: говорят помогает.

Ответ отправлен: 17.04.2003, 19:34
Отправитель: akul


Отвечает Ayl

Добрый день, Dim-A!
Надеюсь, что под ДОС'ом и в текстовом режиме. Да, конечно можно. Допустим, что у тебя режим 80*25 (устанавливается с помощью команд:
mov ax, 3
int 10h
).
Тогда базовый адрес видеопамяти равен B800:0. В этом режиме тебе доступны 4 видеостраницы, каждая размером 4000 байт (2000 байт для символов и 2000 для атрибутов). Страницы располагаются по смещениям, кратным 4К относительно базового сегмента B800.
На каждый символ отводится 2 байта - по четному адресу располагается код символа, по нечетному - атрибут. Атрибут символа отвечает за цвета символа и фона, а также за мерцание символа или повышенную яркость фона в зависимости от установки режима.
Символы в видеопамяти располагаются построчно без разрывов (т.е. после символа в позиции (0, 79) сразу же следует символ в позиции (1, 0)). Соответственно, смещение в видеосегменте для символа в позиции (x, y) определяется как 160*y+2*x, а для его атрибута - 160*y+2*x+1.
Байт атрибута кодируется следующим образом: bffficcc, где b - бит мерцания/интенсивности фона (0 - нет мерцания/нормальная интенсивность, 1 - есть мерцание/повышенная интенсивность), fff - 3 бита цвета фона, i - бит повышенной интенсивности символа, ccc - 3 бита цвета символа.
Теперь пример. Пусть мы хотим вывести символ 'A' в позицию (39, 12) на синем фоне белым цветом. Тогда атрибут равен 1fh.


Приложение:

Ответ отправлен: 16.04.2003, 13:18
Отправитель: Ayl


Отвечает Joy

Приветствую Вас, Dim-A!
Легко! Нужно использовать прямой доступ к видеобуферу (я так понимаю, что речь идет о текстовом режиме). Очень много инфы по этой теме, есть также примеры в рассылке О. Калашникова. Простой примерчик смотри в приложении.

Приложение:

Ответ отправлен: 16.04.2003, 07:30
Отправитель: Joy


Отвечает ASMодей

Здравствуйте, Dim-A!
Если видеорежим текстовый, то можно - просто запиши в память
по соответствующему адресу ASCII код символа, а в следующий байт
атрибуты символа.


Ответ отправлен: 16.04.2003, 16:00
Отправитель: ASMодей


Отвечает Bob Johnson

Доброе время суток, Dim-A!
Да!
push 0b800h
pop es
mov byte ptr es:[Y*160 + X*2], symbol


Ответ отправлен: 16.04.2003, 23:09
Отправитель: Bob Johnson


Отвечает Maverick

Здравствуйте, Dim-A!
Конечно можно, прямым выводом в текстовый видеобуфер.
Его сегментный адрес 0b800h.
Для описания символа требуется 2 байта(символ, атрибут)
Т.е. видеобуфер, это линейный массив.

Ответ отправлен: 17.04.2003, 05:30
Отправитель: Maverick



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (39)
C / C++ (30)
Perl (8)
Delphi (14)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (12)
PHP (5)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (22)
"Железо" (24)
Поиск информации (12)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (12)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (5)
КоАП (6)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное