Есть EXE-клиент (win32) с Demo защитой: http://ifolder.ru/9427505 - EXE получает данные по ТСР/IP с удаленного РС с выводом визуалки на монитор; - при отсутствии на удаленном РС лицензионного донгл-драйвера (или подключенного USB контроллера) EXE выводит данные только в течении 5 мин, затем пишет в главное окно "End of Demo Version!"; - защита активируется только с началом получения данных от сервера (пишет в главное окно "This is a Demo Version!"). Напрашиваются три варианта действий: - продлить демо-период; - сымитировать наличие драйвера; - модифицировать условный переход, связанный с "End of Demo Version". Думаю, продлить демо-период было бы проще. PEiD говорит наш РЕ not protected. Начал со снимков системы, нашел след.изменения после запуска EXE: - файлы: нет изменений; - реестр: [Modified keys] HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\kmixer\Enum\Count HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\kmixer\Enum\NextInstance HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kmixer\Enum\Count HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kmixer\Enum\NextInstance HKEY_USERS\S-1-5-21-776561741-1383384898-1060284298-500\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHACNGU HKEY_USERS\S-1-5-21-776561741-1383384898-1060284298-500\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHACNGU:P:\Cebtenz Svyrf\VGEN\GSG-Cnary\GSG2CEBCceb\GSG2CEBCceb.rkr [New keys] //убиваются по завершении/ HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\kmixer\Enum\0 Value: String: "SW\{b7eafdc0-a680-11d0-96d8-00aa0051e51d}\{9B365890-165F-11D0-A195-0020AFD156E4}" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kmixer\Enum\0 Value: String: "SW\{b7eafdc0-a680-11d0-96d8-00aa0051e51d}\{9B365890-165F-11D0-A195-0020AFD156E4}" Вобщем, похоже на криптографию, сходу картина не ясна. При просмотре ImportTable нашел обращения к след. АПИ ф-циям, связанным с сист.временем (в порядке смещений): [Kernel32] GetFileTime FileTimeToSystemTime FileTimeToLocalFileTime GetTimeZoneInformation Т.е. алгоритм привязан к FileTime, но остается непонятным что с чем алгоритм сравнивает. Не видно ни GetSystemTime, ни GetTickCount. Попробовал мониторить обращения ЕХЕ к АПИ ф-циям с помощью winapioverride32. К моему удивлению обращений к вышеуказанным ф-циям не наблюдалось от запуска до ExitProcess. Почему-непонятно, все остальные обращения мониторились. Или здесь демо-таймер реализован через создание потока, Sleep() и т.д.? Опыта у меня пока маловато, поэтому многое не очевидно. Если не сложно, подтолкните в нужном направлении!
Гуан какойто, я могу разобрать нормальное приложение, но такое - в топку, думаю даже на кряклабе за такую погонь никто не возмётся.
GIP Импортируемы функции: Код (Text): OPENGL32.dll: glFlush, glFinish, wglGetCurrentDC, glMatrixMode, glClearColor, glClear, glDepthFunc, glDepthRange, glGenTextures, glPixelStoref, glTexParameterf, glTexEnvf, wglCreateContext, glGetString, wglGetCurrentContext, wglMakeCurrent, wglDeleteContext, glColor3f, glVertex3f, glTranslatef, glViewport, glFrontFace, glEnable, glLoadIdentity, glBindTexture, glBegin, glNormal3d, glTexCoord2d, glVertex3dv, glEnd, glRotatef, glBlendFunc, glDisable, glColor4f, glDeleteTextures > GLU32.dll: gluBuild2DMipmaps > KERNEL32.dll: EnterCriticalSection, GetFileAttributesA, GetFileSize, GetFileTime, SetErrorMode, GlobalFlags, SizeofResource, LocalAlloc, TlsAlloc, GlobalHandle, TlsFree, GlobalReAlloc, TlsSetValue, LocalReAlloc, TlsGetValue, GetProcessVersion, GetCPInfo, GetOEMCP, FileTimeToSystemTime, FileTimeToLocalFileTime, RtlUnwind, GetStartupInfoA, GetCommandLineA, ExitProcess, HeapAlloc, HeapFree, RaiseException, TerminateProcess, CreateThread, ExitThread, HeapReAlloc, HeapSize, InitializeCriticalSection, GetTimeZoneInformation, UnhandledExceptionFilter, FreeEnvironmentStringsA, FreeEnvironmentStringsW, GetEnvironmentStrings, GetEnvironmentStringsW, SetHandleCount, GetStdHandle, GetFileType, GetEnvironmentVariableA, GetVersionExA, HeapDestroy, HeapCreate, VirtualFree, LCMapStringA, LCMapStringW, VirtualAlloc, IsBadWritePtr, GetStringTypeA, GetStringTypeW, SetUnhandledExceptionFilter, IsBadReadPtr, LeaveCriticalSection, SetStdHandle, CompareStringA, CompareStringW, SetEnvironmentVariableA, MulDiv, GetProfileStringA, SetLastError, CreateEventA, SuspendThread, SetThreadPriority, ResumeThread, SetEvent, WaitForSingleObject, GlobalAlloc, lstrcmpA, GetCurrentThread, FreeLibrary, GetVersion, lstrcatA, GetCurrentThreadId, GlobalGetAtomNameA, GlobalAddAtomA, GlobalFindAtomA, GlobalDeleteAtom, GetModuleHandleA, GlobalLock, GlobalUnlock, GlobalFree, LockResource, FindResourceA, LoadResource, lstrcmpiA, GetFullPathNameA, lstrcpynA, GetVolumeInformationA, FindFirstFileA, FindClose, lstrcpyA, LoadLibraryA, GetProcAddress, DeleteFileA, MoveFileA, SetEndOfFile, UnlockFile, LockFile, CloseHandle, FlushFileBuffers, SetFilePointer, WriteFile, ReadFile, CreateFileA, GetCurrentProcess, DuplicateHandle, LocalFree, IsBadCodePtr, MultiByteToWideChar, WideCharToMultiByte, lstrlenA, InterlockedDecrement, InterlockedIncrement, CreateMutexA, GetLastError, ReleaseMutex, GetPrivateProfileStringA, WritePrivateProfileStringA, GetModuleFileNameA, DeleteCriticalSection, GetACP > USER32.dll: SetMenuItemBitmaps, ModifyMenuA, GetMenuState, GetMenuCheckMarkDimensions, ReleaseDC, wvsprintfA, PostQuitMessage, ShowOwnedPopups, GetCursorPos, ValidateRect, TranslateMessage, GetMessageA, ClientToScreen, GetWindowDC, BeginPaint, EndPaint, TabbedTextOutA, DrawTextA, GrayStringA, SetRectEmpty, LoadAcceleratorsA, TranslateAcceleratorA, ReleaseCapture, GetDesktopWindow, DestroyMenu, LoadMenuA, SetMenu, ReuseDDElParam, UnpackDDElParam, InvalidateRect, BringWindowToTop, LoadStringA, GetClassNameA, PtInRect, GetSysColorBrush, InflateRect, IsDialogMessageA, PostMessageA, UpdateWindow, SendDlgItemMessageA, MapWindowPoints, GetSysColor, PeekMessageA, DispatchMessageA, GetFocus, SetFocus, AdjustWindowRectEx, ScreenToClient, EqualRect, DeferWindowPos, BeginDeferWindowPos, CopyRect, EndDeferWindowPos, CheckMenuItem, GetTopWindow, GetCapture, WinHelpA, GetClassInfoA, RegisterClassA, GetMenu, GetMenuItemCount, GetSubMenu, GetMenuItemID, GetWindowTextLengthA, GetWindowTextA, GetDlgCtrlID, CreateWindowExA, SetWindowsHookExA, CallNextHookEx, GetClassLongA, SetPropA, UnhookWindowsHookEx, GetPropA, CallWindowProcA, RemovePropA, DefWindowProcA, GetMessageTime, GetMessagePos, GetForegroundWindow, SetForegroundWindow, GetWindow, SetWindowPos, RegisterWindowMessageA, OffsetRect, IntersectRect, SystemParametersInfoA, GetWindowPlacement, GetNextDlgTabItem, EndDialog, GetActiveWindow, SetActiveWindow, IsWindow, CreateDialogIndirectParamA, DestroyWindow, GetDlgItem, GetParent, GetLastActivePopup, IsWindowEnabled, MessageBoxA, LoadIconA, UnregisterClassA, HideCaret, ShowCaret, ExcludeUpdateRgn, DrawFocusRect, CharUpperA, wsprintfA, LoadImageA, GetDC, GetWindowLongA, SetWindowLongA, LoadBitmapA, EnableMenuItem, ShowWindow, MoveWindow, IsWindowVisible, SetWindowTextA, KillTimer, LoadCursorA, SetCursor, IsIconic, GetClientRect, DrawIcon, GetSystemMetrics, GetWindowRect, SetTimer, EnableWindow, DefDlgProcA, CharNextA, IsWindowUnicode, SendMessageA, GetKeyState > GDI32.dll: GetStockObject, SetBkMode, SetMapMode, SetViewportOrgEx, OffsetViewportOrgEx, SetViewportExtEx, ScaleViewportExtEx, SetWindowExtEx, ScaleWindowExtEx, IntersectClipRect, MoveToEx, LineTo, SelectObject, DeleteObject, GetDeviceCaps, CreatePen, CreateSolidBrush, PtVisible, RectVisible, TextOutA, ExtTextOutA, Escape, RestoreDC, SaveDC, DeleteDC, PatBlt, SetBkColor, SetTextColor, GetClipBox, SwapBuffers, ChoosePixelFormat, SetPixelFormat, GetObjectA, CreateCompatibleDC, CreateBitmap, BitBlt, CreateDIBitmap, GetTextExtentPointA, CreateCompatibleBitmap > comdlg32.dll: GetFileTitleA > WINSPOOL.DRV: DocumentPropertiesA, OpenPrinterA, ClosePrinter > ADVAPI32.dll: RegCloseKey, RegCreateKeyExA, RegOpenKeyExA, RegSetValueExA > SHELL32.dll: DragFinish, DragQueryFileA > COMCTL32.dll: -, ImageList_Destroy > WSOCK32.dll: -, -, -, -, -, -, -, -, -, -, -, -
А возможно вы и правы, удаленная DLL тоже импортирует функции времени. А я не обратил поначалу внимания, увлекся этим шухером с шифрованием реестра в клиенте и т.д. Вот собсно DLL: http://ifolder.ru/9435637 Сам сервер занимает DVD. Ушел экспериментировать...