Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 305
от 01.07.2002, 00:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 588 Отправлено ответов: 1619 Активность: 275.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Broken Sword Статус: Профессиональный Общий рейтинг: 145.24 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 130.8 [Подробней >>] |
Portnov Статус: Опытный Общий рейтинг: 146.52 [Подробней >>] |
Vint by Shz Статус: Опытный Общий рейтинг: 114.28 [Подробней >>] |
Gibbel Статус: Опытный Общий рейтинг: 109.28 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Zloy Статус: Доверительный Общий рейтинг: 105.67 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 161.18 [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 124.89 URL: Пристанище неодинокого программиста [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 142.32 Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Guess Who Статус: Доверительный Общий рейтинг: 105.08 [Подробней >>] |
Blackeye Статус: Профессиональный Общий рейтинг: 118.81 URL: Delphi, my programms... [Подробней >>] |
Федос Статус: Доверительный Общий рейтинг: 116.66 [Подробней >>] |
Shal Статус: Доверительный Общий рейтинг: 106.47 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 541. Здравствуйте, уважаемые эксперты. В последнее время, в результате регулярных умственных упражнений у... (ответов: 3)
Вопрос № 542. Здраствуйте, ув. эксперты!! Я решил написать програмку, которая которая не дала бы использовать к... (ответов: 5)
Вопрос № 543. я все же не утерпел и пишу сюда: как у вас там дела с прогой baldr-а ? Поторопитесь! И вправду оказа... (ответов: 1)
Вопрос № 544. Мое Вам уважение ! Объясните мне, почему программа вызывает сбой при работе ? Документации по Turbo ... (ответов: 2)
Вопрос № 545. Типа, привет всем... Мда... Че-то я с этой задачкой не учел контингента... :) Короче, уже подвожу ... (ответов: 2)
Вопрос № 547. Мне надо вывести на экран ВМР файл 256 цветов. Изображение выводится, но с палитрой путаница. Подска... (ответов: 2)
Вопрос № 548. Чесно говоря, офигеЛ, когда увидел сколько человек разрешило подкинутую baldr-ом задачку... это куда... (ответов: 1)
Вопрос № 549. Чесно говоря, офигеЛ, когда увидел сколько человек разрешило подкинутую baldr-ом задачку... это куда... (ответов: 1)
Вопрос № 551. Так что, никто больше не участвует в Hugi Compo? Одному мне пыхтеть? Поможите, люди добрые, а то все... (ответов: 1)
Вопрос № 552. Здраствуй помогите плиз разобраться вот умнажаю числа по очереди и выодит на экран нормально но дохо... (ответов: 6)
Вопрос № 553. Здравствуйте многоуважаемые эксперты! У меня вопросик про ассемблер и винду32J Если коротко – то ест... (ответов: 1)
Вопросов: 11, ответов: 25
Вопрос № 541 |
Здравствуйте, уважаемые эксперты.
В последнее время, в результате регулярных умственных упражнений у меня стали вызревать вопросы, на которые я не могу сам найти ответы. После некоторых моральных терзаний, я решил вынести их на ваш суд:
1.а. Я всегда раньше думал, что в реальном режиме в видеопамять вырезано окошечко 128 килобайт, а на днах подсчитал и выяснил, что для хранения одной странички 640х480х4 памяти нужно явно больше 128, не говоря уж о двух страницах 640х350х4. Так сколько же там всё-таки памяти?
б. Если видепамяти (в реальном режиме) 128 кил, или больше, то по идее в режиме 320х200х8 должно быть доступно аж 2-е видеостраницы. Так ли это?
в. Как инициализировать режим 320х400х8 ?
2. Что за зверь ДОС-расширитель и с чем его едят? Если точнее, то как должна быть устроена программа, работающая из-под расширителя? Если можете, подскажите, где можно найти подробную документацию по ДОС-раздвигатильм (пофиг, на каком языке)? А то сам я порылся, нашёл кучу самих расширителей, исходников к ним, но только не документацию.
3. Если кому не лень, пришлите пожалуйста самый элементарный пример написаной на ассемблере фунции, предназначеной дла вызова из C++ (что-то типа сложения двух интов). Главное, чтоб был полный текст asm-файла, а не только процедуры. Работать сие должно в модели памяти Large. И ешё, можно-ли так извратьться, что прилинковать метод для класса из отдельного obj-файла, написаного на ассемблере?
Вопрос отправлен: 25.06.2002, 21:25
Отправитель: G-nom
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, G-nom!
1.а. Маленькое уточнение: в реальном режиме под видеопамять отводится 160 Кб (от 0А000:0000 до 0B800:0FFFF).
640х350 - это зачем еще?
б. так...
в. 320х400 - это не стандартный VESA режим, поэтому на каждой видяхе по разному. Впринципе, в Ральфе Брауне есть что то типа этого (ah=00h int 10h, в al-номер режима, там есть 320x400,но это все какое то окно), короче это не то...
2. (щас тебе все напишут это из Зубкова):
Расширитель ДОС - это средство разработки (программа, набор программ, часть компоновщика или просто объектный файл, с которым нужно компоновать свою программу), позволяющее создавать 32-битные приложения, которые запускаются в защищенном режиме с моделью памяти flat и с работающими функциями DPMI.
фу.... не знаю откуда тов. Зубков вывел сие определение (может быть из своего конспекта по асм-у), но явно такое мог сочинить только препод в ВУЗ-е.
Ну и у него там еще много в таком духе, для тебя проблема в том, что все это только в напечатанном виде :)
3. C++ нада бы выучить, ато щас куда не плюнь (всяческие www.job.org) - в 90% случаях программист обязан знать этот язык (вообще по этим сайтам (работа в штатах программистом) интересно полазить)
Ответ отправлен: 26.06.2002, 00:30
Отправитель: Broken Sword
Отвечает Ayl
Доброе время суток, G-nom!
1. Ну, вообще-то, для видеопамяти в реальном режиме отводятся адреса с 0a000h:0 до 0b800h:0ffffh. Но какие именно адреса используются зависит от видеорежима.
Что за режимы 640*480*4 и 640*350*4, а также 320*200*8 и 320*400*8? Последние цифры - это количество цветов или глубина цвета? Скорее всего, последнее, то есть 16 цветов и 256 цветов.
Насколько я помню из описаний видеоадаптеров, так там вообще для каждого режима отводится только один сегмент видеопамяти (64К)! Т.е. адресуется только память от BASEADDR:0 до BASEADDR:0ffffh. А BASEADDR может принимать только значания 0a000h или 0b800h (для монохромного режима (а кто это у нас такой использует, а?) еще и 0b000h).
Т.о. в режиме 256 цветов 320*200 (стандартный VGA 13h) размер графического изображения занимает практически всю отведенную память (64000 из 65536 байт). Т.е. возможно использование только одной страницы.
Но! Адаптеры EGA, VGA и SVGA организованы достаточно хитро. А именно, в своих родных режимах (640*350*16ц, 640*480*16ц и т.п.) один байт адресуемого пространства реально отображается на 4 байта памяти адаптера. Как любят писать в умных книжках, экран в таких режимах представляет собой 4 плоскости, каждая из которых имеет диапазон адресов 0a000h:0 - 0a000h:0ffffh. Т.е. реально вся память в этих режимах равна 64К*4 = 256К. Но это - то, что можно адресовать, а реально может быть и меньше (кто найдет такой анахронизм?).
Отображение 1 байта от процессора в 4 байта памяти адаптера происходит достаточно хитро, используя дополнительные возможности адаптера типа карманов, регистра выбора увета и т.п. Лучше найти информацию о программировании EGA/VGA адаптеров, там это подробно расписано. Могу порекомендовать книжку М.Абраш "Таинства программирования графики".
Режим 320*400*256ц - нестандартный, хотя работает на любом VGA с не менее чем 128К памяти. В той же книжке он описан достаточно подробно, также как и еще один нестандартный режим 360*480*256ц.
Ответ отправлен: 26.06.2002, 11:48
Отправитель: Ayl
Отвечает Portnov
Добрый день, G-nom!
1. Видеопамяти столько, сколько понимает видеоадаптер. Состояние флажка PM в MSW тут ни при чем. б),в) - см. TechHelp.
С уважением, Portnov.
Ответ отправлен: 26.06.2002, 13:01
Отправитель: Portnov
Вопрос № 542 |
Здраствуйте, ув. эксперты!!
Я решил написать програмку, которая которая не дала бы использовать комп в мое отсутствие пока ты не ввел пассворд. Но я пока не слишком хорошо знаю асм (только месяц назад начал), и поэтому ответьте, если не сложно, на пару вопросов:
1) Как сделать, чтоб моя прога была в АВТОЗАГРУЗКЕ или autoexec.bat?
2) Как блокировать мышу и некоторые комбинации клавиш типа Ctrl+Alt+Delete?
Вопрос отправлен: 25.06.2002, 22:16
Отправитель: _nod_ (_nod_@tyt.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Vint by Shz
Добрый день, _nod_!
Просто прописываеш её в автоексе( плохой вариант-мона в минимале бут обойти загрузку!).Можно в конце комманд.ком приписать ссылку на запуск твоей проги(хороший вариант- хрен отмажешся от пароля)
2.Мона перехватить вектор прерывания и поставить свой обработчик прерываний(канает тока в дос)
Ответ отправлен: 27.06.2002, 19:19
Отправитель: Vint by Shz
Отвечает Broken Sword
Добрый день, _nod_!
А зачем изобретать велосипед? В любом винде есть Screen Saver (свойства экрана), там есть то, что тебе нужно (задаешь пароль, включаешь скринсейвер и все, пока не введешь - будешь в звездах летать).
1. Помещаешь ее в автозагрузку (пуск-программы-там дето есть); в autoexece пишешь - lh program.com, а если хочешь это все сделать руками - открыть(3Dh)-записать(40h) в файл
2. Мышу - это 33 интерапт (а в винде уже сообщения). Ctrl Alt Del - это вообще святое. Даже не тронь ъ)
Ответ отправлен: 26.06.2002, 00:30
Отправитель: Broken Sword
Отвечает Gibbel
Приветствую Вас, _nod_!
Если под Дос, то:
1. Просто пропиши свою прогу в autoexec.bat
2. Перехвати прерывания
Если под винды, то:
1. Создаешь ярлык для своей проги в Автозагрузке, либо прописываешь свою прогу в HKLMSoftwareMicrosoftWindowsCurrentVersionRun, или HKCUSoftwareMicrosoftWindowsCurrentVersionRun и т.д....
2. Используешь hookи
Ответ отправлен: 26.06.2002, 10:16
Отправитель: Gibbel
Отвечает Zloy
Приветствую Вас, _nod_!
Лови на мыло!
Ответ отправлен: 26.06.2002, 12:45
Отправитель: Zloy
Отвечает Portnov
Приветствую Вас, _nod_!
М-дя.
1) про автозагрузку есть даже в хелпе Винды. Про autoexec.bat - какие сложности-то? Просто впишите туда
d:pathmyprog.exe
или
LH d:pathmyprog.com
2) Про мышу не знаю. Про Ctrl-Alt-Del - ф-цией WinAPI:
bool old;
//Выключить Ctl-alt-del
SystemParametersInfo (SPI_SCREENSAVERRUNNING,1,&old,0)
//Включить обратно
SystemparametersInfo (SPI_ScreenSaverrunning,0,&old,0)
Отключает Ctrl-Alt-Del, Alt-Tab, Win-D,Win-E etc.
С уважением, Portnov.
Ответ отправлен: 26.06.2002, 13:02
Отправитель: Portnov
Вопрос № 543 |
я все же не утерпел и пишу сюда: как у вас там дела с прогой baldr-а ? Поторопитесь! И вправду оказалось - взломать ее вполне реально! Три часа жизни (минимум) не покажуться вам прожитыми зря! :))
Вопрос отправлен: 25.06.2002, 22:52
Отправитель: Broken Sword (brokensword@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Broken Sword!
Так ты таки сломал ее? А 3 часа - это сильно! :)
Ответ отправлен: 25.06.2002, 23:04
Отправитель: masquer
Вопрос № 544 |
Мое Вам уважение !
Объясните мне, почему программа вызывает сбой при работе ?
Документации по Turbo Assembler у меня нет. Данный кусок был найден в дизассемблерной проге, которая работает нормально.
С благодарностью.
includelib import32.lib
extrn ExitProcess:near
.386
.model flat
.data
.data?
mnogit dd ?
.code
_start:
mov mnogit, 0d61f3h
mov ecx, 0ah
mov eax, mnogit
div ecx
push 0
call ExitProcess
end _start
Вопрос отправлен: 25.06.2002, 23:53
Отправитель: Илья
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Илья!
Перед div ecx обнули edx, ну, например cdq или xor edx, edx
Ответ отправлен: 26.06.2002, 00:13
Отправитель: masquer
Отвечает Portnov
Добрый день, Илья!
Скорее всего проблема в том, что вы объявили ExitPrtocess:near, а надо было ExitProcess:proc.
С уважением, Portnov.
Ответ отправлен: 26.06.2002, 13:11
Отправитель: Portnov
Вопрос № 545 |
Типа, привет всем...
Мда... Че-то я с этой задачкой не учел контингента... :)
Короче, уже подвожу итоги...
Broken Sword: начал ты резво, но немного не в ту сторону... А какой стимул-то был! ;)
Что прога делает ты, конечно, хорошо рассказал - я многого и сам не знал... :)
Решение прислал в самый последний момент - я почти уже собирался итоги подводить. Ну ладно,
пока с вокзалом погоди.
А написана она на самом чистейшем Си... Компилятор BC3.1 . Правда, запакована LZEXE и пара
байтиков в заголовке закоцана, чтоб не совсем уж по-ламерски было... Исходник, если не забуду -
прицеплю к вопросу. Правда, там был такой трабл: выводятся-то они в 7-ричной (!) системе,
так что правильные числа были немного другими. Но это уже моя ошибочка, так что все правы.
Артем Шегеда: Ответ получен, оценен... Победитель, правда, ниже. Но зато Артем приложил
еще и "комплект программ для взлома". Запустить не удалось, так как Free Pascal'я нема, а
Делфу грузить неохота - тормозная она. Квартиру продаешь рано - она пригодится еще... Вас
туда уже много... Эй, Sword, она у тебя хотя бы четырехкомнатная?
masquer немного отстал от Шегеды, но если, говоришь, уживетесь - так мне все равно... :)
Зато наиболее точно угадал параметры.
Ну а победителем стал Beeblebrox! Он прислал первым, с отрывом в 4 часа.
Поздравляем крутейшего дизассемблерщика! :)
Правда, сознаюсь, недооценил... Ну ладно, в следующий раз будет покруче... И не на Си...
Пароль masquer успел выдать в рассылку, но это уже роли не играло. ;)
Насчет квартиры: ;) было слишком легко и быстро, так что спортивного интереса не получилось.
Так что квартирку Sword пока покараулит до следующего конкурса. Тем более, что, боюсь, он со
своего вокзала прямиком ко мне под окна отправится, а мне еще хочется подышать воздухом без
повязок на теле... :)
Короче, спасибо всем и удачи! Как сессия закончится - еще что-нибудь придумаем, может.
По исходнику - немного оффтопик, но народ, думаю, поймет.
Приложение:
Вопрос отправлен: 26.06.2002, 00:12
Отправитель: baldr (baldr@pisem.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, baldr!
Нет, блин, с твоим экзешником я быстрее справился, чем с исходником, я в С только если сильно прижмет разбираюсь. Давай в следующий раз полиморф, антитрассировку - вот это интересно будет.
Хотя такой по сложности тест, как твой, можно применять при вступлении в эксперты, но это к Администрации, наверное.
Ответ отправлен: 26.06.2002, 00:47
Отправитель: masquer
Отвечает Артём Шегеда
Приветствую Вас, baldr!
Маленький комментарий.
1. Для компиляции проги достаточно иметь и BorlandPascal
2. Это ж какая у тебя машина, что Delphi тормозит? Неужели хуже Pentium?
3. ZIP-архив был скачан 25.06.2002 в 15:26, а последняя программа из "комплекта для взлома" была откомпилирована в 18:29 того же дня (это, типа, отмазка - мол какой я крутой)
4. А квартирку-то не больно и хотелось - нас и здесь неплохо кормят (а это уже почти по басне Крылова - про лису и виноград)
Ответ отправлен: 26.06.2002, 10:21
Отправитель: Артём Шегеда
Вопрос № 547 |
Мне надо вывести на экран ВМР файл 256 цветов.
Изображение выводится, но с палитрой путаница.
Подскажите как правильно установить палитру чтобы рисунок нормально выглядел.
Вопрос отправлен: 26.06.2002, 00:43
Отправитель: Kostya
[Следующий вопрос >>] [Список вопросов]
Отвечает Sensey
Доброе время суток, Kostya!
В разных бмп-шках палитра по разному записана. Поиграйся с порядком цветов. Там кажется BGRЯркость, а не RGBЯ
Ответ отправлен: 26.06.2002, 11:32
Отправитель: Sensey
Отвечает Артём Шегеда
Приветствую Вас, Kostya!
Напиши по этому адресу: hackishD. Он игрался с BMP, я ему помагал - так что, права на программу у него. Надеюсь, у него получилось...
Ответ отправлен: 26.06.2002, 12:05
Отправитель: Артём Шегеда
Вопрос № 548 |
Чесно говоря, офигеЛ, когда увидел сколько человек разрешило подкинутую baldr-ом задачку... это куда ж мне вас всех девать то? ) (квартирка трехкомнатная, с мамой, сестрой и котом (сестру с мамой можно впринципе положить на время в кладовку :)
Теперь, интересно было бы узнать, сколько времени каждый из экспертов потратил на все это дело. И еще, можно продолжить конкурс и выяснить, у кого получился "самый красивый" взлом. Я думаю, что не все шли по одному и тому же пути. Мне вообще было сложнее всех - я подозреваю, что я один полный ноль в сях, прошло минут с 10, прежде чем я раздуплил что такое putch, а всяческие CPUTN - это вообще темный лес дров. Тому кто знает Си лучше чем я асм было вообще нефиг делать мне кажется...
Теперь дальше. У меня вся суть взлома свелась к замене всего одного единственного байтика, последующего запуска и ввода 28 левых чисел (которых тоже не составит труда высчитать, но это уже не интересно).
Теперь скажите пожалуйста, как было все дело у вас (и опишите свои орудия труда :)
Впринципе, я использовал 3 вещи: IDA (хотя я как великий знаток С++ просто тупо взирал и прыгал по смещениям, что оказалось, однако, немаловажно в итоге), AVPUTIL (мой любимый отладчик, сегодня он вспотел (еще бы! и жара +30 в тени), ну и последний штрих довелся HIEW-ом (замена байтика). Были кой какие поползновения на TD, но чето то ли у меня руки кривые, то ли у меня нелицензионный дистрибутив :), но брейкпоинты на что бы то ни было он ставить категорически отказывался (только F2 - жалкое подобие всей вложенной мощи, как то BP на I/O, read, write и т.п., кстати, у кого еще не работает?)
Вообщем, чтоб теперь не оказалось, что вы сами останетесь на вокзале, без квартир, с билетами на руках :)
p.s. я вот тут задумал небольшую вещицу - типа hackme, только на асме и с защитой от трассировки - вот там и посмотрим... Часов 8 выкинутых из вашей жизни гарантирую :)
p.p.s. вот тут baldr еще пишет, что типа если что, то "...я живу в лесу в землянке, сплю с елкой под мышкой, электричества у меня нет, воды тоже, питаюсь землей и Святым Духом... Так что на конкурс ничего не дам... :)))".
Ничего, елка тоже в хозяйстве пригодится... (не говоря уже о Святом Духе) - вырезано цензурой )
Вопрос отправлен: 26.06.2002, 01:05
Отправитель: Broken Sword (brokensword@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Артём Шегеда
Добрый день, Broken Sword!
Всё, что использовалось - это TD5.0,TASM3.1,BP7.0,FAR1.7.b4.
Была попытка использовать IDA3.8b, но после загрузки ломаемой программы увидел, что там тёмный лес...
Ты подсказал идею про использование прерывания 21h - я перехватил его, получил список используемых функций, понял, что используется 7-я, перехватил её и поставил под отладку:
cmp ah,7
jne Continue
int 3
Continue:
Дальше - дело техники. TD,td,Td,tD,...
Потом вычислил, какие данные нам нужны - и результат на ладони.
Ответ отправлен: 26.06.2002, 10:29
Отправитель: Артём Шегеда
Вопрос № 549 |
Чесно говоря, офигеЛ, когда увидел сколько человек разрешило подкинутую baldr-ом задачку... это куда ж мне вас всех девать то? ) (квартирка трехкомнатная, с мамой, сестрой и котом (сестру с мамой можно впринципе положить на время в кладовку :)
Теперь, интересно было бы узнать, сколько времени каждый из экспертов потратил на все это дело. И еще, можно продолжить конкурс и выяснить, у кого получился "самый красивый" взлом. Я думаю, что не все шли по одному и тому же пути. Мне вообще было сложнее всех - я подозреваю, что я один полный ноль в сях, прошло минут с 10, прежде чем я раздуплил что такое putch, а всяческие CPUTN - это вообще темный лес дров. Тому кто знает Си лучше чем я асм было вообще нефиг делать мне кажется...
Теперь дальше. У меня вся суть взлома свелась к замене всего одного единственного байтика, последующего запуска и ввода 28 левых чисел (которых тоже не составит труда высчитать, но это уже не интересно).
Теперь скажите пожалуйста, как было все дело у вас (и опишите свои орудия труда :)
Впринципе, я использовал 3 вещи: IDA (хотя я как великий знаток С++ просто тупо взирал и прыгал по смещениям, что оказалось, однако, немаловажно в итоге), AVPUTIL (мой любимый отладчик, сегодня он вспотел (еще бы! и жара +30 в тени), ну и последний штрих довелся HIEW-ом (замена байтика). Были кой какие поползновения на TD, но чето то ли у меня руки кривые, то ли у меня нелицензионный дистрибутив :), но брейкпоинты на что бы то ни было он ставить категорически отказывался (только F2 - жалкое подобие всей вложенной мощи, как то BP на I/O, read, write и т.п., кстати, у кого еще не работает?)
Вообщем, чтоб теперь не оказалось, что вы сами останетесь на вокзале, без квартир, с билетами на руках :)
p.s. я вот тут задумал небольшую вещицу - типа hackme, только на асме и с защитой от трассировки - вот там и посмотрим... Часов 8 выкинутых из вашей жизни гарантирую :)
p.p.s. вот тут baldr еще пишет, что типа если что, то "...я живу в лесу в землянке, сплю с елкой под мышкой, электричества у меня нет, воды тоже, питаюсь землей и Святым Духом... Так что на конкурс ничего не дам... :)))".
Ничего, елка тоже в хозяйстве пригодится... (не говоря уже о Святом Духе) - вырезано цензурой )
Приложение:
Вопрос отправлен: 26.06.2002, 01:09
Отправитель: Broken Sword (brokensword@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Broken Sword!
Хе-хе, я уже, в общем-то, писал, как я пробовал. И мне в плане С было так же сложно, как и тебе. Сначала я файл просто открыл и посмотрел на внутренности, упаковку и то, что он под ДОС - я сразу заметил, начал судорожно рыться по всем компактам (давно уже давал себе слово упорядочить CD, да все лень-матушка), поиск осложнялся тем, что я точно не помнил точного названия проги (tron или cup), но потом нашел. Потом надо было уже на работу идти (утром файл получил), только вечером загрузил ИДУ начал смотреть, вспоминать ДОС. Заинтересовался последними call, начал проверять, последний оказался выходом, а вот предпоследний заинтересовал. Запустил софтайс и поглядел чего там творится, увидел, что идет работа с куском экзешника в конце файла, я его еще раньше заприметил, после одного и call увидел сравнение al с 0D, понятно, думаю, определяем возврат каретки, ну а дальше уже элементарно, немного мусора, вывод измененного значения or OurChar, 2Ah,
индекс*2+2 одной таблицы ксорится с индексом другой, ну и потом вручную выписал значения и перексорил их, вуаля! Я даже не разбирался, что там за 10 цифр выводится.
ИМХО, патчить файл не есть хорошим и красивым взломом.
!!!!!!!
Вообще результаты можно назвать интересными - ИЗ 49 ЗАРЕГИСТРИРОВАВШИХСЯ ЭКСПЕРТОВ ОТВЕТ ПРИСЛАЛО ТОЛЬКО 4 ЧЕЛОВЕКА.
!!!!!!!
Ответ на p.s.: ага, давай, только перед выходными. Я вот и себе думаю что-нибудь наваять, но я только под винды пишу, чего собственно и вам всем желаю.
Ответ на p.p.s.: ну, главное не приз, а победа
Ответ отправлен: 26.06.2002, 08:37
Отправитель: masquer
Вопрос № 551 |
Так что, никто больше не участвует в Hugi Compo? Одному мне пыхтеть? Поможите, люди добрые, а то все умные мысли закончились, ну, может, до 150 байт догоню, а у итальяшки уже 99, за державу обидно!
Мне в принципе даже не жалко опубликовать свой текущий вариант, только сдается мне, что это тупиковый путь, который посчастливилось найти именно мне :) Хотелось бы свежих идей...
Вопрос отправлен: 26.06.2002, 16:21
Отправитель: Beeblebrox (beeblbrx@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Добрый день, Beeblebrox!
Отвечу, чтобы в рассылку попало, может кто нить из вопрошающих поможет ) (в приложении см. мой вариант dec->roma), весит около 80 байт.
Вообще там этот Tx (или кто там на первом месте с 99 байтами) - это чето сильно круто мне кажется. У него в коде явно не все необходимые условия учтены (проверка на неправильность и т.д.), потому как вообще говоря алгоритм перевода dec<->roma как не крути меньше 140-150 байт вообще мне кажется нереальным... (еще и со всеми проверками!) Так что тут нечисто... можно впринципе всей рассылкой скооперироваться, пусть каждый думает свой кусок (а лучше пусть каждый напишет полноценную прогу, отправим самую маленькую.. и подпишемся как нить на манер "творческий коллектив рассылки asm.ru) :)
Не, вообще это ОЧЕНЬ неплохая идея - нада только чтобы человек 5-6 вызвалось... помните до чего мы дошли с сложением ASCII ? 25 байт !!(кажется...), и это при том что никто ни с кем не контачил. А если все вместе?
Помню, этот вопрос уже поднимался, только у всех сессия и т.п. Щас, как я понимаю сессия закончилась...
Короче, чего распинаться, щас не пожалею времени и всем экспертам, которые учавствовали в предыдущем конкурсе кину в ящик задание с hugi (ничего, 14 кило - не лопнет).
ато мы будем до августа сидеть (а 31 июля - deadline).
Кто еще хочет учавстовать - кидайте мне мэйл или сами качайте с www.hugi.de/compo...
Будет очень неплохо, если о нас заговорят в той рассылке (hugi) - это на сколько я знаю одна из серезнейших европейских групп
beeblbrox - спасиба!
p.s. я просто над этим алгоритмом (roma->dec) очень много думал и измарал кучу листов, и как бы "перегорел" (такое бывает когда над чем то долго думаешь и понимаешь что лучше уже не придумаешь), поэтому нужна ваша помощь, уважаемые господа эксперты!
p.p.s. если из аттача кому то нада чето перевести - обращайтесь
Приложение:
Ответ отправлен: 26.06.2002, 21:07
Отправитель: Broken Sword
Вопрос № 552 |
Здраствуй помогите плиз разобраться вот умнажаю числа по очереди и выодит на экран нормально но доходя до 5*5=10 у меня выводит только 0 и т.д. до 9 1-ки теряется спасибо заранее
Приложение:
Вопрос отправлен: 26.06.2002, 21:22
Отправитель: mirik
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Добрый день, mirik!
А ты знаешь, что существует такая вещь как отладчик? С его помощью такие ошибки вылавливаются в 5 сек.
В общем, дело в следующем. После умножения у тебя результат занимает полностью регистр ax. А при попытке вывода ты сразу же затираешь значение в регистре ah. И вообще не пытаешься выводить старшую цифру.
Кроме этого, код неоптимален:
1. Зачем каждый раз маскировать значение chislab? Там как была двойка, так до конца программы и останется. К тому же она вообще лишняя - умножение на два быстрее всего выполняется с помощью команды shl ax, 1
2. Для чего введен массив pr? Он же потом не мспользуется.
3. Вывод на экран лучше всего выполнить вот так:
xchg ah, al
int 29h
xchg ah, al
int 29h
4. Загрузку числа лучше выполнять вот так:
lodsb
В общем, программа долна выглядить примерно вот так:
Приложение:
Ответ отправлен: 27.06.2002, 11:57
Отправитель: Ayl
Отвечает Guess Who
Доброе время суток, mirik!
А с чего она будет выводиться, если вы ее сами и затираете(mov ah,2), ладно это, но вы ее все равно нигде не выводите! Делайте проще! int 29h - вывод символа из al, это раз, два это то, что вам надо сначала поменять местами ah и al и выводить их в этой последовательности.
PS: У вас какие-то проблемы с начальной матемматикой! То у вас: "каждое число перемножить на 2 и полученную сумму каждого числа", то 5+5=10.
Пожелание(от чистого сердца, не подумайте чего нехорошего)! Будьте внимательней, как при написании программ, так и при отправке вопроса!
Приложение:
Ответ отправлен: 27.06.2002, 01:48
Отправитель: Guess Who
Отвечает Blackeye
Приветствую Вас, mirik!
В вопросе то ошибка, ты 5*2 умножаешь, а не на 5*5. Как коряво код написан-то...чтобы много не исправлять я тут свою программу написал, надеюсь разберешься. Пока не забыл: выводитьсятолько 0, потому что число то в AX а не в AL только.
Приложение:
Ответ отправлен: 27.06.2002, 13:13
Отправитель: Blackeye
Отвечает masquer
Здравствуйте, mirik!
mov dl,al - dl - 8-разрядный регистр, а тебе нужно вывести строковое представление чисел больше 9, а это 16 разрядов, формируй строку, и потом уже выводи.
Ответ отправлен: 26.06.2002, 21:49
Отправитель: masquer
Отвечает Федос
Здравствуйте, mirik!
алгоритм у тебя конечно кривой какой-то. и почему это 5*5=10 ? ты лучше алгоритм поменяй на менее громоздкий и ошибки будет легче найти.
Ответ отправлен: 27.06.2002, 14:00
Отправитель: Федос
Отвечает Shal
Доброе время суток, mirik!
У тебя сделан вывод, когда в al число <9. А тебе еще надо сделать вывод, когда у тебя в al число >10 т.е. в ax 0100,0102...
Т.е. сравниваешь ah с 1.Если там 1, то выводи сначала ah,затем al.
Ответ отправлен: 27.06.2002, 16:21
Отправитель: Shal
Вопрос № 553 |
Здравствуйте многоуважаемые эксперты!
У меня вопросик про ассемблер и винду32J
Если коротко – то есть в винде32 структура DEVMODE есть у неё поле dmFlags dd ? по умолчанию – в MSDN описание значений, этого поля: типа ставите DM_BITSPERPEL – и это означает что Вы в структуре DEVMODE инициализировали поле dmBitsPerPel( количество бит на цвет точки – кому интересно) – и дальше может передавать эту структуру соответсвующей(ChangeDisplaySettings) функции и она поменяет текущие значения цвета и всего что нам нужноJ Дальше интересно – берем masm32 берем структуру заполняем интересующие поля и пытаемся установить какие поля мы заполнили – и тут … ml Нам радосно собщает что он не знает значения – DM_BITPERPEL и многих других – он оказывается может читать это поле только в численном виде(берем структуру, узнаем у аллаха её структуру да простит меня муза за тафталогию и пытаемся устанавливать биты ручками) и в windows.inc о таких тоже не слышали – так вопрос…
1.Есть ли полное соответствие между MSDN2001( и выше) и masm32v7?
2.Есть ли смысл если нет устанавливать его самому либо лучше тихо юзать иногда MMX и SSE(кому везет) и не пытаться изобретать Visaul Studio или Delphi(кой кому)?
3.Если есть смысл – то сколько по времени занимает с выходом новой версии windows upgrade библиотек для как можно более полного описания Билловых заморочек.
P.S. вопрос ближайщих приоритетов - за любое мнение буду благодарен
P.S.S.- (час спустя…) ладно это был не вопрос: в wingdi.h – эти фишки я нашел – не ищите их в поставке masm32v7 – не имеет он логического права называться Microsoft это грубая подделка для написания вирусовJ Вопрос вот в чем меня уже достали эти фишки от винды – реестры всякие и т.д. Помните мой вопрос про рендер (кто не помнит Бог с ним)? GLuxar тогда я был…Так вот у меня предложение – нет ли у кого желания поработать с матрицами – OpenGL – мне типа приспичило писать мини-AutoCAD – на САПРЕ - я, а железо(заводы, металлоконструкции, чертежы, ЕСКД и всякая другая пошлятина) мне не нравиться(просто и не перспективно)…Если кому интересно пишите на мыло(ВАМ за это ничего не будет – как и мнеJ) У нас в академии слово ассемблер сродни ругательству или черному квадрату МалевичаJ А auto-Cad стоит порядка 500$-1000$ ,а максимум переписаны ресурсыJ А ведь мона красиво забецать фунтифлыжину за лето… Ну так что Стьюденты(мать нас так и наше распределение)?J А коль нет таких то мир Вам добрые люди…
P.S.S.S.(еще час спустя…) – геймеры не ведитесь на WinXP – для игр полный бредJ 19.3fps Q3Arena – это полный аут – я его до 54 гнал на 98 – не ходите в клубы с XP – это обдираловкаJ Кстати вроде его движок сделан на OpenGL, а Driver Version Direct3D 1.0 – непонятка, ладно вопросов нет…
Если кому что есть написать – u’r welcome:mark@sns.net.ua
BorIS
фух - называется "бобёр выдыхай" или "вот ето подвтыкнул:)"
Вопрос отправлен: 27.06.2002, 00:23
Отправитель: BorIS
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, BorIS!
Убей меня - не увидел параметра dmFlags, по смыслу догадался что речь идет о dmFields, описание значений полей можно посмотреть в файле wingdi.h из VC.
1. hutch и другие постарались, чтобы в пакете было как можно полное описание, но, видимо, упустили описания из нескольких библиотек, я это не считаю серьезной проблемой, допиши то, что тебе нужно - вот и все.
2. Не понял, что устанавливать самому, нодо - используй MMX и SSE, благо, документации в инете полно.
3. Формулируй вопрос яснее - в чем есть смысл??? МСДН смотри для более полного описания.
Вау, мы имеем дело со специалистом - час ушел на то чтобы найти файл??? No comments.
З.Ы.: Как же я жестоко обманывался, работал, оказывается 4 года на продукте, который годится только для написания вирусов.
Ответ отправлен: 27.06.2002, 06:56
Отправитель: masquer
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (49) C / C++ (32) Perl (9) Delphi (16) Pascal (26) Basic / VBA (11) Java / JavaScript (6) PHP (7) MySQL / MSSQL (8) |
Пользователю Windows 95/98/Me (46) Windows NT/2000/XP (36) "Железо" (42) Поиск информации (21) |
Администратору Windows NT/2000/XP (19) Linux / Unix (14) |
Юристу Гражданское право (9) Семейное право (4) Трудовое право (6) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||