запретить чужому exe'шнику запускаться без моего главного процесса

Тема в разделе "WASM.BEGINNERS", создана пользователем debugx, 16 мар 2009.

  1. debugx

    debugx New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    13
    Привет всем,
    Есть сторонний exe файл, нужно сделать так, чтобы его нельзя было запустить без моей главной программы.
    Была идея хранить его в зашифрованном виде, из моей программы расшифровывать и запускать из памяти, но похоже, что это не так просто.
    Я могу в него свою длл инжектить, вот может можно как-то exe'шник подправить, чтобы он при запуске смотрел свою таблицу импорта и если не находил там мою длл, то не запускался?
    или еще какие идеи? В какую сторону смотреть?
     
  2. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Может я чего-то непонял. Сделай так, как поступают простенькие врапперы от NevoSoft итд.
    Портишь EP(точку входа) у нужного ехе, после чего он станет неработоспособным. Для красоты можешь туда написать завершение программы (ret), чтобы с ошибкой не валился.

    А твоя прога будет запускать этот ехе (CreateProcess), после чего переписывать попорченные байты (WriteProcessMemory) и отпускать на исполнение.
     
  3. debugx

    debugx New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    13
    спасибо, а можно чуть подробнее, как это сделать? я просто пришел из плюсов и с асмом на Вы.
    ну т.е. надо открыть exe в каком нибудь отладчике, например, IDA pro или Soft Ice, верно? и что там где надо править? Или может быть можно программно exe-файл подредактировать?
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    иди обратно в плюсы, асм тут не нужен
    если хочешь работать с PE файлами - сначала выучи PE формат
     
  5. debugx

    debugx New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    13
    ок, создал я процесс с помощью CreateProcess,
    как мне теперь узнать адрес, по которому нужно восстанавливать правильные байты?
    этот адрес должен идти вторым параметром в функции WriteProcessMemory.