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

Ассемблер? Это просто! Учимся программировать


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 570
от 12.10.2006, 00:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 351, Экспертов: 34
В номере:Вопросов: 5, Ответов: 9


Вопрос № 57911: Здравствуйте ! А как можно удалить файл который сейчас работает. Ну я имею ввиду функцию, как в паскале paramstr(0)-текущий файл. А как на асме ? (под дос)...
Вопрос № 57923: Здравствуйте ! Как можно прочитать не файл, а кластеры на которых он расположен ?...
Вопрос № 57926: Здравствуйте ! Часто читая чужие исходники я вижу след. строки : db 32,1,0; или db 0fh,31h. Что означают эти команды. И как их можно использовать ?...
Вопрос № 57958: Доброго времени суток уважаемые эксперты. Если на асме сделать программу, без использования прерываний 20h-2Fh(т.к. они относятся конкретно к ДОС), то будет ли она работать на Линуксе и если будет, то можно ли там использовать адреса видеобуфера(...
Вопрос № 57977: Вопросы по отладчикам. adf 1) Как в нем перейти к нужному оператору миную остальные ? Нужная операция выполняется в "середине" программы, жманать f1 долго и утомительно. 2) Как посмотреть значения памяти, после определенно...

Вопрос № 57.911
Здравствуйте ! А как можно удалить файл который сейчас работает. Ну я имею ввиду функцию, как в паскале paramstr(0)-текущий файл. А как на асме ? (под дос)
Отправлен: 06.10.2006, 14:01
Вопрос задал: Whiteman (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Whiteman!
Под Виндой удаление самого себя невозможно, потому что файл отображается на память, поэтому будет открыт.
А вот под ДОС-ом вполне возможно, потому что файл просто считывается в память.

Имя файла запущенной программы лежит в сегменте окружения, после всех строк
Смотри приложение

Обрати внимание, если запустишь под отладчиком, там будет имя отладчика(!), не удали случайно!

Приложение:

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

Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 06.10.2006, 14:50
Оценка за ответ: 5

Отвечает: Луковкин Николай Иванович
Здравствуйте, Whiteman!
Функция DOS 41h:Удаление файла
Вход: AH=41h
DS:DX=адрес ASCIZ-строки с полным именем файла
Выход: CF=0,если файл удален
CF=1 и AH=02h,если файл не найден;03h,если путь не найден;05h,если длступ запрещен
Удалить файл можно только после того, как он будет закрыт, иначе DOS продолжит выполнение записи в несуществующий файл, что может привести к разрушению файловой системы.
Функция DOS 3Eh:закрыть файл
Вход: AH=3Eh
BX=индентификатор
Выход: CF=0,если не произошла ошибка
CF=1 и AX=6,если неправильный индентификатор

---------
Главным критерием эффективности того или иного пути может служить лишь то, достиг или нет крекер конечного результата!!!
Ответ отправил: Луковкин Николай Иванович (статус: 2-ой класс)
Ответ отправлен: 06.10.2006, 18:55

Отвечает: Николай Орлов
Здравствуйте, Whiteman!
Не думаю что это возможно, да и для чего это нужно????При записи в файл или при чтении,если удалить файл, то может пострадать файловая система.

---------
Если нет выхода ищу вход.
Ответ отправил: Николай Орлов (статус: 6-ой класс)
Ответ отправлен: 06.10.2006, 20:01


Вопрос № 57.923
Здравствуйте ! Как можно прочитать не файл, а кластеры на которых он расположен ?
Отправлен: 06.10.2006, 16:08
Вопрос задал: Whiteman (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Whiteman!
Перед тем, как делать подобное, надо сначала хорошенько изучить структуру FAT Например,
http://www.dvgu.ru/meteo/PC/fat32.htm
http://sizov.boom.ru/fat.htm
При желании, можно найти в Инете кучу статей

Только после этого можно приступать к работе на уровне кластеров
Получить начальный кластер можно, например, через SFT, как описано в
http://www.wasm.ru/print.php?article=1006004
Ну а дальше читаем FAT, и последовательно считываем цепочку кластеров...
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 06.10.2006, 16:47

Отвечает: Николай Орлов
Здравствуйте, Whiteman!
Для этого надо использовать функцию абсолютного чтения с диска.
AH=02H
Al - количество секторов для чтения.
CH - цилиндр
CL - сектор
DH - головка
DL - диск
ES:BX - сегмент смещение для буфера
int 13h
А так же:
AL - диск
CX - количество секторов для чтения
DX - начальный сектор для чтения.
DS:BX - буфер
Int 25h
С уважением,ENS.

---------
Если нет выхода ищу вход.
Ответ отправил: Николай Орлов (статус: 6-ой класс)
Ответ отправлен: 07.10.2006, 13:22


Вопрос № 57.926
Здравствуйте ! Часто читая чужие исходники я вижу след. строки : db 32,1,0; или db 0fh,31h. Что означают эти команды. И как их можно использовать ?
Отправлен: 06.10.2006, 16:15
Вопрос задал: Whiteman (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: ADSota
Здравствуйте, Whiteman!

db 32, 1, 0 - это не команда... Скорее часть ее...
db 0fh,31h - команда RDTSC - получить в EDX:EAX текущий счетчик тактов процессора пентиум...

Это делается из-за того, что не все команды поддерживаются ассемблером (например старый MASM, TASM)...
---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 06.10.2006, 16:25

Отвечает: Николай Орлов
Здравствуйте, Whiteman!
Это запась байтов в удобное место, для каких-либо целей.Переменные, но только без имени. Допустим возврат коретки:
;можно string db 'hello',0Ah,0Dh,'world','$'
;а можно и так
string db 'hello'
db '0Ah,0Dh,
db 'world'
db 0Ah,0Dh,'$'
С уважением,ENS.


---------
Если нет выхода ищу вход.
Ответ отправил: Николай Орлов (статус: 6-ой класс)
Ответ отправлен: 07.10.2006, 13:23


Вопрос № 57.958
Доброго времени суток уважаемые эксперты.
Если на асме сделать программу, без использования прерываний 20h-2Fh(т.к. они относятся конкретно к ДОС), то будет ли она работать на Линуксе и если будет, то можно ли там использовать адреса видеобуфера(0B800h and 0A000h).
Заранее спасибо.
С уважением, ENS.
Отправлен: 06.10.2006, 20:04
Вопрос задал: Николай Орлов (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: n0name
Здравствуйте, ENS!
2Fh и 2Eh не относятся к DOS, они относятся к прерываниям Windows.
Смотря какая, без WinAPI - скорее всего. Адрес видеобуфера можно использовать.
Ответ отправил: n0name (статус: 6-ой класс)
Ответ отправлен: 06.10.2006, 20:24


Вопрос № 57.977
Вопросы по отладчикам.
adf
1) Как в нем перейти к нужному оператору миную остальные ?
Нужная операция выполняется в "середине" программы, жманать f1 долго и утомительно.
2) Как посмотреть значения памяти, после определенной операции в память должны быть загружены данные, я хочу посмотреть их и удостоверится. По какому адресу они должны загрузится я знаю (а собственно по другому быть и не могло наверное).

По CV.
Почему codeview не хочет работать с *.com и вылетает с ошибкой no symbol handler found?
Отправлен: 06.10.2006, 23:32
Вопрос задал: Torsten (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Луковкин Николай Иванович
Здравствуйте, Torsten!
1.Вот то что я знаю про отладчик AfdPro:
а)AfdPro управляется командами с клавиатуры. Место, куда вводятся команды, помечено в окне отладчика значками CMD>. Самая важная команда отладчика - QUIT (выход). Набрав ее и нажав Enter, мы покидаем отладчик.
в)Клавиша F1- с ее помощью можно попасть внутрь процедуры и посмотреть, как выполняется каждая ее инструкция.
г)Клавиша F2- выполняет программу по шагам, причем вызов и возврат из процедуры считается одним шагом.
г)Клавиши F7,F8 - позволяют забираться в различные окна отладчика(движение вверх-вниз) и F9,F10 (вправо-влево). Попав в окно, позволяющее увидеть память компьютера, можно изменить не только сегментный регистр, но и любой байт. Память можно просматривать в любом напрвлении с помощью клавиш - стрелки вверх-вниз.
д)Результаты работы программы можно увидеть, переключаясь между окном отладчика и экраном компьютера с помощью клавиши F6. Но прежде необходимо набрать в окне отладчика команду mo a on и нажать Enter.
е)Большая часть его команд описана в файле помощи, вызываемой клавишей F4.
2. Извини, но с отладчиком CV мне не приходилось работать, но зато про OllyDbg я могу рассказать тебе все что хочешь, т.к. это мой самый любимый отладчик.
Удачи!


---------
Главным критерием эффективности того или иного пути может служить лишь то, достиг или нет крекер конечного результата!!!
Ответ отправил: Луковкин Николай Иванович (статус: 2-ой класс)
Ответ отправлен: 07.10.2006, 23:25
Оценка за ответ: 5
Комментарий оценки:
Спасибо за столь развернутый ответ, я во всем разобрался и все что нужно проверил.
Ну и конечно зря вы так все расписали, можно было кратенько, время ваше жалко.
По поводу Olly мне этот отладчик тоже понравился, когда начну разбиратся 32-разрядными приложениями буду им пользоватся. Он на 16-разрядные не рассчитан, а пока я только с ними. По книге все таки изучаю асм.

PS. Вообще странно видеть такой хороший ответ от эксперта 1-го класса.


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное