Proteus фасм, насм, новые версии gas - все умеют пихать сырые данные из файла. Одни масм с тасмом отстали от жизни
CRC16 ... и дальше вверх Вызывать через функцию: prolog+epilog Если память не изменяет, в дизасме Artefact'a (словарик от w*w.rsdsoft.com) видно было полно вызовов само-(де)шифрующихся функций (примитивно, через ROL/ROR) только смысл такого шифрования ? 1. в дампе видно сразу - глаз спотыкается 2. дешифруется моментом - xref на дешифровку + rip кода
gazlan Неудобно будет использовать в прогe IS_9A1FEC23. Желательно осмысленное имя строки. В чём смысл вообще? В бинарике не видно. В дампе будет только часть, которые на момент дампа раскриптованы были. То, что "глаз спотыкается" - это верно, но дело ведь в уровне "защиты". Кому-то достаточно и этого.
В Masm32 можно так: Прекомпилятор MASM позволяет, Вам определять локальные переменные в макросе, просто как в обычной функции. Логические и математические операции в переменных поддерживаются, и не только - Вы можете также работать с каждым байтом из аргумента отдельно! Макросы позволяют Вам определять данные и имена функций динамически, и Вы можете даже определить макрос в макросе. Макросы дают возможность для создания всего того, чего Вы только можете придумать. Только макросами мы можем записать динамические данные - массивы данных, которые автоматически будут закодированы прекомпилятором. Посмотрим, что нам нужно сделать для этого: // Определяем Макрос // который берет целую строку, как аргумент EncryptText MACRO text:req LOCAL cipherByte cipherByte = 0AAh // Пройдите через каждый байт строки FORC plainByte, <&text> // Зашифровать их cipherByte = cipherByte xor '&plainByte' // И демпировать результат как байт данных db cipherByte ENDM db 0 ENDM Теперь в исходном коде данные можно определять макросом: EncryptText < Обман не грех. Бог с верующими > И в скомпилированной версии, эти данные будут уже закодированы. Конечно во время исполнения Вы, должны декодировать его обратно, но полработы сделано средствами пре компилятора. Макросы являются очень эффективными манипуляторами данными. Как в Visual Studio C++ это сделать не знаю, но может можно всетаки родственные пакеты.
GMax Нельзя. В VC встроенный асм не поддерживает макро. Разве что подключить внешний объектник с криптованными строками.
IceStudent GMax скорее имел в виду не ассемблерные макросы, а сишные, но и они тут бессильны. Зато можно написать препроцессор для VC и включить его в процесс сборки. Примеры можно найти в гугле.
Че та на аттач НОДик кричит, ну это пох.. попробую, всем спасибо за поддержку, рабочую версию криптинга обязательно предоставлю для обзора. Просто огромное количество идей.