#include int main( int nArgc, char** lpszArgv ) { if( nArgc == 1 ) { return 0; } HANDLE hFile = CreateFileA( lpszArgv[ 1 ], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile == INVALID_HANDLE_VALUE ) { return 0; } DWORD dwFileSize = GetFileSize( hFile, NULL ); BYTE* lpyBuffer = new BYTE[ dwFileSize ]; DWORD dwRead; ReadFile( hFile, lpyBuffer, dwFileSize, &dwRead, NULL ); CloseHandle( hFile ); for( DWORD i = 0; i < dwFileSize; i++ ) { lpyBuffer[ i ] = ( lpyBuffer[ i ] - 0x6C ) ^ 0x49; } lpyBuffer[ 1 ] += 0xF0; char szPath[ MAX_PATH ] = ""; strcpy_s( szPath, lpszArgv[ 1 ] ); *strrchr( szPath, '.') = '\0'; strcat_s( szPath, "decrypted.dll" ); hFile = CreateFileA( szPath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); WriteFile( hFile, lpyBuffer, dwFileSize, &dwRead, NULL ); CloseHandle( hFile ); return 0; }