VirtualAlloc + rep mosb

Тема в разделе "WASM.BEGINNERS", создана пользователем psu, 13 сен 2007.

  1. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    Выделяю буфер
    Код (Text):
    1. VirtualAlloc( 0, sz, MEM_COMMIT, PAGE_EXECUTE_READWRITE )
    далее
    Код (Text):
    1. mov edi, eax
    2. lea esi..
    3. mov ecx...
    4. rep movsb
    Первый байт буфера постоянно 0xCC. Знакомая какая-то ошибка, но выловить не могу.
    Суть: пишется упаковщик. Загрузчик помещаю в секцию, которая до упаковки имела точку входа. Данные этой секции записываю в новую добавленную секцию. При старте упаковщик должен скопировать себя в буфер, записать на свое место прежние данные, распаковать, настроить и т.д.
    Вот скопировать себя в буфер и не получается
     
  2. 0x00786F72

    0x00786F72 New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    30
    Бряк на точке входа?:)

    Добавлено:
    В смысле на той инструкции с которой начинаешь копирование.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    psu
    Первый байт буфера постоянно 0xCC.
    Под отладчиком смотришь?
     
  4. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    q_q
    да
    0x00786F72
    Точно! оно
    исправить это можно?
     
  5. 0x00786F72

    0x00786F72 New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    30
    psu
    Уберите breakpoint'ы. 0xCC - это опкод int3. Отладчик заменяет первый байт инструкции на int3, чтобы прерваться на нем.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А ты не прогоняй под отладчиком. Не будет "странных" цеце появляться, ибо отладчик, Как было сказано, использует этот опкод (INT3) для софтварных бряков.
    Либо как вариант - используй только аппаратные бряки
     
  7. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    psu
    Плагин для ольки PolymorphicBreakpoint в таких случаях хорошо помогает. Ну или бряки сам убирай.