В качестве начальной практики подойдет любой видеокурс с YouTube, а из литературы могу посоветовать "Объектно-ориентированное программирование C++" (Лафоре) - книжка просто идеально подходит для новичков
Непростой вопрос.
Для начала определим, что такое сигнатура вируса.
Чаще всего под сигнатурой вируса понимают некоторую байтовую маску, например такого вида 0xaa 0x55 0x?? 0x33 (байты взяты из головы и не соответствуют никакому вирусу). Кроме того, указано где должна быть эта сигнатура, например в районе точки входа в приложение.
Чтобы проверить такую сигнатуру необходимо вычитать в исполняемом файле PE-заголовок - в нем указан адрес точки входа. Далее считываем 4 байта с точки входа и проверяем на соответствие указанной маске.
Что важно понимать - сигнатура может быть не только в точке входа, но и вообще по файлу, или в исполняемой секции. В последнем случае, из PE-заголовка необходимо узнать адрес начала исполняемой секции и проверить ее.
Опять же, сигнатура может быть задана не только конкретными байтами, но и маской (как в моем примере - 3 байт может быть любым). Для таких ситуаций нужно написать собственную функцию сравнения массива с маской и использовать ее при поиске.
Если под "программой" Вы подразумеваете компилятор, интерпретатор или среду разработки, то могу предложить следующие:
- Turbo C++ - используется для создания консольных приложений (собственно и выглядит как консоль). С него обычно начинают изучение C++.
- C++ Builder - можно использовать как для консольных, так и для оконных приложений. Имеет массу визуальных и не визуальных компонентов. Прост и удобен в работе. Довольно популярная среда разработки.
- Visual C++ - опять же, визуальная среда разработки. Очень популярная. Больше о нём ничего писать не буду, потому как недолюбливаю данное порождение Microsoft'a.
Это обычный текст, только вместо букв используются 16-ричные цифры. Так проще представлять электронные записи.
А разобраться очень просто. Каждая 16-ричная цифра, это или код символа или часть процессорной команды, в зависимости от контекста текста.