Вопрос по ImageBase

Тема в разделе "WASM.RESEARCH", создана пользователем _stub_, 19 сен 2008.

  1. _stub_

    _stub_ New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2008
    Сообщения:
    3
    Доброго времени.
    Ребята подскажите
    каким образом я могу правильно подкорректировать размер ImageBase exe-файла
    без вреда на его запуск.??
    Например:
    у меня есть exe c базой 0х1314 мне нужно подправить на 0х0040
    Посоветуйте, не обязательно программным путем, можно теорией...
    Спасибо.
    зы:сори,если не туда запостил...)
     
  2. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Если у ехе файла нету релоков то нету тривиального метода корекции ехе без вреда на его запуск.
    Поиск по форуму кейворды: конверт ехе в длл и.т.д.
     
  3. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    Пример:
    есть EXE с базой в 0x400000
    я использую в своей программе код типа:
    Код (Text):
    1. CreateThread(NULL, 0, &MyThreadProc, NULL, 0, &Thread);
    где функция "MyThreadProc" имеет адрес 0x406400

    под дизасмом это выглядит как
    Код (Text):
    1. push 0x401000 ; Thread address
    2. push 0
    3. push 0
    4. push 0x406400 ; MyThreadProc address
    5. push 0
    6. push 0
    7. call CreateThread
    или же так, тоже самое только на другой лад...(для примера)
    Код (Text):
    1. mov eax, 0x401000 ; Thread address
    2. push eax
    3. push 0
    4. push 0
    5. mov eax, 0x406400 ; MyThreadProc address
    6. push eax
    7. push 0
    8. push 0
    9. call CreateThread
    На примере думаю видно, что используются абсолютные (это вроде так называется =\ запамятовал что-то) смещения, так вот, если менять ImageBase, то прийдётся менять ручками код в частях которого каким либо боком учавствует ImageBase... реализовать можно, но не за один вечер. +кажется мне что ещё много чего обдумать надо будет.
    Жесть кароче :)
     
  4. Extranger

    Extranger New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    34
    Как такой вариант? Внедряем в исходный экзешник, код, который, перед началом выполнения, выделит память по старому базовому адресу, скопирует туда тело нашей программы, затем подправит кой-какие поля в PEB-е и, наконец, передаст управление по адресу: точка входа + старый ImageBase.
     
  5. _stub_

    _stub_ New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2008
    Сообщения:
    3
    2 Extranger
    Думал я уже так...Но тут уже имеем дело с антивирусами...=\
    Такс не очь подходит...

    Может есть еще какие-нить варианты?? %)
     
  6. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    Проще скрыть от антивируса чем мосх кампастировать этой хренью...
     
  7. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Еще не пробовал, но теоретически можно создать дескриптор с требуемой базой в LDT и загрузить его селектор в CS. Естественно, надо помнить о том, что внешние ф-ии в .dll, например, такого подвоха не ожидают и надо об этом позаботиться (разобрав таблицу импорта и вставив свои переходники, корректнирующие сегментные регистры). Но это пока только теоретически :).
     
  8. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Extranger
    Релоки применяются загрузчиком. Не исключено, что он вам в проге все перековеркает.
    Имхо, проще разобраться с релоками и применить/поправить их. Если релоков нет - или через ж, или не получится.
     
  9. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    это случайно требуется не для сокрытия пинча и других лоадеров с базой 13140000 от каспера, который их всех по базе и палит?
     
  11. Extranger

    Extranger New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    34
    _basmp_
    А никто и не призывает использовать данный прием, если дело касается файлов, у которых существуют таблица перемещаемых элементов. Просто релоки в экзешниках встречаются не так что б уж очень часто, а потому велика вероятность того, что у _stub_ как раз один из тех файлов, изменить базу которого, можно только через ж.
     
  12. _stub_

    _stub_ New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2008
    Сообщения:
    3
    2msoft - нет.
    спасибо ребята за ответы
    offtop:
    заметил что даже на обычный HelloWord с базой 0х1314
    ругается Avira...