Здравствуйте. Я (мегачайник) решил поразбираться с машинным кодом и начал читать статью "Введение в машинный код" (Serrgio). Там предлагается написать такую программу: B8-23-01-05-25-00-8B-D8-03-D8-8B-CB-31-C0-CD-20. Эту программу я написал в блокноте (и пробовал в редакторе, идущим с TotalComander) и она не работает (выдаёт ошибку)! Чёрточки "-" я конечно убрал и просто поменял расширение на com (exe тоже пробовал). Запускал из командной строки. Пробовал и на XP32 и на Vista64. Если прописать этот файл в debug (без всяких путей), то в командной строке запускается debug (появляется "-"), но до него появляется надпись о том что файл не найден. Если прописать пути (debug C:\myprg_1.com), то такого сообщения не появляется, но при нажатии на "u [Enter]" ничего похожего на то что написанно в статье тоже не появляется, как будто debug вообще не знал про программу. Есть ещё один вопрос. Я попробовал написать простейшую прогу на C++ (просто cout<<"Hello\n" и открыл её в блокноте. Если я не делаю с ней ничего и просто меняю расширение (exe->txt->exe), то она работает нормально. Стоит только что ни будь поменять и вернуть обратно, как блокнот запрашивает сохранение при выходе. Если сохранить изменения (которых нет!) и поменять расширение (txt->exe) то работать перестаёт и выдаёт ошибку. Почему? И там кстати, если просматривать FAR-ом машинный код, то в конце нет команды остановки CD20 (поиск её не находит), что тоже не понятно.
попробуйте все эти манипуляции делать через, напр, хиев или другой хекс редактор (поиск по форуму, на сайте в инструментах)
ой горе луковое.. возьми хекс редактор, а не текстовый. блокнот каверкает нетекстовые символы. еще раз говорю, возьми хекс редактор.. да и выше уже посоветовали (не заметил когда писал)
Senk а почему не yngwie19? 1) Найди учебники по программированию на ассемблере 2) Определись с каким ассемблером будешь работать (tasm, fasm, masm) 3) На сайте wasm.ru в разделе ИНСТРУМЕНТЫ > Компиляторы ищешь нужное 4) Воспользуйся советом La_plaza в #4 [offtop] Clerk %) это [/offtop]
Большое спасибо. Написал программу в HexWorkshop и она нормально заработала, и даже debug её принял. Вот только в той проге на C++ по прежнему нет команды CD20. И зачем-то там целая куча нулей. Если убрать часть этих нулей, то при запуске выходит ошибка. Естли же изменить какой ни будь символ (Hello H->B), то всё работает и символ меняется (Bello). Это здорово.
Senk Там предлагается написать такую программу: B8-23-01-05-25-00-8B-D8-03-D8-8B-CB-31-C0-CD-20. Эту программу я написал в блокноте - никто программы в таком виде не пишет. Наоборот, в таком виде они существуют (бинарники, значит). А в каком виде пишут ? - предвижу вопрос. А посему, наберите эту строку байтов, к примеру, в Hiew и включите дизассемблер - увидите эту программу.
А существует ли debug для 64-х разрядной системы? Просто я попробовал его перенести с компьютера на котором стоит Win32(XP) на комп. с Win64(Vista), и он (Win64) заругался на то что нужна 32-x разрядная система (или другая версия debug).
SenkНу понятно, что ты хочешь выставить меня дураком. Я не обижаюсь, т.к Я просто хочу разобраться с тем материалом, который мне не понятен, вообщем Я все так и сделал и у меня получилось вот что http://rapidshare.com/files/1576283...088___1080___1089___1091___1085___1086__.html
yngwie19 Не хочу я ни кого дураками выставлять! И вообще я не понял к чему это относится. А, понял. Вы открыли аналогичную тему... Извиняюсь, не заметил (вернее только что заметил...).
Берёшь HexWorkshop. File->New... в новом файле щёлкаешь правой кнопкой мыши на рабочее поле. Insert (n байт n= (кол-во разрядов кода)/2 или больше так чтобы код влез). Пишешь свой код. Сохраняешь (лучше в корень C:\, чтобы быстрее доставать). Меняешь расширение с никакого на com. Потом можно зайти в пуск->выполнить->[cmd], [Enter]->[debug c:\name.com] [Enter]->u. И должно получиться. По крайней мере у меня сработало. Можно cmd и не открывать, а сразу пуск->выполнить->->[debug c:\name.com] [Enter]-> [Enter].