Хочу покопаться во внутренностях файла. Скажу сразу - я не занимался реверсингом, но есть желание этим заниматься. Так что сильно не пинать, если тока в нужном направлении. Есть файл, написан на Дельфях.(Приложу попозже, пока канал узкий). Использует функции ключа Guardant. Вызывает функции GrdSetFindMode и GrdFind. Но это не главное. Меня интересует содержимое GrdFind. Точная постановка задачи: функция GrdFind шифрует какие-то данные и отправляет их драйверу под прозвищем GrdKey. Надо вытащить алгоритм шифрования. Сам алгоритм меня не сильно интересует, а интересует сам процесс. Что делать, в какой последовательности, от чего отталкиваться. Может кто чего посоветовать?
Функции ключа в отдельной библиотеке или в самом файле? В любом случае загружаешь искомый файл в IDA, пробуешь получить дополнительную инфу из DeDe, находишь функции, подлежащие анализу и пробуешь реверсить. Последнее требует некоторых навыков.
Вот файлец - http://rapidshare.de/files/27741302/Project1.zip.html Функция скидывает драйверу через DeviceIOControl. Как я понимаю можно вычислить где это делаеться, найти данные и посмотреть рашьше что с ними делают?
Обрати внимание, что все вызовы идут через функцию sub_478906, которая, мягко выражаясь, немножко запутана. У меня такое впечатление, что расшифровываются данные, расположенные рядом с вызовами твоих GrdFind, GrdSetFindMode, GrdSetAccessCode, CgrCreateHandle. Попробуй для начала подебужить, чтобы понять, как выполняется расшифрование.
Подебужив, понял, что весьма все запутано, но разобраться можно. Даже до простых вызовов типа jmp VirtualAlloc приходится добираться ручками, пока не составлю описание. Вообще идея простая - ищется заголовок программы в памяти, и начиная с него находится некий шаблон из 16 байт, вслед за которым следует требуемый переход. Аргументы передаются тоже запутанно - берется адрес, отстоящий на заданное смещение от следующего за вызовом процедуры адреса и видимо там хранится аргумент (надо уточнить - вечером посмотрю, времени не было). Неплохо было бы посмотреть код программы EvilsInterrupt, он искал способы маскирования смысла кода.