nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 20:12



Reply to topic  [ 270 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17, 18  Next
Отладочный модуль на К1801ВМ1 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
А ты попробуй пересобери исходники в старой вижуалстудии - авось заведётся?

А ты пересобери сам... :wink: Зачем мне этот "авось", когда я всё внимательно прочитал? :o
Вот тебе и исходники в руки: http://boulder-dash.narod.ru/bk_emulator/sources.html

_________________
iLavr


15 Jan 2018 01:15
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22379
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
А ты попробуй пересобери исходники в старой вижуалстудии - авось заведётся?

А ты пересобери сам... :wink: Зачем мне этот "авось", когда я всё внимательно прочитал? :o
Вот тебе и исходники в руки: http://boulder-dash.narod.ru/bk_emulator/sources.html

А где там написано, что в старых виндах не работает? Вроде всё что перечислено замечательно применимо и для винды-98

Пересобрать я конечно могу попробовать, но только это будет пересборка для XP...

_________________
:dj: https://mastodon.social/@Shaos


15 Jan 2018 01:35
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
А где там написано, что в старых виндах не работает?
Эти исходники сейчас по молчаливому наследству развивает и допиливает другой человек,
вот у него всё подробно и написано.

Shaos wrote:
Вроде всё что перечислено замечательно применимо и для винды-98

И у меня лично всего вот этого хламья нет:
Калмыков Юрий wrote:
Для успешной компиляции у вас также должны быть установлены:

1. VisualC++ v6.0 - компилятор (в интерфейсе используется MFC 4.2)
2. MSDN
3. Platform SDK
4. DirectX SDK - 8.0 или старше

_________________
iLavr


15 Jan 2018 02:14
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22379
Location: Silicon Valley
Reply with quote
Шестая студия вышла в 1998 году и была последней, которая работала на Win9X
MFC 4.2 поставлялся в составе Win98
MSDN незнаю зачем ему надо - может так приписал
Platform SDK - по идее если есть студия, то оно там уже есть
DirectX SDK 8 - вроде тоже не проблема, т.к. последней версией с поддержкой Win9X была 8.0а

_________________
:dj: https://mastodon.social/@Shaos


15 Jan 2018 02:26
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
...тоже не проблема, ...

Многое на свете не проблема... Но из-за программы, рамером в 156 КБайт, у меня как-то нет
желания разыскивать и втаскивать мегабайты этого хламья.
Я отлично представляю, что это из себя представляет. Но я не девелопер софта. :wink:

_________________
iLavr


15 Jan 2018 09:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Всё! Нашел точку вывода слова в порт о177714 ! :kruto:
Lavr wrote:
Могло быть сделано через switch (...) case ...
Действительно, сделано через switch (...) case ...

И мне очень захотелось проверить вот эту уже очень давнюю информацию - руки никак не доходили! 8)
begoon wrote:
компилятор C развернет длинный switch в jump table, который будет работать гораздо быстрее,
чем любая логика по разбору опкодов по методу дизассемблера.
Фактически, этот switch будет реализован одним jmp'ом.

Чистая правда! Длинный switch реализуется одним jmp'ом! :o
В результате всех ухищрений хитрого С++, код
Code:
  case 0177714:
    if (m_pCovox)
      m_pCovox->SetWord (0177714, src);
    return;
в ассемблере выглядит как
Code:
 .00405D99: 668B542440                   mov       dx,[esp][00040]  //--- src
 .00405D9E: 66895658                     mov       [esi][00058],dx
 .00405DA2: E936FFFFFF                   jmp      .000405CDD //--- всякие манипуляции и retn
где числом 0177714 = FFCCH просто и рядом не пахнет! :roll:
Если не знаешь, что искать - никогда не найдешь... :wink:

Ну а точку ввода из порта о177714 я нашел сразу - там всё проще и подходит к моей задаче.
Коды клавиатуры проецируются на биты слова из порта о177714, изображая джойстик.

Что ж... попробую теперь корректно "инжектироваться" в код... :wink:

_________________
iLavr


15 Jan 2018 11:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Shaos, пока я ищу точку входа (а я надеюсь, что всё же найду), посмотри вот этот материал:
http://arhiv.xaker.name/threads/22158/
Всё ли там достоверно?
Однако... метод красив и вполне работает, причем корректно! :kruto:

Его вариации много где с разной степенью бестолковости описывают:
Внедрение кода из dll ;
Как внедрить код в exe-файл ;
Жесткое внедрение DLL в Windows-программы ;
Техника внедрения кода в РЕ-файлы .

Но всё же наиболее популярно Мыщъх Касперски излагает вот здесь:
Новый способ 'склеить' два исполняемых файла
Я придержался этого изложения, оно понятнее, хоть и небезгрешно, но идея везде примерно одинакова...


P.S. Для понимания сути дела очень полезен вот этот материал на русском:
Структура исполняемых файлов Win32. PE-файлы: общее описание.

_________________
iLavr


16 Jan 2018 21:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Что-то я затупил в самый неподходящий момент... :osad:

Shaos, как создать окно из dll-библиотеки? :roll:

Описанным выше методом она цепляется к ехе-файлу статически, т.е. когда файл загружается,
то dll-библиотека подгружается неявно, отрабатывает
Code:
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
    if (fdwReason==DLL_PROCESS_ATTACH)
       ...
при открытии, и
Code:
    if (fdwReason==DLL_PROCESS_DETACH)
      ...
}
при закрытии.

Доступна функция, через которую из ехе-можно передать значение.

А вот где создавать окно из dll-библиотеки? Я тут что-то и затупил... :wink:

_________________
iLavr


17 Jan 2018 16:52
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22379
Location: Silicon Valley
Reply with quote
да в DllMain и создавать - не?

_________________
:dj: https://mastodon.social/@Shaos


17 Jan 2018 18:06
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
да в DllMain и создавать - не?

Я по простоте душевной сначала тоже так с разбегу думал... но оказалось, что в
Dll всё не так просто...

Нашел пример похожий: Creating a Window from a DLL
Но там всяких мелких ошибок понасыпано, в том числе и компиллер старый у меня... :wink:
Пересобираю потихоньку... но расписано всё вроде по уму.

_________________
iLavr


17 Jan 2018 22:37
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Пересобираю потихоньку... но расписано всё вроде по уму.

Аааааааа! Заработалооооооо! :kruto:
Attachment:
dididisp.gif
dididisp.gif [ 21.92 KiB | Viewed 7319 times ]

Не утерпел! "Всплыл" оконной DLL-кой из консольного приложения Венды! :lol:
И ничего! Венда не упала! (На форме конечно-же просто картинка-фон для удовольствия...)

В общем корректно инжектироваться в готовый код - можно!
Всплыть из DLL-ки отдельным окном - тоже можно!

Ну теперь осталось подчистить всяки сопли и, собственно, написать в DLL-ке код
7-сегментного индикатора.
А это несложно, но довольно муторно. Венда весьма противно работает с графикой,
всякие эти контексты... бит-блиты... :-?

_________________
iLavr


18 Jan 2018 09:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В общем корректно инжектироваться в готовый код - можно!
Всплыть из DLL-ки отдельным окном - тоже можно!
Ну и поскольку всё это не было самоцелью, то я быстренько инжектировал ту же самую DLL-ку в код эмулятора БК-0010...
И всё получилось, как и было задумано! :kruto:
Attachment:
didiBK0010.gif
didiBK0010.gif [ 47.97 KiB | Viewed 7310 times ]

Хотя в общем-то шибко радоваться еще рано, просто DLL корректно вошла в адресное
пространство ЕХЕ-файла, и он импортировал её функцию.
Посмотрим, как это всё дальше взаимодействовать будет, не упало бы в процессе... :-?

_________________
iLavr


18 Jan 2018 14:24
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22379
Location: Silicon Valley
Reply with quote
а тут PEEK и POKE двухбайтовые или однобайтовые? процык вроде как 16-битный (и шина данных тоже)

а то мы с автором эмулятора МК-85 (и всех расширений ПЗУ для МК-85) тут договорились в МК-85 наряду с уже добавленными однобайтовыми PEEK/POKE сделать двухбайтовую вариацию, когда символ # перед адресом указывается - типа POKE 104,0 будет обнулять один байт по адресу 104, а POKE #104,0 будет обнулять слово - т.е. байты с адресами 104 и 105...

_________________
:dj: https://mastodon.social/@Shaos


18 Jan 2018 20:08
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
а тут PEEK и POKE двухбайтовые или однобайтовые? процык вроде как 16-битный (и шина данных тоже)...
А ты знаешь, я тоже задавался этим вопросом, когда вспоминал, кто такие PEEK и POKE. :lol:

И ведь они оказались честные олдскульные однобайтные PEEK и POKE! :o
Что особенно впечатляет по нечетным адресам! 8)

_________________
iLavr


19 Jan 2018 01:56
Profile
Senior

Joined: 12 Jul 2016 21:30
Posts: 136
Reply with quote
Lavr wrote:
И ведь они оказались честные олдскульные однобайтные PEEK и POKE! :o
Что особенно впечатляет по нечетным адресам! 8)


Видимо реализуется инструкцией movb.


19 Jan 2018 02:17
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 270 posts ]  Go to page Previous  1 ... 11, 12, 13, 14, 15, 16, 17, 18  Next

Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.