После прочтения нескольких документов о криптографии и криптографии PE, я решил написать свои собственные. Это очень просто и только в образовательных целях.C++ XOR-шифрование
Вот GitHub репо: https://github.com/Jyang772/XOR_Crypter
У меня есть два вопроса.
- Первый, почему я должен постоянно менять свои права доступа к файлам, чтобы начать каждый выводимый .exe (Файл, созданный Builder.exe не компилятор)? Он создает файл
Shared
. Я должен щелкнуть правой кнопкой мыши и выбрать общий доступ с помощьюNobody
. Связано ли это с правами доступа к файлам и безопасности? Я используюCreateFile()
иReadfile
для чтения и записи входных и выходных файлов.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
- Второй, я не могу показаться, чтобы получить шифрование XOR работать. Кажется довольно прямо вперед для того, что я сделал. Размеры байтов одинаковы. Пока я исследовал, у меня был Builder и Stub, каждый из которых выводил файл с незашифрованными файловыми данными. Они одинаковые. Затем я попытался с зашифрованными данными. Нет сомнений, что данные шифруются с помощью шифрования, однако он отображается пустым, когда он позже расшифровывается заглушкой. Я смущен.
Вот моя реализация XOR:
фс = размер байт Rsize = размер байта Должно быть то же самое.
Builder:
char cipher[] ="penguin";
for (int i = 0; i < fs; i++)
{
FB[i] ^= cipher[i % strlen(cipher)]; // Simple Xor chiper
}
Заглушка:
char cipher[] = "penguin";
for (int i = 0; i < Rsize; i++)
{
RData[i] ^= cipher[i % strlen(cipher)];
}
Если бы я закомментировать функцию шифрования в Builder и Ста, то зашифрованный файл работает нормально. Uhh, за исключением ошибки с разрешениями.
Я также пытаюсь включить меню опций, в котором пользователь может выбрать используемый метод шифрования. Может, я, возможно, сделал что-то не так? Builder.exe добавляет один байт, содержащий выбор пользователя до конца буфера FB
. Stub.exe читает это и определяет, какой метод шифрования используется для дешифрования данных.
Вы не забыли открыть свои файлы как 'binary'? –
@JoeZ Я думал, что CreateFile() и ReadFile() всегда открывают файлы в двоичном режиме. –
Разрешения к файлу, не имеющие отношения к шифрованию или программированию. – EJP