"Выдирание" бинарного кода из ЕХЕ-файла в момент его выполнения

Тема в разделе "WASM.WIN32", создана пользователем Begemot, 15 дек 2006.

  1. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Такая задача: как можно программным путем выдрать код из исполняемого файла расположенный между двумя метками в момент выполнения этого выполняемого файла?
    Т.е. выдирание происходит из самого себя.
    Ну, и к примеру записать это в выходной файл?
    Желательно увидеть это дело на Си/Си++, т.к. использоваться будет там, но там тоже есть асм и его тоже можно использовать если так будет проще, т.е. что-то вроде макроса...

    Заранее благодарю всех откликнувшихся.
    Спасибо.
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  3. tar4

    tar4 New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    43
    Не свосем понятно, зачем из своего файла выдирать код. Из чужого - понятно. А по существу, как обычно, через апи. OpenProcess ( свой хэндл получаешь) ReadprocessMemory (читаешь память с нужной метки- адреса), WriteFile (пишешь в файл на диск). Ну, еще пару другим вспомогательных API. А код писать, извини, лень .
     
  4. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    crypto
    Хм, т.е. универсального решения так и не придумали?
    Жаль...
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    tar4
    А где ты адреса собираешься узнавать? :)
     
  6. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    tar4
    Шутник. Какой Апи? OpenProcess, ReadprocessMemory чему это?
    memcpy - rulez!
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    memcpy требует вроде начальный адрес и размер кода. помоему сам вопрос состоит в том чтоб этот адрес найти
     
  8. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    FreeManCPM
    Судя по вопросу - метки известны. Найти в памяти метки - тривиальная задача. Скопировать - вообще не проблема.
    Или мы здесь будем обсуждать алгоритмы поиска байтов? Повторюсь - по формулировке вопроса - метки заданы.
    В чём проблемы?
     
  9. Begemot

    Begemot New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2006
    Сообщения:
    79
    Да, метки есть. Похоже что все сводится к вычислению точной длины копируемого блока.
     
  10. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    хм. от адреса конечной метки отнять адрес начальной..