Вопрос № 17684: Уважаемые эксперты ! Правильно ли я понимаю, что любую программу, написанную на любом языке высокого уровня, можно дизасемблировать и попытаться понять как она работает ?
Я одну загрузил в AFDPRO, а там первые же строки
.......
mov ah,9h...Вопрос № 17722: Где достать нормальное пособие по Assebler'у под win32 (для чайников :) )?...Вопрос № 17727: Помогите понять как запрограммировать контроллер прерываний под I8086...
Вопрос № 17684
Уважаемые эксперты ! Правильно ли я понимаю, что любую программу, написанную на любом языке высокого уровня, можно дизасемблировать и попытаться понять как она работает ?
Я одну загрузил в AFDPRO, а там первые же строки
.......
mov ah,9h
mov dx,offset string
int 21h
.........
string db 'Нужна Windows$'
Отправлен: 02.03.2005, 06:06
Вопрос задал: Slava_ (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: AxMAD
Здравствуйте, Slava_!
Теоретически можно, но как на практике не легко, а тем более если под windows.
Можно конечно использовать IDA Pro , он на мой взгляд всех лучше это делает.
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 02.03.2005, 09:13 Оценка за ответ: 4
Отвечает: Dark_Lord
Здравствуйте, Slava_!
В принципе, то что программу, написанную на любом языке програмирования (не скрипте), можно дизассемблировать и, даже, теоретически, понять как она работает. В данном случае проблемма в том, что AFDPRO дизассемблер досовских програм, а загруженная програма является Windows-приложением, а каждой Windows-приложение содержит програму-заглушку, которая выполняется если програма была запущена из доса. Именно эту програму-заглушку и получает AFDPRO. Дизассемблировать Windows-приложения можно, например, используя
W32Dasm (любой поисковик выдаст кучу ссылок). Удачи...
Ответ отправил: Dark_Lord (статус: Профессионал)
Отправлен: 02.03.2005, 12:02 Оценка за ответ: 5
Отвечает: Котиев Зураб
Здравствуйте, Slava_!
Ну это зависит от языка и уровня его "высокости" например дельфячные проги вывалят на тебя кучу прмежуточного кода , а также бесконечные джампы,большинстово компиляторов форта генерят шитый код который тоже фиг поймешь,basic генерит байт-код.
Хорошо понимается структура программы написанной на turbo pascal и c.
а В СОВРЕМЕННЫХ ПРОГРАММАХ МОЖНО лишь понять отдельные участки кода , да и то когда занимаешься краком.
Ответ отправил: Котиев Зураб (статус: 2-ой класс)
Отправлен: 02.03.2005, 18:00 Оценка за ответ: 4
Отвечает: Bob Johnson
Здравствуйте, Slava_! > Правильно ли я понимаю, что любую программу, на... Правильно > а там первые же строки И это правильно - ведь увидишь ты ее не в том виде, как она была написана, а в машинных кодах, в которые ее перевел компилятор. Но понять принцип ее работы из этого можно :)
* EMan2.0: ---===*** Debug mode ***===---
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.03.2005, 00:35 Оценка за ответ: 5
Вопрос № 17722
Где достать нормальное пособие по Assebler'у под win32 (для чайников :) )?
Отправлен: 02.03.2005, 19:39
Вопрос задал: Перов Виталий Георгиевич (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: AxMAD
Здравствуйте, Перов Виталий Георгиевич! Можно тут http://www.win32asm.cjb.net/ или тут http://www.wasm.ru
Дополнение от Иванова Евгения: Нормальное пособие - это практика, практика и только она! Изучайте, читайте книги, но главное - применяйте это на практике, создавайте программы, которые были бы полезны и работали.
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 02.03.2005, 19:53
Отвечает: Boriss
Здравствуйте, Перов Виталий Георгиевич!
По-моему, для чайников (и не только) очень хорошо пишет Калашников:
http://www.Kalashnikoff.ru
(пусть не воспринимает как подлизывание...)
Ассемблер для DOS
http://www.Kalashnikoff.ru/Assembler/
Ассемблер для Windows
http://www.wasm.zite.ru/
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 03.03.2005, 09:49 Оценка за ответ: 5
Вопрос № 17727
Помогите понять как запрограммировать контроллер прерываний под I8086
Отправлен: 02.03.2005, 20:56
Вопрос задал: Герасимов Виталий Витальевич (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Котиев Зураб
Здравствуйте, Герасимов Виталий Витальевич!
как я понял тебе нужно запрограммировать 8259a.
у него есть 4 слова инициализации.
с начала маскируешь хардверные прерывания
mov al,0ffh
out 21h,al
out 0a1h,al
1)потом загоняешь в порт 20h и A0h значение 11h,что означает что это первое слово инициализации ,используются два контроллера (master и slave для 16 линий прерываний),а также туда будет входить и 4-е слово.
mov al,11h
out 20h,al
jmp $+2
out 0A0h,al
jmp $+2
jmp для небольшой задержки.
2)потом второе слово ,которое отвечает на какие вектора ты повесишь IRQ(запросы на прерывание)
допустим на 40-4F.в порты 21h и 0A1h
mov al,40h
out 21h,al
jmp $+2
add al,8 ; т.е 48h-4Fh
out 0A1h,al;
jmp $+2
3)дальше в первый контроллер ты шлешь 04h, т.е , что используется master/slave режим, а во второй конроллер его номер т.е 2.
все это в порты 21h и 0A1h
mov al,04Р
out 21h,al
jmp $+2
shr al,1
out 0A1h,al
jmp $+2
4)ну и наконец 4-е. шлешь в 21h и 0A1h единицу.
это значит режим 8086,небуферизованный,обработчик прерывания сам должен посылать EOI(end of interrupt )
mov al,1
out 21h,al
jmp $+2
out 0A1h,al
jmp $+2
EOI реализуется просто:
mov al,20h
out 20h,al ;для первого контроллера
или
mov al,20h
out 0A0h,al;для второго
Ответ отправил: Котиев Зураб (статус: 2-ой класс)
Отправлен: 05.03.2005, 15:46