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

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


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

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

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

Выпуск № 109
от 10.04.2005, 18:40

Администратор:Калашников О.А.
В номере:Вопросов: 7, Ответов: 16


Вопрос № 19237: Здравствуйте! Как в Win2000 поменять маску сети и IPадрес? Или хотя бы вызвать окошко свойств сети (лучше свойство IPпротокола)....
Вопрос № 19238: Эксперту Master135 (к вопросу 19137): А где взять эти модули? Спасибо. ...
Вопрос № 19240: Привет всем! Ответьте pls на следующие вопросы: 1. Как объявить функцию, чтобы она не вставляла в свое начало строки push ebp mov ebp,esp а в конце не ставила leave. 2. Как дизассемблировать драйвер? Спасибо за ...
Вопрос № 19242: Здраствуйте уважаемые эксперты!!! У меня такой вопрос. У меня есть MASM 6.11 Masm6.1 и TAsm но ни один не может из них прокомпилировать программу написанных на них хотя я думаю что это может быть что - то с асмом или с компом? Пожалуйста ...
Вопрос № 19250: Привет! Огромное спасибо всем экспертам за помощь в прошлых вопросах. Сегодня меня интересует DTA!!! Вобщем приведите пожалуйста примеры его использования. .
Вопрос № 19252: Подскажите, где можно почитать про работу с таймером.... А также как можно обрабатывать по таймеру вывод сообщения в видеобуфер......
Вопрос № 19253: У меня вопрос Евгению Иванову. Он мне в качестве примера программы вывода на экран с использованием таймера предложил свою программу. Но я так и не смог найти в огромной программе процедуры, отвечающие за вывод на экран.... Если не сложно, Евгений Ив...

Вопрос № 19237
Здравствуйте!
Как в Win2000 поменять маску сети и IPадрес? Или хотя бы вызвать окошко свойств сети (лучше свойство IPпротокола).
Отправлен: 04.04.2005, 18:30
Вопрос задал: DSota (статус: Студент)
Всего ответов отправлено: 2

Отвечает: John Freeman
Здравствуйте, DSota!
Вызвать - не копал, сразу не скажу, для смены IP - чисто WinExec
тк есть netsh
Ответ отправил: John Freeman (статус: Профессионал)
Отправлен: 04.04.2005, 19:03

Отвечает: Master135
Здравствуйте, DSota!
Пуск->подключения->выбираешь соотв. сетевой адаптер->свойства->TCP-IP(Двойной щелчек) и вводи....
Ответ отправил: Master135 (статус: 4-ый класс)
Отправлен: 05.04.2005, 01:22


Вопрос № 19238
Эксперту Master135 (к вопросу 19137):
А где взять эти модули?
Спасибо.
Отправлен: 04.04.2005, 18:58
Вопрос задал: Ling (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Master135
Здравствуйте, Ling!
Мое мыло Master1313@mail.ru-напиши и я вышлю их тебе, а вобще-то какие-то из этих файлов идут в дистрибутеве к Pascal. Или качай тут http://comsci.dsu.dp.ua/ftpdir/Developer/Turbo%20Pascal%207.1%20FINAL/BIN/
Ответ отправил: Master135 (статус: 4-ый класс)
Отправлен: 05.04.2005, 01:06


Вопрос № 19240
Привет всем!
Ответьте pls на следующие вопросы:
1. Как объявить функцию, чтобы она не
вставляла в свое начало строки
push ebp
mov ebp,esp
а в конце не ставила
leave.
2. Как дизассемблировать драйвер?
Спасибо за ответ.
Отправлен: 04.04.2005, 19:47
Вопрос задал: 1 (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: Dark_Lord
Здравствуйте, 1!
1)Надо отказаться от типа функций stdcall при объявлении модели памяти, а в случае нужды указывать тип функции при объявлении функции, тоесть:
.model flat ;не каких stdcall
....
.code
_start:
...
proc_simple proc
;в этой функции не будут генерироваться push ebp/mov ebp,esp/leave
...
proc_simple endp
...
proc_stdcall proc stdcall hFile:DWORD, hSomething:DWORD
LOCAL DaVar:DWORD
;сдесь будет сгенерированно push ebp/mov ebp,esp/sub esp,04h(add esp,-04h)/leave
;а ret превратится в ret 8
...
ret
proc_stdcall endp
end _start
2)В принципе, способ дизассемблирования драйвера НИЧЕМ не отличается от дизассемблирования любой другой программы, подойдёт даже ida. Конечно, другой вопрос это то, что драйвера могут иметь не PE-структуру и используют совсем другие используемые функции и т.п. Но здесь уже нужно знание работы и возможностей драйверов, а возможность перевести драйвера в код на ассе мблере доступна всегда :)

=== EI -=-
я бы поспорил насчёт модели.
модель по умолчанию ставится определённая, так что ставь, не ставь модель и тип языка, который использовать, а толку не будет. вся соль именно в объявлении подпрограммы! нужно обратить внимание на это.
=== EI -=-
Ответ отправил: Dark_Lord (статус: Профессионал)
Отправлен: 04.04.2005, 22:55

Отвечает: PavPS
Здравствуйте, 1!
2. На мой взгляд, лучше всего IdaPro. Но без SoftIce - слабовато... Если надо полностью изучить его работу - это надо сидеть над дизассемблингом долго, а потом прогонять его под SoftIce - ом. (из личного опыта: Ну и еще, неплохо иметь под рукой какой-нить драйвер и его исходники, а т.к. логика многих процедур драйвера схожа, то можно сразу и восстановить исходный код...)
Ответ отправил: PavPS (статус: 7-ой класс)
Отправлен: 04.04.2005, 23:32

Отвечает: Евгений Иванов
Здравствуйте, 1!
1. не используй директивы USES, ARG
а в masm не используй входящие параметры.

; Note: Turbo Assembler doesn't generate procedure prolog or epilog
; code in NOLANGUAGE procedures (except size of RET).
; The USES directive cannot be used in NOLANGUAGE procedures.
; The extended CALL syntax cannot be used to call NOLANGUAGE
; procedures, unless the language specifier is overridden, e.g.

То есть, используй при объявлении подпрограммы NOLANGUAGE:
proc MyProc NOLANGUAGE
ARG a1 :dword
LOCAL b1 :dword
но здесь сам ставь свой код, который устанавливает EBP...
а вот RET будет с цифиркой
но если не будешь использовать ARG , то и RET будет пустая.
ret
endp

2. IDA

Удачи!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 05.04.2005, 00:42


Вопрос № 19242
Здраствуйте уважаемые эксперты!!!
У меня такой вопрос.
У меня есть MASM 6.11 Masm6.1 и TAsm но ни один не может из них прокомпилировать программу написанных на них хотя я думаю что это может быть что - то с асмом или с компом?
Пожалуйста пришлите мне свой асм для программирования на дос (и может обясните почему у меня не запускается и можно ли исправить)и ещё я скачивал с wasm.ru и www.kalashnikof.ru и они же не работают!
Всем заранее спасибо!
Отправлен: 04.04.2005, 21:03
Вопрос задал: newinfo2005 (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: Вiктор
Здравствуйте, newinfo2005!
прислать новый асм не проблема, но скорее всего вы неверно работаете с вашими асм-ами, и они у вас рабочие.
я на 100% уверено что масм с kalashnikof.ru рабочий, да и на wasm.ru тоже нерабочих асм-ов не стали бы выкладывать.
на сайте kalashnikof.ru есть архив рассылки по изучению ассемблера, и в этом архиве есть инструкция как следует ассемблировать и линковать файлы. советую почитать.
укажите конкретно что вы делаете и что у вас не получается, Опишите подробно ваши действия.
ещё советую почитать архив рассылки - там уже неоднократно обсуждалась подобная тема.
удачи!
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 04.04.2005, 23:37

Отвечает: Стас
Здравствуйте, newinfo2005!
Какая операционка, какой компилятор, что хочешь скомпилить (COM/EXE/PE...)
Как компилишь, какие ошибки(сообщения) выскакивают?
Возможно, стоит посмотреть на исходник.
Дело в тебе, не в компиляторах 100%
Ответ отправил: Стас (статус: Практикант)
Отправлен: 05.04.2005, 00:49

Отвечает: Voituk Alexander
Здравствуйте, newinfo2005!
Скорее всего дело в программе. Я пользуюсь TASM уже лет 10 и проблем не было никогда.
Выложи исходник и ключи с какими ты компилишь.
Ответ отправил: Voituk Alexander (статус: 6-ой класс)
Отправлен: 05.04.2005, 12:19


Вопрос № 19250
Привет!
Огромное спасибо всем экспертам за помощь в прошлых вопросах.
Сегодня меня интересует DTA!!! Вобщем приведите пожалуйста примеры его
использования.
Отправлен: 04.04.2005, 22:53
Вопрос задал: ttt (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Евгений Иванов
Здравствуйте, ttt!
DTA используется для поиска файлов.
Вот небольшой кусочек из моей программы CODER.
Устанавливаю DTA на адрес 128, очищаю его, ищу файлы.
mov dx,128
mov di,dx
mov cx,64
xor ax,ax
rep stosw
mov ah,1Ah
int 33
call find_first
jc errfile
mov si,128+30
mov di,ofs full_name3
mov cx,13
rep movsb
jmp m42a
m22a:
call find_next
jc end_find
m42a:
proc find_first ;=4f
mov si,ofs name1
mov di,ofs full_name1
push si
mov cx,20
rep movsd
pop dx
mov ah,4Eh
mov cx,27h
int 33
jc m904f
m44f:
mov si,ofs full_name1
call get_one_name
mov di,128+30
xchg si,di
mov cx,13
rep movsb
mov si,ofs name2
mov di,ofs full_name2
push di
mov cx,20
rep movsd
pop si
call get_one_name
cmp [b si],0
jnz m74f
mov di,128+30
xchg si,di
push di
mov cx,13
rep movsb
pop si
m74f:
push si
mov ax,2900h
mov di,ofs fcb1+7
int 33
mov ax,2900h
mov si,128+30
mov di,ofs fcb2+7
int 33
pop di
mov si,ofs fcb2+8
mov bx,ofs fcb1+8
mov cx,8
call copy_part
mov al,'.'
mov bx,ofs fcb1+8+8
mov si,ofs fcb2+8+8
cmp [b bx],32
jnz m104f
sub al,al
stosb
jmp m504f
m104f:
stosb
mov cx,3
call copy_part
xor al,al
stosb
m504f:
clc
m904f:
ret
endp
proc copy_part ;=4i
lodsb
mov ah,[bx]
inc bx
cmp ah,'?'
jz m154i
mov al,ah
m154i:
cmp al,32
jz m184i
stosb
loop copy_part
m184i:
ret
endp
proc get_one_name ;=4h
mov dx,si
m104h:
lodsb
or al,al
jnz m104h
dec si
dec si
std
m154h:
lodsb
cmp al,':'
jz m204h
cmp al,''
jz m204h
cmp si,dx
jnc m154h
dec si
m204h:
cld
inc si
inc si
ret
endp
proc find_next ;=4g
mov ah,4Fh
int 33
jc m904g
mov si,128+30
mov di,ofs full_name3
m104g:
lodsb
scasb
jnz m44f
or al,al
jnz m104g
or [b f_file],4
jmp m44f
m904g:
ret
endp

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 14 суток с момента отправки ответа.

Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 05.04.2005, 01:31
Оценка за ответ: 5

Отвечает: Стас
Здравствуйте, ttt!
DTA - область передачи данных.
нужна не только для поиска файлов, но и чтения/записи из/в файл "старыми функциями" (FCB ориентированными).
Например предусмотрел в проге буффер байт в 512. Устанавливаешь DTA на него: DS:DX = буффер, и AH=1ah int21h.
Дальше результаты чтения файла, поиска файлов, отправляюся в эту твою DTA. Записываются данные в файл тоже оттуда. (Функции 11h,12h,14h,15h,4eh,4fh,21h,22h,27h,28h Int21H)
За размером области никто не следит. Делай это сам.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 06.04.2005, 01:41


Вопрос № 19252
Подскажите, где можно почитать про работу с таймером.... А также как можно обрабатывать по таймеру вывод сообщения в видеобуфер...
Отправлен: 04.04.2005, 23:11
Вопрос задал: edson (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: Master135
Здравствуйте, edson!
Zubkovassembler под ДоС Win и Unix

=== EI =-=
ну я не понял, ребята!!
вы хотя бы себя уважайте.
неужели задающий вопроса не может сам (САМ) найти интересующий его материал?!
вы что, сидите здесь в качестве автоматической системы поиска?
где работа мысли?
где анализ?
вы что-нибудь новое можете ему сказать, что-то полезное?!
то, что он не найдёт в книгах, которые МОЖЕТ найти сам.
=== EI =-=

Приложение:

Ответ отправил: Master135 (статус: 4-ый класс)
Отправлен: 05.04.2005, 01:29

Отвечает: Вiктор
Здравствуйте, edson!
в дополнение к Зубкову могу ещё посоветовать http://asm.shadrinsk.net/jourden.zip
и другие книги на сайте asm.shadrinsk.net.
удачи!

=== EI =-=
ну я не понял, ребята!!
вы хотя бы себя уважайте.
неужели задающий вопроса не может сам (САМ) найти интересующий его материал?!
вы что, сидите здесь в качестве автоматической системы поиска?
где работа мысли?
где анализ?
вы что-нибудь новое можете ему сказать, что-то полезное?!
то, что он не найдёт в книгах, которые МОЖЕТ найти сам.
а тебе Виктор, предупреждение.
официальное.
все последующие ответы без капли мысли (ТВОЕЙ мысли) будут удаляться.
потому что в противном случае рассылка засохнет. потому что люди не будут находить здесь ничего нового!
=== EI =-=
Ответ отправил: Вiктор (статус: 3-ий класс)
Отправлен: 05.04.2005, 01:32

Отвечает: Стас
Здравствуйте, edson!
Суть в том что ты вешаешь свою процедуру на Int8 (18.2 раза в секунду если я проавильно помню) и следишь что там изменилось на b800:0, можно контрольной суммой, можно целиком в буффер толкнуть и с ним сравнивать.
А так как ты запретил переключение (в Int10) на 0 страницу, пользователь её никогда не увидит, а на первой можешь сделать клон 0 заменив нужные тебе моменты. скажем.
Вообще чтобы думать в правильном направлении нужно понять зачем тебе это все. Какие проги пишут и что ты хочешь менять.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 06.04.2005, 01:29

Отвечает: Boriss
Сбой был....
Вот здесь есть много примеров
http://www.brillianet.com/programming/assembly/source_code/
в частности, http://www.brillianet.com/cgi-bin/download.cgi?/programming/assembly/source_code/buffys.zip - Source-code for a TSR which will wait for a short period of time and then swap the user's text-screen
Классика, а точнее, наиболее полное описание прерываний у Ralf Brown:
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/
Очень много всего есть на сайте, посвященном играм:
http://thor.prohosting.com/~gameprog/tutorial.html
Ну есть что почитать на www.bobjohnson.nm.ru/files.html
ДАА!! И не 8-е прерывание переписывать, а 1С удобнее и безопаснее. Оно специально для этого создано и состоит только и IRET. 8-е прерывание его вызывает обязательно

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 06.04.2005, 12:11


Вопрос № 19253
У меня вопрос Евгению Иванову. Он мне в качестве примера программы вывода на экран с использованием таймера предложил свою программу. Но я так и не смог найти в огромной программе процедуры, отвечающие за вывод на экран.... Если не сложно, Евгений Иванов, можете мне подсказать какие процедуры в программе осуществляют вывод на экран с использование таймера...
Отправлен: 04.04.2005, 23:49
Вопрос задал: edson (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Евгений Иванов
Здравствуйте, edson!
таймера там нет, (это программа ASCII).
но там есть вывод на экран и работа со страницами.
чтобы запихать всё это в обработчик таймера, ума много не нужно.
таймер - это 8 прерывание.
перехватывать и устанавливать также, как и всё остальные прерывания.
обработчик строится по стандартной схеме с обязательным окончанием прерывания по командам:
mov al,32
out 32,al
удачи!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 05.04.2005, 12:16


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное