Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А ты пересобери сам... Зачем мне этот "авось", когда я всё внимательно прочитал? Вот тебе и исходники в руки: http://boulder-dash.narod.ru/bk_emulator/sources.html
_________________ iLavr
|
15 Jan 2018 01:15 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22826 Location: Silicon Valley
|
А где там написано, что в старых виндах не работает? Вроде всё что перечислено замечательно применимо и для винды-98 Пересобрать я конечно могу попробовать, но только это будет пересборка для XP...
|
15 Jan 2018 01:35 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Эти исходники сейчас по молчаливому наследству развивает и допиливает другой человек, вот у него всё подробно и написано. И у меня лично всего вот этого хламья нет:
_________________ iLavr
|
15 Jan 2018 02:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22826 Location: Silicon Valley
|
Шестая студия вышла в 1998 году и была последней, которая работала на Win9X MFC 4.2 поставлялся в составе Win98 MSDN незнаю зачем ему надо - может так приписал Platform SDK - по идее если есть студия, то оно там уже есть DirectX SDK 8 - вроде тоже не проблема, т.к. последней версией с поддержкой Win9X была 8.0а
|
15 Jan 2018 02:26 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Многое на свете не проблема... Но из-за программы, рамером в 156 КБайт, у меня как-то нет желания разыскивать и втаскивать мегабайты этого хламья. Я отлично представляю, что это из себя представляет. Но я не девелопер софта.
_________________ iLavr
|
15 Jan 2018 09:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Всё! Нашел точку вывода слова в порт о177714 ! Действительно, сделано через switch (...) case ...И мне очень захотелось проверить вот эту уже очень давнюю информацию - руки никак не доходили! Чистая правда! Длинный switch реализуется одним jmp'ом! В результате всех ухищрений хитрого С++, код в ассемблере выглядит как где числом 0177714 = FFCCH просто и рядом не пахнет! Если не знаешь, что искать - никогда не найдешь... Ну а точку ввода из порта о177714 я нашел сразу - там всё проще и подходит к моей задаче. Коды клавиатуры проецируются на биты слова из порта о177714, изображая джойстик. Что ж... попробую теперь корректно "инжектироваться" в код...
_________________ iLavr
|
15 Jan 2018 11:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Однако... метод красив и вполне работает, причем корректно! Его вариации много где с разной степенью бестолковости описывают: Внедрение кода из dll ;Как внедрить код в exe-файл ;Жесткое внедрение DLL в Windows-программы ;Техника внедрения кода в РЕ-файлы .Но всё же наиболее популярно Мыщъх Касперски излагает вот здесь: Новый способ 'склеить' два исполняемых файлаЯ придержался этого изложения, оно понятнее, хоть и небезгрешно, но идея везде примерно одинакова... P.S. Для понимания сути дела очень полезен вот этот материал на русском:Структура исполняемых файлов Win32. PE-файлы: общее описание.
_________________ iLavr
|
16 Jan 2018 21:24 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Что-то я затупил в самый неподходящий момент... Shaos, как создать окно из dll-библиотеки? Описанным выше методом она цепляется к ехе-файлу статически, т.е. когда файл загружается, то dll-библиотека подгружается неявно, отрабатывает при открытии, и при закрытии. Доступна функция, через которую из ехе-можно передать значение. А вот где создавать окно из dll-библиотеки? Я тут что-то и затупил...
_________________ iLavr
|
17 Jan 2018 16:52 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22826 Location: Silicon Valley
|
да в DllMain и создавать - не?
|
17 Jan 2018 18:06 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я по простоте душевной сначала тоже так с разбегу думал... но оказалось, что в Dll всё не так просто... Нашел пример похожий: Creating a Window from a DLLНо там всяких мелких ошибок понасыпано, в том числе и компиллер старый у меня... Пересобираю потихоньку... но расписано всё вроде по уму.
_________________ iLavr
|
17 Jan 2018 22:37 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Аааааааа! Заработалооооооо! Не утерпел! "Всплыл" оконной DLL-кой из консольного приложения Венды! И ничего! Венда не упала! ( На форме конечно-же просто картинка-фон для удовольствия...) В общем корректно инжектироваться в готовый код - можно! Всплыть из DLL-ки отдельным окном - тоже можно! Ну теперь осталось подчистить всяки сопли и, собственно, написать в DLL-ке код 7-сегментного индикатора. А это несложно, но довольно муторно. Венда весьма противно работает с графикой, всякие эти контексты... бит-блиты...
_________________ iLavr
|
18 Jan 2018 09:57 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну и поскольку всё это не было самоцелью, то я быстренько инжектировал ту же самую DLL-ку в код эмулятора БК-0010... И всё получилось, как и было задумано! Хотя в общем-то шибко радоваться еще рано, просто DLL корректно вошла в адресное пространство ЕХЕ-файла, и он импортировал её функцию. Посмотрим, как это всё дальше взаимодействовать будет, не упало бы в процессе...
_________________ iLavr
|
18 Jan 2018 14:24 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22826 Location: Silicon Valley
|
а тут PEEK и POKE двухбайтовые или однобайтовые? процык вроде как 16-битный (и шина данных тоже)
а то мы с автором эмулятора МК-85 (и всех расширений ПЗУ для МК-85) тут договорились в МК-85 наряду с уже добавленными однобайтовыми PEEK/POKE сделать двухбайтовую вариацию, когда символ # перед адресом указывается - типа POKE 104,0 будет обнулять один байт по адресу 104, а POKE #104,0 будет обнулять слово - т.е. байты с адресами 104 и 105...
|
18 Jan 2018 20:08 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А ты знаешь, я тоже задавался этим вопросом, когда вспоминал, кто такие PEEK и POKE. И ведь они оказались честные олдскульные однобайтные PEEK и POKE! Что особенно впечатляет по нечетным адресам!
_________________ iLavr
|
19 Jan 2018 01:56 |
|
|
SAA
Senior
Joined: 12 Jul 2016 21:30 Posts: 136
|
Видимо реализуется инструкцией movb.
|
19 Jan 2018 02:17 |
|
|