загрузка exe

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DooD, 16 Jun 2013.

  1. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    имеется ввиду 16 битного.
    вот com грузится как: когда мы его нашли,резервируем какое то кол-во памяти, устанавливаем смещение 0x100 ( потому что все КОМы работают по нему) и делаем длинный retf на адрес.
    как экзэшник- что то туплю, по идее сверяем сигнатуру MZ, а потом надо установить адрес imagebase ведь оттуда начинается выполнение,но еще есть же релоки-значит как то надо настраивать адреса.кто может подскажите)
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    бля я ослеп.

    ты про NTVDM или realmode и мсддос?

    (если што - гугли по этим понятиям, я под дос кодил давно когда асм тока изучал - автору книги мудиле отдельный респект что виндовому асму он решил обучать с этой хрени)
     
    #2 sn0w, 17 Jun 2013
    Last edited: 17 Jun 2013
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    реальный режим, голый.
    там не имеет значение ОС потому что ни прерывания , ни функции не используются.
    пока что нашел только вот:

    Code:
    mov ds,ax
    add ax,[ds:0x08] ; <--- imagebase
    mov cx,[ds:0x06]; <--- reloc items
    mov bx,[ds:0x18]; <--- reloc table (указатель)
    
    как настроить relocations пока еще не понял
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    какие могут быть PE если оси нет как таковой?)))
     
  5. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    да вот так легко и просто.например ничего не использовать кроме прерываний микросхемы bios, вполне можно грузить exe такого формата.http://faydoc.tripod.com/formats/exe-DOS.htm
    и по твоему как дос писали?)
     
  6. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    ну и?))
     
  7. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    увидишь короче ))))))
     
  8. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    формат PE это формат принимаемый ос - дос или виндов, по правилам которого ос загружает модуль,
    а вообще голый режим без всего как ты упомянул - никакого формата не требует,
    как биос передал управление в бутдевайс - так и хуеверть
     
  9. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    ты не поняв.
    берем exe (пишем на асме,паскале,с) отключив все либы (т.е. доступны ток прерывания биос). кидаем в корень.находим.выделяем память,устанавливаем imagebase и релоки по адресам из той схемы и входим в entrypoint откуда и исполняем код.как то так вот.
     
  10. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    я не понял что ты хочешь сделать - загрузчик 16битных ехе под дос?
     
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    загрузчик exe в fat12
     
  12. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,290
    Reputations:
    327
    аа, чтоб канпилить на це/етц и продукт выхода можно было этим загрузчиком исполнить чтоли
     
  13. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    сечешь.
    мое извращение- запустить этим лодырем самописный текстовый морской бой))
    а потом применить для загрузки командного процессора с основными ф-ями т.н. ОС )))
     
  14. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    first blood!

    [​IMG]
     
    1 person likes this.
  15. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Я хоть и перечитал, но все равно не понял зачем тебе это надо :)
    Нативный код можно и через тотже FASM скомпилить...

    По поводу твоих первоначальных вопросов типа как грузить, как делать релоки, гугли PE Loader. И Slesh здесь публиковал свой загрузчик dll (что-то типа скрытая загрузка dll), там весь код есть (нового все равно ничего не придумаешь).
     
    _________________________
    1 person likes this.
  16. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    микроядро для своей говно оси.практически единственное отличие в том что размер >64 кб поддерживается.
     
  17. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    теперь меня интересует как создать файл,есть fs fat12 и прерывания bios. предполагаю что надо работать на прямую с жд,хотя чувствую что ошибаюсь.
     
  18. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Думаю ты не ошибаешься. Напрямую надо работать с ЖД, так как 25 и 26 это функции системы DOS.

    Насколько я помню можно ведь свои прерывания добавлять (но это опятьже в системе DOS вроде как), тобишь повесить свои микропрограммы, которые используют 13 прерывание.
     
    _________________________
  19. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    даже не знаю как подступится к делу. судя по описанию ФС надо писать в секторы которые объединяются в кластеры,но как допустим при выводе каталога (пусть даже как dos 1.0 используем только корневую папку) представить что файл существует.
     
  20. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Всмысле как? FAT это таблица, по ней и определяй какие файлы есть и где расположены, сколько места они занимают и с какого сектора в каком кластере размещаются.

    Тебе все придется руками организовать все операции с файлами - создание, открытие, чтение, запись, возможно поиск... удаление (из таблицы FAT)...
     
    _________________________