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

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


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

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

Выпуск № 344
от 16.08.2002, 20:40

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


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

LIFO
Статус: Опытный
Общий рейтинг: 136.3
Телефон: 8 01710 24758
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 158.84
[Подробней >>]
Dark_Lord
Статус: Опытный
Общий рейтинг: 142.61
[Подробней >>]
 
ASMодей
Статус: Опытный
Общий рейтинг: 127.23
[Подробней >>]
Pablo
Статус: Опытный
Общий рейтинг: 130.64
URL: Моя страничка
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 137.13
URL: моя шедевра
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 122.5
[Подробней >>]
Вий
Статус: Начальный
Общий рейтинг: 103.4
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 113.25
URL: В помощь программисту
[Подробней >>]
 
Painbringer
Статус: Начальный
Общий рейтинг: 114.73
[Подробней >>]
Топор
Статус: Профессиональный
Общий рейтинг: 117.97
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
igorash
Статус: Профессиональный
Общий рейтинг: 118.7
[Подробней >>]
 
Portnov
Статус: Опытный
Общий рейтинг: 120.96
[Подробней >>]
copycon
Статус: Начальный
Общий рейтинг: 112.5
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.92
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Александр
Статус: Профессиональный
Общий рейтинг: 118.03
[Подробней >>]
Gibbel
Статус: Опытный
Общий рейтинг: 109.25
URL: Страничка обо мне и моих друзьях
[Подробней >>]
Sergey Lizin
Статус: Начальный
Общий рейтинг: 103.32
[Подробней >>]


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

Вопрос № 955. Уважаемые эксперты! 1)Тут недавно проги hack'ал и наткнулся на одну злосную прогу. Без нормального I... (ответов: 3)
Вопрос № 956. Доброй НОЧИ! Помогите пожалуйста найти и исправить ошибку в программе. Она должна побайтно считывать... (ответов: 7)
Вопрос № 957. Здравствуйте господа Эксперты... Простите за оффтопик, но не удосужаться ли уважаемые эксперты отве... (ответов: 11)
Вопрос № 958. Здравствуйте эксперты ответьте, пожалуйста, на такой вопросика: 1.Можно ли програмно отключить кноп... (ответов: 9)
Вопрос № 959. Народ! К нам вернулся Painbringer! Поздравляем "новичка"... :)... (ответов: 3)
Вопрос № 960. Уважаемые знатоки и эксперты (по крайней мере, я некоторых из вас считаю). Я работаю в небольшо... (ответов: 3)
Вопрос № 961. Доброе время суток, эксперты. Начал изучать Крeкерство. Уже есть крохотное достижение (Отучил от дис... (ответов: 4)
Вопрос № 962. Доброе время суток, всем экспертам. Начал изучать Крeкерство. Уже есть крохотное достижение (Отучил ... (ответов: 2)
Вопрос № 963. Я, типа newbie в асме. Но при изучении сразу наткнулся вот на такой парадокс: com файлы при запуске ... (ответов: 7)
Вопрос № 964. Есть прерывание ДОС INT 21h,функция 35h - получение вектора прерывания (адрес обработчика прерывания... (ответов: 11)
Вопрос № 965. Здравствуйте! В чем разница между режимом чистого DOS и эмуляцией DOS под Windows? Т.е. всего 3 режи... (ответов: 5)

Вопросов: 11, ответов: 65


 Вопрос № 955

Уважаемые эксперты!
1)Тут недавно проги hack'ал и наткнулся на одну злосную прогу. Без нормального ICE'a не обойтись. Мой под Фортачки 2000 глючено работает(Soft ICE 4.16), а под ХР'ху и браться не стоит(хотя не пробовал, мне два куска по больше нравится). Подскажите пожалуйста где можно скачать свежий ICE? или у кого-нибудь есть?
2) Tyт на днях игрушку собрался писать. Задумки были хишные, а вот со своим менеджером памяти - проблема. Я сделал его,с б-деревьями, и даже извратился с ММХ, но намудрил, что больше не хочу смотреть на эту фигню. Подскажите пожалуйста, как сделать быстрый менеджер памяти(по проще; и если можно с исходниками, уж очень я тороплюсь).



Вопрос отправлен: 11.08.2002, 22:10
Отправитель: BigKing (bigking@kemtel.ru)

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

Отвечает LIFO

Добрый день, BigKing!
По- моему это и есть самый новый ( у меня версия 4.05)

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


Отвечает masquer

Добрый день, BigKing!
1. айс любой нормально работает с 2к, с мышкой (если не ком) проблемы бывают, но решаются.
2. С ММХ работаю, с бидеревьями не работал, а что должен делать твой менеджер памяти?

Ответ отправлен: 11.08.2002, 23:10
Отправитель: masquer


Отвечает Dark_Lord

Добрый день, BigKing!
Soft Ice нормально работает под XP, только загружать вручную надо!А на счёт памяти, не знаю:(!

Ответ отправлен: 12.08.2002, 01:16
Отправитель: Dark_Lord


 Вопрос № 956

Доброй НОЧИ!
Помогите пожалуйста найти и исправить ошибку в программе. Она должна побайтно считывать байтики из всех файлов с расширеним *.TXT в текущей директории. Всё работает кроме шифрования. Что-то заклинило не могу уяснить. Всё дело вызове процедуры "call enc_dec"...
Буду очень благодарен. Кстати, как отправить благодарность на имя эксперта, чем ответ устроил ???
До свидания..


Приложение:


Вопрос отправлен: 11.08.2002, 23:35
Отправитель: DARK_ALISON

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

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

Доброе время суток, DARK_ALISON!
Очень распространенная ошибка - в процедуре изменяются
значения регистров, используемых далее в программе.
Необходимо сохранять все изменяемые регистры при вызове
процедуры и восстанавливать их значения при выходе из нее.


Ответ отправлен: 12.08.2002, 13:26
Отправитель: ASMодей


Отвечает Pablo

Приветствую тебя, DARK_ALISON!
А почему в функции кодирования стоит mov cx, 1 непонятно, по идее там должна стоять загрузка в cx длины файла или части файла которая загружена в буффер!?


Ответ отправлен: 12.08.2002, 12:21
Отправитель: Pablo


Отвечает Broken Sword

Добрый день, DARK_ALISON!
я за тобой тут давно наблюдаю ;) и вот что хочу сказать:
- из комников всегда выходи по ret-у, тем более когда вообще не трогаешь стек...
- вот здесь ты малехо запорол:
mov ax,3D02h
mov dx,80h+1eh
int 21h
jc find_n
...
find_n:
mov ah,3Eh
int 21h
вот если файл не откроется (будет переход на find_n) чего ты закрывать собрался ?
- в этом куске вторая строчка вообще ни в Х(акер:) ни в красную армию:
mov ah,4Fh
mov dx,80h
jmp file_o
по мелочевке еще куча подобной хрени...
Вот самое главное ты написать забыл: чего ты от нее вообще хочешь? ты пишешь, что она должна "побайтно считывать байтики из всех файлов с расширеним *.TXT в текущей директории" а ты мне скажи какие ж тут байтики, когда ты по одному байту все время читаешь? или это ты так задумал? или чего вообще происходит то?
твоя процедура enc_dec вообще какой то уникальный шедевр... в cx пихаешь вначале нее единицу все время, больше его не меняешь, а в конце loop какой-то еще... к чему это все? По одному байтику собрался шифровать??!!! удачи... (не легче считать все целиком, чем dec ax js... , придумал же!)
p.s. объясни толком чего хочешь


Ответ отправлен: 12.08.2002, 01:30
Отправитель: Broken Sword


Отвечает masquer

Добрый день, DARK_ALISON!
Ну у тебя только первый симвод будет ксориться с маской 30. Может пересмотри эту процедуру, там очень много лишнего.

Ответ отправлен: 12.08.2002, 00:05
Отправитель: masquer


Отвечает Dark_Lord

Добрый день, DARK_ALISON!
Зачем ты используешь
lea di,buffer
lea si, Key
в процедуре!? Мне кажется ошибка из-за этого! А на счёт благодарности, самому интересно!

Ответ отправлен: 12.08.2002, 00:16
Отправитель: Dark_Lord


Отвечает Ayl

Приветствую Вас, DARK_ALISON!
Ну, во-первых, в процедуре enc_dec не сохраняются регистры (в частности, bx), вследствии чего происхоит неправильное обращение к файлу при установке указателя файла. Вообще очень хитрая установка указателя - на FFFEFFFE байт от текущей позиции... Что соответствует числу -65538... Вместо -1, как предполагается...
В общем, лови мой вариант. Я изменил немного кусок для чтения и кодирования. Теперь работа происходит с буфером длиной 32768 байт.
Насчет благодарностей - сейчас вроде как данная функция не работает.

Приложение:

Ответ отправлен: 12.08.2002, 00:50
Отправитель: Ayl


Отвечает Вий

Доброе время суток, DARK_ALISON!
Вот, посмотри, что я тебе тут написал... Делает то, что тебе нужно.


Приложение:

Ответ отправлен: 15.08.2002, 00:47
Отправитель: Вий


 Вопрос № 957

Здравствуйте господа Эксперты...
Простите за оффтопик, но не удосужаться ли уважаемые эксперты ответить на вот такой вопрос... Нежли PC настолько убогий компьютер что не может сочетать в себе и транслятор и компилятор, и эдитор... Глядя на навороченную архитектуру, кучу многозадачного софта, все также использовать MASM or TASM, или другие, частично сочитающие в себе недоделаность Ассемблеры...
С уважением
AllAddIn



Вопрос отправлен: 12.08.2002, 07:29
Отправитель: AllAddIn (AllAddIn@Ngs.Ru)

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

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

Доброе время суток, AllAddIn!
Ты наверное и не искал? Лично я знаю 3-4 оболочки,
объединяющие в себе и редактор и компилятор и линковщик.
Другое дело, что они не очень удобны в использовании, а
писать удобную оболочку, наподобие VisualC++, сейчас
никто не будет - нет рыночного спроса. Хотя энтузиасты
что-то наверняка делают, нужно просто поискать.


Ответ отправлен: 12.08.2002, 13:27
Отправитель: ASMодей


Отвечает Dark_Lord

Добрый день, AllAddIn!
А зачем!?! Наверно учился ещё мало! Для .com програмы это только траблы, для .exe это минус сегмент, при переходе в видеорежим всёравно нет плюсов! Хотя в принципе есть такие проги, называются (asm)shell, посмотри, если очень хочется на asmfanat.narod.ru, там вроде было что-то! Чего не пойму так при чём сдесь PC!

Ответ отправлен: 12.08.2002, 20:15
Отправитель: Dark_Lord


Отвечает Pablo

Доброе время суток, AllAddIn!
Интегрирование копилятора и компоновщика в одну среду выглдело бы нелогично с точки межязыкового взаимодействия, то есть если сделать такую среду для аасемблера, например, то программировать только на нем можно и программы написанные на нем нельзя будет использовать в других языках программирования, также и с другими я языками. Впрочем то о чем ты говоришь частично сделано уже в Юниксовом компиляторе, например в gcc, но он и интегрирует в себе не только ассемблер но и языки с, с++ и другие помойму.

Ответ отправлен: 12.08.2002, 12:21
Отправитель: Pablo


Отвечает Igoryk

Доброе время суток, AllAddIn!
"Недоделанность" ассемблера - это для демократических взглядов на написание программ. Каждый может попытаться написать собственный эдитор. А задача ассемблера просто скомпилировать программу. Дело в том, что эти асемблеры написаны были по уму и переделывать программу только для изменения внешнего вида никто не станет.

Ответ отправлен: 12.08.2002, 19:28
Отправитель: Igoryk


Отвечает LIFO

Здравствуйте, AllAddIn!
Что ты сказал?!
А debug.com по твоему что??
А чем тебя не устраивают эти ассемблеры. Если такой умный, то напиши свой.

Ответ отправлен: 12.08.2002, 19:33
Отправитель: LIFO


Отвечает Painbringer

Здравствуйте, AllAddIn!
Тоже мне трабла :)) Ну не нравится ТАСМ юзай каку-ньть приблуду к нему - тасмед например или еще какое нибудь... просто так можешь луче видеть что у тебя там происходит.


Ответ отправлен: 12.08.2002, 23:18
Отправитель: Painbringer


Отвечает Топор

Здравствуйте, AllAddIn!
Если бы и железом и софтом занималась одна и та же контора, так бы оно, наверное, и было. Но это уже Большой Брат получается, на хрен такого не надо. Ассемблер заточен не только под железо, но и под ОСь, а осей много, они всякие нужны, разного назначения, универсальную сделать невозможно и не нужно. Потому и единую среду разработки создавать смысла нет.


Ответ отправлен: 12.08.2002, 08:32
Отправитель: Топор


Отвечает masquer

Добрый день, AllAddIn!
О, сейчас посыпятся гневные ответы!
Начну, пожалуй. Не, не буду, ты вопрос сам понял, одно с другим связал? Что значит - недоделанность ассемблера? А в чем доделанность?

Ответ отправлен: 12.08.2002, 09:34
Отправитель: masquer


Отвечает igorash

Доброе время суток, AllAddIn!
Че-то вопрос какой-то хитрый.... это в смысле в процессор тебе встроить и транслятор и компилятор, и эдитор.... при чем здесь компутеры PC и компиляторы.... не нравится асм юзай паскаль или Си

Ответ отправлен: 12.08.2002, 15:10
Отправитель: igorash


Отвечает Portnov

Добрый день, AllAddIn!
Хе-хе... Вот возьмите и напишите такую штуку. Есть TurboShell, но она еще сырая, иногда при компилляции глючит. Сделать такую штуку не так сложно, и M$ or Inprice (хе-хе: вообще-то Inprise, а так в переводе получается "в цене" :) давно бы сделали, если бы был спрос. Просто очень мало кто использует асм для создания программ с нуля, все больше как вспомогательный язык. Скажем, пишут 3d-редактор, интерфейс и всякие там прибамбасы вроде плугинов - на C++ для простоты, а "ядро", занимающееся всеми просчетами, на Асме для быстродействия. А ядро это - пять киолбайт на асме. А сишных исходников - сто пять килобайт. Вот и лень всем полноценную IDE сделать наподобие TurboPas'а.
С уважением, Portnov.

Ответ отправлен: 12.08.2002, 16:51
Отправитель: Portnov


Отвечает copycon

Здравствуйте, AllAddIn!
Значиться так, мое личное мнение.
Во-первых:
Ассемблеры делаються профессионалами для профессионалов
и мнения и пожелания юзеров не учитываться :)
А мнение профессионалов: лучшая оболочка - консоль!!!
Во-вторых:
На асм'е пишуться библиотеки, резиденты, драйвера,
демоны, BIOS'ы и тд. и тп.
Как ты себе представляешь шашечки и финтифлюшки, окошечки
и граф.режим при отладке BIOS???
Удачи.


Ответ отправлен: 15.08.2002, 20:40
Отправитель: copycon


 Вопрос № 958

Здравствуйте эксперты ответьте, пожалуйста, на такой вопросика:
1.Можно ли програмно отключить кнопки POWER и RESET???
2.Можно ли в виндовсе вывести текст на экран без вывода окна???
Ответы желательно с исходниками:-)))))))))



Вопрос отправлен: 12.08.2002, 14:49
Отправитель: nix (nix.q@mail.ru)

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

Отвечает Igoryk

Приветствую Вас, nix!
1. Power можно через настройки Windows (наверно в реестре информация хранится). А RESET нельзя.
2. Используй DrawText получив указатель на DeskTop.

Ответ отправлен: 12.08.2002, 19:28
Отправитель: Igoryk


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

Приветствую Вас, nix!
1. В старых компьютерах точно было нельзя. В новых
(с ATX корпусами) возможно и получится.
2. Если ты имеешь в виду вывести текст прямо на рабочий
стол, то выводи как обычно, а вместо дескриптора окна
используй HWND_DESKTOP.


Ответ отправлен: 13.08.2002, 23:13
Отправитель: ASMодей


Отвечает Painbringer

Доброе время суток, nix!
1. нет нельзя. типа ресет реализован апаратно, как и повер... (ну типа попробуй програмно запретить выдергивание из розетки).
2. Можно. можно просто гадить прямо на десктоп например.

Ответ отправлен: 12.08.2002, 23:18
Отправитель: Painbringer


Отвечает masquer

Доброе время суток, nix!
1. Нет, насколько я знаю.
2. Что значит без вывода окна? Окно в виндах это очень растяжимое понятие :). Просто создавай окно без меню, тулбаров и т.д. и background убирай.
По крайней мере, у меня все ответы без исходников

Ответ отправлен: 12.08.2002, 16:34
Отправитель: masquer


Отвечает Portnov

Добрый день, nix!
Power - в любом случае зависит от конкретного компа. У меня, например, от этой кнопки провода идут к блоку питания, так что... Но на других компах эта кнопка подключена к маме, там что-нибудь может и удастся сделать. А Reset - точно нет. Цитирую какую-то умную книжку, не помню, какую: "при поступлении сигнала на вход Reset процессор прекращает выполнение любых текущих действий". Делайте выводы.
С уважением, Portnov.

Ответ отправлен: 12.08.2002, 16:51
Отправитель: Portnov


Отвечает Pablo

Приветствую Вас, nix!
Текст вывести можно на рабочий стол, для чего его дескриптор можно получить функцией GetDesktopWindow, ну затем создать контекст устройства и рисовать!)))

Ответ отправлен: 12.08.2002, 17:52
Отправитель: Pablo


Отвечает Артём Шегеда

Здравствуйте, nix!

1. Кнопка Power на ATX-платах под Windows98 контролируется драйвером ACPI.sys (если он, конечно, был установлен). Так что, отключение этой кнопки программно требует написания некоторой программы, взимодействуещей с этим драйвером.
Но! Если в течении 4-х секунд удерживать кнопку Power нажатой, то питание будет выключено в любом случае, поскольку это уже реализовано аппаратно.
Кнопку Reset вообще невозможно проконтролировать (за исключением тех случаев, когда сигнал с кнопки Reset заходит на схему формирования системного сигнала RESET и эту схему можно отключить - но это знают только разработчики чипсетов).
2. Смотри приложение - должно работать.

hDC = CreateDC("DISPLAY", NULL, NULL, NULL);
TextOut (hDC,0,0,"HELLO!",6);
DeleteDC(hDC);


Ответ отправлен: 12.08.2002, 18:26
Отправитель: Артём Шегеда


Отвечает copycon

Добрый день, nix!
На современных корпусах, возможно программное
отключение кнопки POWER.
Сам не пытался но инфу поищи, где-то видел.
Или поковыряйся в BIOS'е.
А кнопка RESET принципиально не отключаеться -
чистый HARD.
Удачи.


Ответ отправлен: 15.08.2002, 20:41
Отправитель: copycon


Отвечает Dark_Lord

Приветствую Вас, nix!
1)Power спокойно на ATX, а Reset нельзя!
2) Получи handle на Desktop и юзай DrawText'

Ответ отправлен: 12.08.2002, 20:20
Отправитель: Dark_Lord


 Вопрос № 959

Народ! К нам вернулся Painbringer!
Поздравляем "новичка"... :)



Вопрос отправлен: 12.08.2002, 15:22
Отправитель: baldr (baldr@pisem.net)

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

Отвечает Igoryk

Доброе время суток, baldr!
Присоединяюсь к поздравлениям.

Ответ отправлен: 12.08.2002, 19:28
Отправитель: Igoryk


Отвечает Painbringer

Здравствуйте, baldr!
Да я такой, хехехе. Народ, нескромный вопрос а че тут все так посокращали. в смысле тем стало больше, но уж больно они широкие - асм и досовый и мастдаевый в одной куче н-р. то же с сями. Урезали инфу об людях - тоже ж жалко (типа сам себя не похвалишь - никто не похвалит). вот.
постараюсь не опростоволоситься. нада ж когда-то мозги разминать.


Ответ отправлен: 12.08.2002, 23:18
Отправитель: Painbringer


Отвечает Dark_Lord

Добрый день, baldr!
Кто-кто...ну поздравляем так поздравляем!????

Ответ отправлен: 12.08.2002, 20:25
Отправитель: Dark_Lord


 Вопрос № 960


Уважаемые знатоки и эксперты (по крайней мере, я некоторых из вас считаю). Я работаю в небольшой IT компании, находящейся в городе Брисбен, штат Квинсленд, Австралия. Так как сам являюсь ассемблерщиком(правда, не таким опытным как некоторые из вас - это не лесть кстати, а констатация фактов), слежу за рассылкой.
Короче, предложение следующего рода. Я предложил(так как сам русский) руководству взять на субконтрактной основе некоторых людей (под мою ответственность, в частности) знающих следующие языки и др. вещи:
Java, ASP, PHP, MySQL, C/C++/VC, VBx,

Assembler for Intel x86

, Assemler for Motorolla,FileMaker(Pro), Java3D, XML,DHTML.
Вот небольшой такой список того, что желательно знать вам. Конечно, не все сразу, а только то, в чем вы себя считаете спецом.
Сразу хочу сказать, что конкурса не будет - просто я буду разговаривать с вами, опираясь на вашу честность(можете смеяться...), а потом уже на контракт, в котором будут указаны все условия.
ПОДРАЗУМЕВАЕТСЯ, что вы можете читать и ПОНИМАТЬ по-английски.
Жду ответов и тогда будем разговаривать более конкретно.

С уважением Алекс



Вопрос отправлен: 12.08.2002, 16:33
Отправитель: алекс

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

Отвечает masquer

Доброе время суток, алекс!
He-he, Australia...
E-mail me, please, with more detail on masquer@pochta.ws

Ответ отправлен: 12.08.2002, 17:40
Отправитель: masquer


Отвечает Broken Sword

Приветствую Вас, алекс!
Я готов! :)
Ну с асмом проблем никаких, а вот с остальным... ну может VB 50/50... впринципе любым из указанных тобой языков за месяц можно овладеть вполне на уровне...

Ответ отправлен: 12.08.2002, 18:02
Отправитель: Broken Sword


Отвечает Артём Шегеда

Доброе время суток, алекс!

Предложение, конечно, заманчивое, но будет ли время, имея основную работу, заниматься контрактной работой...
Знание C, 80x86 Asm - гарантирую, Java - нажно вспомнить забытое, давно не занимался.

Ответ отправлен: 12.08.2002, 18:17
Отправитель: Артём Шегеда


 Вопрос № 961

Доброе время суток, эксперты.
Начал изучать Крeкерство.
Уже есть крохотное достижение (Отучил от диска игру Эпоха империй 2).
Сейчас пытаюсь по мануалу взломать Hex Workshop v2.54 (в учебных целях)
Для успеха мне надо найти смещение 9099h.
Опишите, пожалуйста, как перейти к смещению 9099h???(я использую HiEW)
Заранее огромное спасибо за ответ.
Спасибо за внимание.
P.S. Есть ли здесь люди,желающие быть наставниками и помошниками начинающему крeкеру??



Вопрос отправлен: 12.08.2002, 16:35
Отправитель: Макс (ooot@hotbox.ru)

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

Отвечает Igoryk

Доброе время суток, Макс!
Я использую Hiew 6.11 Здесь переход осуществляется так:
Выбери Mode отличное от 'текст'. Затем нажми F5, и в появившемся окошке набери адрес, на который осуществляется переход. Если адрес находится за FFFFh будет прибавлено .XX+Адрес

Ответ отправлен: 12.08.2002, 19:28
Отправитель: Igoryk


Отвечает LIFO

Приветствую Вас, Макс!
Во- первых , в каком сегменте ( их же может быть больше десятка). А во - вторых, в Hiewe это делается так:
1.Открываешь файл.
2.Нажимаешь F4 и выбираешь Hex Mode.
3.Нажимаешь F5 и вводишь адрес 000009099
4.Если все верно, то выделяется байт, расположенный по этому адресу.
5.Нажимаешь F3 и меняешь на другое значение.
Вместе с программой поставляется хелп на русском. Изучи его!
А насчет наставника - можешь писать!



Ответ отправлен: 12.08.2002, 19:33
Отправитель: LIFO


Отвечает masquer

Добрый день, Макс!
Смещение относительно чего, начала файла, ImageBase?
Наставником не хочу - ленивый я

Ответ отправлен: 12.08.2002, 17:30
Отправитель: masquer


Отвечает Dark_Lord

Здравствуйте, Макс!
Там слева идут восмизначные цифры! Нажимаешь на неё и пишешь нужный адрес!

Ответ отправлен: 12.08.2002, 20:27
Отправитель: Dark_Lord


 Вопрос № 962

Доброе время суток, всем экспертам.
Начал изучать Крeкерство.
Уже есть крохотное достижение (Отучил от диска игру Эпоха империй 2).
Сейчас пытаюсь по мануалу взломать Hex Workshop v2.54 (в учебных целях)
Для успеха мне надо найти смещение 9099h.
Опишите, пожалуйста, как перейти к смещению 9099h???(я использую HiEW)
Заранее огромное спасибо за ответ.
Спасибо за внимание.
P.S. Есть ли здесь люди,желающие быть наставниками и помошниками начинающему крeкеру??



Вопрос отправлен: 12.08.2002, 16:39
Отправитель: Max (russiabb@yandex.ru)

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

Отвечает Broken Sword

Здравствуйте, Max!
Что значит "как перейти?" Жмешь F5 и набиваешь то что нада...


Ответ отправлен: 12.08.2002, 18:08
Отправитель: Broken Sword


Отвечает Dark_Lord

Доброе время суток, Max!
Смотри мой ответ на вопрос 962 ;)

Ответ отправлен: 12.08.2002, 20:30
Отправитель: Dark_Lord


 Вопрос № 963

Я, типа newbie в асме. Но при изучении сразу наткнулся вот на такой парадокс: com файлы при запуске резервируют всю возможную память ОЗУ, но программа и данные распологаются только в ОДНОМ сегменте (если надо больше -ехе). Тогда смысл "стрелять дробью по слонам"?
И еще, на некоторых видеоадаптерах (я это на savage4 поймал, но на современных от ATI и nVida было все в норме) Прямая запись в текстовую видеопамять вооще ни кого не тревожит (может они в другое место его пиханули? или страница по умолчанию у них не 0 или даже дрова кривые)? Да и с веса режимом она не заработала (кода ошибки нет, а экран черный во :( -я один екзампл компилил)



Вопрос отправлен: 12.08.2002, 17:07
Отправитель: uncle Susanin

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

Отвечает LIFO

Здравствуйте, uncle Susanin!
1. Вот тебе пример - команда movsb. Строки могут распологатся в совершенно другом сегменте, чем инициализированные данные.
2. Посылай байт прямо в 0000:0b800h - обязательно выведет ( вроде бы независимо от адаптера)

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


Отвечает masquer

Здравствуйте, uncle Susanin!
сом не резервирует всю память.
По всему остальному не скажу, не занимаюсь я этим :(

Ответ отправлен: 12.08.2002, 17:34
Отправитель: masquer


Отвечает Broken Sword

Здравствуйте, uncle Susanin!
На самом деле то что ты спрашиваешь нужно отнести только к архитектуре ОС, ну как я тебе могу сказать почему DOS так делает? Нада спросить у Б.Гейтса. Это вообще камень преткновения - чтобы запустить еще одну задачу - нужно сначала освободить память, потом выделить память, короче там навернута целая гора по-сути бестолковых действий...
Насчет архитектуры проца - регистр TR вообще появился только с PM (в 386), а DOS гораздо старее всего этого дела.
Насчет видях - в XP наблюдаются подобные гоны практически со всеми видеокартами, а вообще должно быть все нормально, если бы было так как ты говоришь то в ДОС-е ты бы не смог лицезреть ни одной проги

Ответ отправлен: 12.08.2002, 18:45
Отправитель: Broken Sword


Отвечает Топор

Приветствую Вас, uncle Susanin!
Да не всю ОЗУ под ком отводят, а те самые 64к. А текстовая видеопамять всю жизнь с 0B800h начиналась, там всё зарезервировано и проги туда не загружаются.


Ответ отправлен: 13.08.2002, 13:12
Отправитель: Топор


Отвечает Ayl

Добрый день, uncle Susanin!
Ну, насчет резервирования памяти для COM-программ, так это сделано наоборот, для простоты загрузки. Возьми на досуге и почитай про организацию памяти в DOS, про MCB-блоки и тогда тебе станет понятно, что при такой загрузке программы выполняется минимум действий. То есть, определяется свободный кусок памяти, достаточный для загрузки программы, она туда загружается и эта память помечается как занятая. Но так как обычно это самый последний свободный элемент в цепочке MCB, то в результате весь он помечается как занятый. Для того, чтобы выделить программе ровно столько, сколько она занимает, пришлось бы еще добавлять в цепочку один элемент и корректировать заголовки. Но так как DOS однопрограммная система, то это, видимо, посчитали излишним.
Насчет вопроса про адаптеры, то скорее всего это не проблема самой видяхи (они все обязаны быть совместимыми до VGA и стандарта VESA), а операционки. Попробуй запуститься под чистым DOS'ом, а не из-под WinNT или WinXP.

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


Отвечает Александр

Доброе время суток, uncle Susanin!
Так ДОС же была однозадачной, зачем там было память экономить. Попытайся прогнать какую-нибудь программу, выдающую информацию об адаптере, используя VESA. Там просто страница может в другом месте начинаться... У меня где-то был текст чего-то подобного на Си. Могу выслать.


Ответ отправлен: 14.08.2002, 08:27
Отправитель: Александр


Отвечает Pablo

Добрый день, uncle Susanin!
Программу располагается в одном сегменте, а данные, которые ты можешь загрузить в процессе работы, ты можешь использовать во всем доступном пространстве.

Ответ отправлен: 14.08.2002, 23:31
Отправитель: Pablo


 Вопрос № 964

Есть прерывание ДОС INT 21h,функция 35h - получение вектора прерывания (адрес обработчика прерывания).
Можно ли минуя это прерывание найти физические адреса где эти вектора записаны?
Существует ли описание системной области памяти ОЗУ,
где расписано по какому адресу и что храниться? (и где его найти?)
Дело в том, что проглядев 6 книг для начинающих по ассемблеру, пришел к выводу - все книги написаны скореее как памятка тем кто уже все это знает...



Вопрос отправлен: 12.08.2002, 18:01
Отправитель: Виктор

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

Отвечает LIFO

Здравствуйте, Виктор!
Как два пальца!
Кажды й элемент таблицы векторов прерывания занимает 4 байта в ТВП, кот. располагается по адресу с 0000:0000 и
занимает 1кб.
Определить адрес , по которому находится ВП с номером n:
offset vector_numberN = n*4
segment vector_numberN = n*4+2
На асме можно так:(приложение)
2.Да! В интернете поищи. В книге Гука на сайте
www.neva.rumgook


Приложение:

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


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

Приветствую Вас, Виктор!
Адреса обработчиков для всех векторов прерываний в реальном
режиме процессора находятся по адресу 0000:0000h и занимают
256 * 4 = 1024 байт.
Формат адреса:
+00 word Смещение обработчика
+02 word Сегмент обработчика
Подробное описание системной области памяти есть в
Interrupt List Ральфа Брауна. Адрес можно найти в любом
поисковике.


Ответ отправлен: 13.08.2002, 23:14
Отправитель: ASMодей


Отвечает Painbringer

Добрый день, Виктор!
можно все и так посмотреть. таблица векторов прерываний лежит начиная с адреса 0000:0000. и так по 4 байта на адрес. то бишь чтоб получит адрес n-ного прерывания лезем в 0000:n*4 - смещение 0000:n*4+2 - сегмент. вот.

Ответ отправлен: 12.08.2002, 23:18
Отправитель: Painbringer


Отвечает copycon

Добрый день, Виктор!
Ветхий и Новый Заветы по программированию на ассемблере x86/DOS/Win - Interrupt List by Ralf Brown
http://www-2.cs.cmu.edu/~ralf/
http://www.pobox.com/~ralf/files.html
FTP.CS.CMU.EDU [128.2.206.173]
/afs/cs.cmu.edu/user/ralf/pub/interrupt-list
А "карманная" версия - TeachHelp
где лежит - не помню, но можеш найти на
www.filesearch.ru "teachhelp.zip" размер 689264 bytes
А по твоему вопросу, цитирую InterruptList
file memory.lst :
MEMORY MAP Release 61 Last change 16jul00
Copyright (c) 1989-1999,2000 Ralf Brown
--------H-M00000000--------------------------
MEM 0000h:0000h R - INTERRUPT VECTOR TABLE
Size: 1024 BYTEs
Note: see also the main interrupt list
;; ==============================================
и так-дале, всего 144Kb :)
то-есть с адреса 0:0 по четыре байта на каждый
вектор с 00h по FFh
Удачи.


Ответ отправлен: 15.08.2002, 20:41
Отправитель: copycon


Отвечает Gibbel

Здравствуйте, Виктор!
Да можно, все адреса храняться в таблице, расположенной по адресу 0000h:0000h и представленны в формате segment:offset.
Не знаю, что за книги тыы перерыл, но я не помню ни одной серьезной книги по асму под дос как для начинающих, так и нет, где бы об этом не было сказано ни слова.

Ответ отправлен: 12.08.2002, 18:18
Отправитель: Gibbel


Отвечает Broken Sword

Здравствуйте, Виктор!
Что то ты не те книги просматривал... Или, как это, смотришь в книгу видишь сам знаешь что )
Значитъ, ) существует такое понятие, как таблица векторов. Для определения ее начала в Protected mode существует даже специальный регистр - IDTR (Interrupt Descriptor Table Register). Но чтобы не забивать тебе голову на начальных порах вернемся к баранам (Real Mode).
Тут вообще все просто:
Таблица векторов (interrupt table) начинается с адреса 0000:0000, и по этому адресу лежит адрес нулевого вектора (int 0h) в виде: [сегмент:смещение]. Т.к. сегмент и смещение занимают по два байта (слово) каждое, то весь вектор занимает четыре байта... Теперь, как ты уже догадался, первый вектор лежит по адресу 0000:0004, а где лежит 21h вектор (ДОС-сервис)? Правильно, по адресу 0000:0021h*4 и т.д., идея думаю ясна как никогда...

Ответ отправлен: 12.08.2002, 18:29
Отправитель: Broken Sword


Отвечает igorash

Приветствую Вас, Виктор!
Таблица прерываний хранится по адресу 0:0 (вот такой хитрый)
если надо узнать адрес, то читай по адресу <номер прерывания>*4 смещение, а по <номер прерывания>*4+2 сегмент


Ответ отправлен: 12.08.2002, 20:29
Отправитель: igorash


Отвечает Dark_Lord

Приветствую Вас, Виктор!
Не знаю, книги по асму не читал, адреса всех прерываний находится по адресам
int 01 0:0000h
int 02 0:0004h
int 03 0:0008h
...
int 10h 0:0040h
А описание ОЗУ, не знаю, сам бы с радостью просмотрел, ты здесь спрашивай;)

Ответ отправлен: 12.08.2002, 20:33
Отправитель: Dark_Lord


Отвечает Sergey Lizin

Доброе время суток, Виктор!
Описаний море, и мой тебе совет: хочешь изучить ассемблер - начинай со старых книжек. Лучше возьми описание MS DOS, скажем от Нортона или Джордейна (надеюсь правильно фамилию написал). Детально на память описание младших адресов ОЗУ, конечно же ене помню, но в самом начале, начиная с 0:0 лежат... вектора прерываний. Собственно первые четыре байта - вектор нулевого прерывания, вторые - первого, ну и так все 1024. А дальше много чего интересного лежит, и буфер клавиатуры, и параметры системы и вообще много чего. Была бы такая табличка под рукой - отправил бы, но я увы на работе.
Счастливо!

Ответ отправлен: 13.08.2002, 09:28
Отправитель: Sergey Lizin


Отвечает Александр

Приветствую Вас, Виктор!
Начинать программирование на Ассемблере не представляя себе архитектуры ПК и не имея опыта языка Си, например - это ОЧЕНЬ трудно. Поэтому советую начать с какой-нибудь железячно-исторической литературы. А "Ассемблер для чайников" пока не выпустили, а зря... Адреса векторов прерываний лежат начиная с адреса 0000:0000 и занимают по 4 байта каждый.


Ответ отправлен: 14.08.2002, 08:28
Отправитель: Александр


Отвечает Pablo

Приветствую тебя, Виктор!
Выставляешь ds = 0, а затем по смещению n*4 ты записываешь смещение ip обработчика n-ного прерывания, а по адресу n*4+2 cs обработчика n-ного прерывания, только перед записью cs и ip не забудь выполнить команду cli, а после записи sti.
По поводу инфи системной памяти ДОСа у меня на винте валялось гдето!)))

Ответ отправлен: 14.08.2002, 23:31
Отправитель: Pablo


 Вопрос № 965

Здравствуйте!
В чем разница между режимом чистого DOS и эмуляцией DOS под Windows?
Т.е. всего 3 режима:
1)DOS, получается загрузкой в DOS
2)DOS emulation mode (получается загрузкой путем "restart in MSDOS mode")
3) запуск DOS программы из-под Windows без перезагрузки
Есть ли у кого-нибудь ссылки - каково отличие этих режимов при никзоуровневом программировании?
В частности через прерывания и DMA?
В моем случае я программирую плату АЦП (ISA) и вижу, что при запуске в режиме чистого DOS, DMA работают и прерывания получаю с нормальной скоростью, а при запуске двумя другими путями той же программы, ловлю гораздо меньше прерываний от платы а DMA вообще плохо идет.
Спасибо.



Вопрос отправлен: 12.08.2002, 19:37
Отправитель: Андрей

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

Отвечает copycon

Приветствую Вас, Андрей!
Что значит пункт 1?
При загрузке F8 и пункт "command promt only"?
IMHO, режима всего ДВА:
1) DOS
2) DOS virtual machine
Итак:
1) Просто DOS
очень много зависит от того что загружаеться, а конкретно менеджер памяти.
Если ничего нет - ура вперед (если нет злостных резидентов)
Если он есть (EMM, QEMM, ext.) то ты находишся в защищенном режиме, хотя для обычной программы это практически ничего не значит, а тебе - больше вероятность чего-нибуть потерять, так-как помимо твоего процесса работает еще куча всего.
2) VM Dos
тут вообще - полный отстой.
IMHO, выход из этого или ЧИСТЫЙ DOS, или аппаратно реализовывать FIFO (смотри как это сделано на COM портах)
тогда у твоей платы будет буфер для данных и потери должны исчезнуть.
Вообще на базе PC/x86 реализовать настоящий
REALTIME - трудно
а под Windows (что-бы windows работала) - невозможно.
Удачи.


Ответ отправлен: 15.08.2002, 21:39
Отправитель: copycon


Отвечает Broken Sword

Приветствую Вас, Андрей!
Я попытаюсь разьяснить чисто на низком уровне:
1. Значит, первый случай - чистый RM, флаг PE в CR0 - сброшен, VM тоже лежит. Так что тут все ясно.
2. Это вообще хрен знает что такое. Как я думаю, после "restart in MSDOS MODE" проц находится точно в таком же состоянии, как и в 1. пункте, хотя подсознательно помню какую то инфу, по поводу того что это не так.
3. Ну тут все ясно. Это чистый V86 (стоит флаг VM).
Теперь насчет того, какие различия. Различия, по-мойму, налицо: 2 и 3 "эмулируют" ДОС, т.е. прерывания проходят еще как минимум несколько обработок перед тем, как предстать перед нами в "чистом" виде. Потому и тормознее есессно...

Ответ отправлен: 12.08.2002, 20:25
Отправитель: Broken Sword


Отвечает Dark_Lord

Приветствую Вас, Андрей!
Разница огромная, чистый дос, это круто, restart in MSDOS mode, хуже, там всё выполняют виндовские драва, а эмуляция виндоза...Ну как бы это по культурнее сказать, там винда всё Эмулирует в самом плохом смысле слова!

Ответ отправлен: 12.08.2002, 20:36
Отправитель: Dark_Lord


Отвечает Igoryk

Здравствуйте, Андрей!
1. Dos загруженный с дискеты - это "чистый DOS". Здесь будут работать все прерывания, работа с портами на низком уровне и т.п.
2. Эмуляция DOS - изо всех сил приближение к чистому DOS'у, но некоторые функции ассемблера могут не работать.
3. Сеанс MS-DOS - работа почти со всеми портами запрещена. Он вообще не походит на DOS, потому что все прерывания перехватывает Windows и часть из них запрещает.

Ответ отправлен: 13.08.2002, 13:10
Отправитель: Igoryk


Отвечает LIFO

Доброе время суток, Андрей!
Первые два вроде бы идентичны, а вот третий отличается.
Первые два загружаются в Real MOde. А третий в Protected Mode (загружены драйвера типа emm386.exe, кот. неявно переводят проц в Protected Mode)


Ответ отправлен: 14.08.2002, 11:41
Отправитель: LIFO



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

Внимание!
Форма может работать некорректно в почтовых программах "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++ (27)
Perl (14)
Delphi (18)
Pascal (27)
Basic / VBA (11)
Java / JavaScript (12)
PHP (11)
MySQL / MSSQL (11)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (32)
"Железо" (36)
Поиск информации (19)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (12)
Юристу
Гражданское право (7)
Семейное право (5)
Трудовое право (6)
КоАП (4)

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




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

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


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

В избранное