Криптование инсталлера

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by secretbin, 6 Aug 2012.

  1. secretbin

    secretbin New Member

    Joined:
    6 Aug 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Появилась необходимость написать свой собственный криптор. Все вроде ничего работает на программках, но, блин, не на инсталлерах. Трабл состоит в том, что при запуске инсталлера, он открывает свой исполняемый файл (который само сабой уже закриптован) и не найдя в нем необходимой для себя информации, завершает свою работу, что является абсолютно логичным.
    После 2-х дней раздумий над тем как это можно решить, пришло в голову только 2 мысли:

    1) перехватывать все вызовы winapi на открытие и чтения файлов. Тут при попытки открыть файл вставить проверку на открытие самого себя и дальшей дешифрации всего содержимого при попытки прочитать. Данный путь на мой взгляд неверный, т.к. много гемороя, трудно реализуем + увеличивается размер криптованного файла.

    2) создавать временный файл при запуске, кидать туда расшифрованное содержимое и запускать. Ну это уже совсем попахивает идиотизмом.

    Вот собственно и решил написать сюда.
    Те кто решал такие задачи, натолкните пожалуйста на мысль как решить данный трабл. :confused:
     
  2. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    Вроде как почти все современные джойнеры файлы кидают в оперативку и оттуда запуцскают, можно в этом направленни посмотреть, но все равно это будет уже расшифрованный файл, АВ ругаться будет.
    Я бы лучше криптовал файлы, лежащие внутри инсталяхи, а потом уже не палящиеся пихал в инсталяху. Так проще, да и расшифровка кучки маленьких файлов куда быстрее расшифровки одного большого.
     
    #2 j0sur, 6 Aug 2012
    Last edited: 6 Aug 2012
  3. secretbin

    secretbin New Member

    Joined:
    6 Aug 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Ну по поводу оперативки щас так он и работает: лоадер дешифрует секцию, кидает ее в оперативку правильным образом и передает управление. ))))) На счет того, что авирем палиться будет - скорее всего блин, так что тут работать надо. Но в любом случае исполняемый код должен быть дешифрован (ну или есть второй вариант писать своеобразную среду выполения).
    По поводу того, что криптовать каждый файл отдельно в инсталяторе то тут вот чего: по сути это билд вирька, и при его запуске начинает работать своеобразный инсталятор: дешифрует сам свой код, пихает в нужное место + автозапуск))))))))))))))))
    Так что данный вариант не работает тут. Но все равно спасибо. Как говориться спроси у сотни людей, а потом подумай)))))))
     
  4. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Лучше сразу забить на тему криптования инсталляторов. Что если инсталлятор или какая нибудь другая программа проверяет целостность своего исполняемого файла? Что делать в этом случае?

    Возьми UPX и попробуй запаковать им свой инсталлятор. Если все будет нормально работать - изучи исходный код UPX, чтобы получить ответ на свой вопрос.
     
  5. secretbin

    secretbin New Member

    Joined:
    6 Aug 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Спасибо за ответ!
    UPX уже пробывал в самом начале разработки криптора, но жрать этого вирька он отказался (типа инвалид заголовок)(((((
    Поэтому забил на него.
    Кстати, очень интересная штучка: на целосность он себя не проверяет, т.к. изначалько это вирь, который необходимо криптовать. Если из моего криптора убрать нафиг шифрацию сегемента :D , а все остальное оставить (т.е. лоадер, и сегмент добавленный с вирьком), то все воркает блин.
    Дебажил, и узнал, что он в своем коде сам что-то пытается дешифровать (что пока не понял), но т.к. уже исходные данные ему на дешифровку поступают левые, все обламывается.
    Кстати, если кто-то криптовал допустим зевса, то он там делает чего-то подобное (дешифрует чего-то по RC4). Если есть кто с опытом его криптования, расскажите плиз, если не жалко ....
     
  6. alias6969

    alias6969 Member

    Joined:
    3 Apr 2011
    Messages:
    27
    Likes Received:
    11
    Reputations:
    6
    У тебя точно инсталлер открывает себя именно как файл? Он не ресурсы в себе ищет случайно? Потому что если ресурсы, тогда ясно, куда смотреть.

    А вообще, сейчас прячущий от АВ криптор тяжко написать. Я пробовал - у меня не получилось, палят эвристикой все время, даже без полезной нагрузки, т.е. сам лоадер.
     
  7. cardons

    cardons Elder - Старейшина

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Могу попробовать прогнать через последний The Enigma Protector. Думаю должно помочь) P.S. кидайте ссылку в приват чтобы увидел.
     
    #7 cardons, 7 Aug 2012
    Last edited: 7 Aug 2012
  8. D4rkC10ud

    D4rkC10ud New Member

    Joined:
    30 Jul 2012
    Messages:
    27
    Likes Received:
    1
    Reputations:
    0
    СофтАйс для снятия криптора это слишком - не для того он предназначен, а вот OllyDebug вполне справляеться с задачей. Я не знаю зачем пользоваться турбо дэбаггером (кроме случаев мс-досности проги естесвенно - там он крут), когда есть бесплатные удобные конкуренты :confused: Та и не поверю я что изъебнуться нельзя даже в самом деревянном отладчике - какимнибудь патчингом начальной инструкции нужной функции - костыли, но иногда приходиться.
     
  9. altblitz

    altblitz Elder - Старейшина

    Joined:
    5 Jun 2009
    Messages:
    3,691
    Likes Received:
    3,145
    Reputations:
    236
    D4rkC10ud,
    не ведаю, какие у тебя конкретные задачи.

    но свои, с прогами нужными и повседневными, решил именно с ТурбоДебаггером.

    SoftIce - громко сказано. есть проги и проще и быстрее.
    но работать со стеком D4rkC10ud всё же не умеет.
     
  10. D4rkC10ud

    D4rkC10ud New Member

    Joined:
    30 Jul 2012
    Messages:
    27
    Likes Received:
    1
    Reputations:
    0
    Как дополнение к высокоуровневому языку ТД неплох, конечно же.

    Кто тут о стэке вообще говорил?
    Не всё что серое - волк. Самомодифицирующийся код не обязательно будет в стэке. Как вариант можно еще в секции атрибуты изменить. Все эти фичи со стэком теперь не канают из-за, DEP/ASLR - http://en.wikipedia.org/wiki/Data_Execution_Prevention и
    может и не умею, но только сегодня об этом узнал. Век живи - век учись.
    Кстати, регистр SP был на 16-разрядных компах и сейсчас в режиме совместимости.
     
  11. secretbin

    secretbin New Member

    Joined:
    6 Aug 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Решение проблемы оказалась намного проще чем я мог предположить)))))))
    Я подсчитал суммарный размер всех секций и за метил, что он меньше размера самого файла. Оказалось, что в конце виря, запихан оверлоад, который он и пытался считать при распаковки.
    Выход - просто не шифруем этот код. Вот и все))))))))))))
     
  12. altblitz

    altblitz Elder - Старейшина

    Joined:
    5 Jun 2009
    Messages:
    3,691
    Likes Received:
    3,145
    Reputations:
    236
    не-а. операции в стеке - исполняются в нативном режиме х86 линейки.
    теперь узнай, какой компилятор у NVidia CUDA.