При добавлении функциональности в готовые программы, как правило используют два метода - либо патчат код непосредственно в программу, либо добавляют в нее импорт длл с нужным кодом. В первом случае надо писать отдельный инсталлятор который патчил бы прогу, и потом читать "багрепорты" о якобы вирусах, во втором случае надо использовать какую-то левую утилиту которая добавляла бы дллку в импорт, что весьма лениво, особенно конечным пользователям. Но! Теперь эта проблема решена ^^ В дллку можно встроить функцию которая будет добавлять эту дллку в импорт целевой проги, а вызывать эту функцию через rundll32: "rundll32 autoinst.dll,Install target.exe" Пример этого метода в аттаче. Код сыроват и кривоват, но на PoC потянет. Если не прописывать в командной строке имя целевого файла, запустится OpenFileDialog.
Не вижу смысла никакого в этом, стоило ли так трудиться? А откуда по-твоему программа узнает о том, что к ее импорту добавлена новая функция и как она ее будет использовать? Или я тебя в чем-то неправильно понял =)
Либо энтрипоинт подменяют на свой код, который после передачи управления скрывает себя. Самотестирование никто не отменял. Твой код не жизнеспособный.
mc black Запустится DllEntryPoint() при инициализации программы, до выполнения ее EP CrystalIC метод "патчат код непосредственно в программу" включает в себя подмену EP Что мешает разместить скрытие в длл? К тому же меньше скрывать надо. +длл удобнее кодить, т.к. в ней можно юзать статические импорты
GoldFinch А что нового то? Я так и не понял. Я так понял речь идет о том чтобы пользователь мог расширить функциональность программы, а не "заразить" ее. GoldFinch Думаю если они, конечные пользователи, функциональность смогли запрограммировать в виде длл, то и с остальным проблем не будет.
да ну? на перенесенный импорт с директорией импорта в заголовке, с фрагментированным IAT и с секцией с флажком записи?
stosd stosd stosd stosd stosd я бы не стал это переписывать 1к1) лучше написать чтонить качественнее на тех же принципах