"Как встроить свой код в исполняемый файл"

Тема в разделе "WASM.BEGINNERS", создана пользователем lideratua, 29 июл 2011.

  1. lideratua

    lideratua New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2011
    Сообщения:
    4
    Доброго времени суток всем мемберам wasm.ru!

    Нашел в интернете, вот такую статью - http://timur.idhost.kz/2010/11/04/kak-vstroit-svoj-kod-v-ехе/.
    Все выполнял, именно так, как там описывалось. При сохранении, и запуске - все работает, при перезагрузке ПК - программа не запускается. Пробовал трассировку в ollydbg, пишет следующее "Don't know how to step because memory at adress 77A5EA11 is not readable. Try to change EIP or pass exception toprogram." На виртуалке также не работает.

    В чем может заключатся ошибка, и как ее исправить? =\

    P.S. Проблема не только у меня, в коментарии, что после статьи, один юзер писал:
    "У меня при повторной загрузке изменйной программы в отладчике значение указтелея на строку INJECTED NOTEPAD не меняется, хотя программа загружается в другое место памяти. В результате в стек перед вызовом функции CALL MessageBoxA вместо строки заголовка и строки сообщения попадает левое значение."
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    ALSR ?
    Как винда стоит?
     
  3. lideratua

    lideratua New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2011
    Сообщения:
    4
    Всмысле как?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Хардкодить адрес системной функции неправильно. После перезагрузки базы системных библиотек на Win7 меняются.
     
  5. lideratua

    lideratua New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2011
    Сообщения:
    4
    Хм.. таким "методом", пробовал произвольный Hello world обрабатывать - после рестарта все нормально работает.

    ПыСы (Hello world)
    Код на fasm (стыбрен с examples компилятора)
    Код (Text):
    1. include 'C:\fasm\INCLUDE\win32ax.inc'
    2. .code
    3.   start:
    4.     invoke  MessageBox,HWND_DESKTOP,"bla bla bla",invoke GetCommandLine,MB_OK
    5.     invoke  ExitProcess,0
    6. .end start
    Ладно, всем спасибо, пойду теорию подучу...... :)
     
  6. lideratua

    lideratua New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2011
    Сообщения:
    4
    Выход найден, нужно делать вызов через таблицу импорта.
    [​IMG]
    В моем случае, это «CALL 40122C». Тогда все будет нормально работать.

    P.S. Тему можно закрывать! :)
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Хотел вам об этом написать, но подумал что всё равно не поймёте. Рад что у вас получилось.
     
  8. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    lideratua
    А если не notepad.exe, а приложение не юзающае user32.dll или секция импорта пошифрована?
     
  9. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.199
    Адрес:
    подполье
    Да, ежеле секция импорта пошифрована, то придется загрузчику конкретно поднапрячься дабы не впасть в когнитивный диссонанс:)
     
  10. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    pashe4ka13
    Значит ищем адрес kernel32.dll в PEB, далее находим там ф-цию LoadLibrary(A\W), ну и т.д.