Я пишу программу на C ++, которая принимает входные данные в виде exe-файла, шифрует его (просто xoring) и добавляет зашифрованный exe как ресурс в другой exe (заглушку).
Заглушка расшифровывает exe и сохраняет его. Проблема в том, что расшифрованный exe не будет работать. Байты одинаковые, я могу открыть расшифрованный exe-файл в редакторе PE, но он просто не запустится.
Какие-либо предложения?
Если исходный .EXE и расшифрованный .EXE являются действительно то же самое, и если предположить, что расшифрованный исполняемый файл представляет собой файл .EXE Windows с расширением .EXE (как, по-видимому, указывает ваша ссылка на формат .exe и PE), это может означать, что вы наткнулись на какую-то функцию безопасности.
Поведение вашей программы — это поведение одноэтапная программа удаления вредоносных программ. Неважно, если расшифрованный файл не фактически злонамеренный: система не может знать это; он видит исполняемый файл, который создает другой исполняемый файл и пытается выполнить его, и помечает его как «не выполнять это никогда» (например, через DisallowRun. Есть и другие способы).
Это также возможно (и, не поймите это неправильно, но более вероятно) что вы на самом деле делаете что-то не так: расширение не .EXE, файл не именно так тот же самый (Вы проверили контрольные суммы MD5 / SHA исходного и расшифрованного файла?), вы пытаетесь запустить файл, пока он еще открыт для записи …
Попробуйте посмотреть журнал событий и / или журнал антивирусного программного обеспечения, если таковой имеется, чтобы увидеть, может ли это пролить некоторый свет. Это ваша собственная машина разработки, и у вас есть полные права администратора на проверку политик, на случай? Также проверьте и сообщите статус ошибки и / или любое сообщение об ошибке, которое вы можете получить при попытке выполнения.
Других решений пока нет …