Прежде всего, различие, которое вы проводите между «упаковщиками» и программами архивирования (ZIP и т. Д.) Или программами сжатия, похоже, не имеет под собой никаких оснований.
«Упакованный» исполняемый файл не может быть выполнен напрямую. Это должно быть сначала распаковано. Это точно так же, как (скажем) ZIP-файл, содержащий вредоносное ПО, или файл вредоносного ПО, сжатый стандартной программой сжатия.
А как насчет "упакованного" исполняемого файла, созданного программой, которая "упаковывает" секретным способом ... чтобы избежать обнаружения? Ну, это не сработает. Вредоносная программа все еще должна быть распакована, прежде чем ее можно будет запустить. Это означает, что у плохой кишки появилась вторая проблема: доставить распаковщик на машину жертвы. И как только кто-то (анти-хакер) овладевает сверхсекретным распаковщиком, это уже не секрет. Он может быть переработан ... или просто использован как есть AV-продуктом на подозрительных двоичных файлах.
Единственное практическое использование «упаковки», о которой я могу подумать, - это добавить функцию самораспаковывания в вредоносную программу. Вредоносная программа (как распределенная) будет состоять из исполняемого файла с небольшим количеством кода, который реализует распаковщик. Остальная часть исполняемого файла будет упакованным кодом, который реализует неприятные вещи. Когда пользователь запускает вредоносное ПО, он распаковывает упакованный код, загружает его в память и начинает выполнение.
Однако существуют потенциальные способы обнаружения или предотвращения такого рода вещей.
- Если распаковщик записывает исполняемый код в файл до его загрузки, AV-продукт может обнаружить это.
- Если упаковщик пытается загрузить код в себя, существуют способы, которые могут быть заблокированы; например использование аппаратных средств защиты памяти + ОС и т. д. для предотвращения распаковщика создавать сегменты памяти, содержащие исполняемый код; см https://en.wikipedia.org/wiki/Executable_space_protection.
- AV может искать сигнатуру в упакованном коде или может искать сигнатуру в коде распаковщика.
Короче говоря, вредоносное ПО может использовать какую-то "упаковку", чтобы скрыть себя, но где-то должен быть исполняемый компонент, чтобы распаковать его.
Если так, как мы можем сказать, что эти двоичные файлы упакованы или нет?
Если вредоносная программа распространяется как неисполняемая, вы выясняете, что ее распакует, а затем посмотрите, даст ли этот процесс исполняемый файл.
Если вредоносная программа представляет собой самораспаковывающийся исполняемый файл, вы перепроектируете распаковывающий компонент, чтобы выяснить, как он работает.