Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NIRS_Reverse_Engineering (1).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Часто используемые функции Windows api

Это функции которые можно увидеть в числе импортируемых. Немалая часть может вызываться из библиотечных функций и CRT-кода.

Многие функции могут иметь суффикс -A для ASCII-версии и -W для Unicode-версии.

• Работа с реестром (advapi32.dll): RegEnumKeyEx, RegEnumValue, RegGetValue, RegOpenKeyEx, RegQueryValueEx.

• Работа с текстовыми .ini-файлами (kernel32.dll): GetPrivateProfileString.

• Диалоговые окна (user32.dll): MessageBox, MessageBoxEx, CreateDialog, SetDlgItemText, GetDlgItemText.

• Работа с ресурсами: (user32.dll): LoadMenu.

• Работа с TCP/IP-сетью (ws2_32.dll): WSARecv, WSASend.

• Работа с файлами (kernel32.dll): CreateFile, ReadFile, ReadFileEx, WriteFile, WriteFileEx.

• Высокоуровневая работа с Internet (wininet.dll): WinHttpOpen.

• Проверка цифровой подписи исполняемого файла (wintrust.dll): WinVerifyTrust.

• Стандартная библиотека MSVC (в случае динамического связывания)(msvcr*.dll): assert, itoa, ltoa, open, printf, read, strcmp, atol, atoi, fopen, fread, fwrite, memcmp, rand, strlen, strstr, strchr.

Расширение триального периода

Функции доступа к реестру это частая цель тех, кто пытается расширить триальный период ПО, которое может сохранять дату/время инсталляции в реестре.

Другая популярная цель это функции GetLocalTime() и GetSystemTime(): триальное ПО, при каждом запуске, должно как-то проверять текущую дату/время.

Tracer: Перехват всех функций в отдельном модуле

В tracer есть поддержка точек останова INT3, хотя и срабатывающие только один раз, но зато их можно установить на все сразу функции в некоей DLL.

−−one−time−INT3−bp:somedll.dll!.*

Либо, поставим INT3-прерывание на все функции, имена которых начинаются с префикса xml :

−−one−time−INT3−bp:somedll.dll!xml.*

В качестве обратной стороны медали, такие прерывания срабатывают только один раз. Tracer покажет вызов какой-либо функции, если он случится, но только один раз. Еще один недостаток — увидеть аргументы функции также нельзя. Тем не менее, эта возможность очень удобна для тех ситуаций, когда вы знаете что некая программа использует некую DLL, но не знаете какие именно функции в этой DLL. И функций много.

Например, узнаем, что использует cygwin-утилита uptime:

tracer −l:uptime.exe −−one−time−INT3−bp:cygwin1.dll!.*

Так мы можем увидеть все функции из библиотеки cygwin1.dll, которые были вызваны хотя бы один раз, и откуда:

One−time INT3 breakpoint: cygwin1.dll!__main (called from uptime.exe!OEP+0x6d (0x40106d))

One−time INT3 breakpoint: cygwin1.dll!_geteuid32 (called from uptime.exe!OEP+0xba3 (0x401ba3))

One−time INT3 breakpoint: cygwin1.dll!_getuid32 (called from uptime.exe!OEP+0xbaa (0x401baa))

One−time INT3 breakpoint: cygwin1.dll!_getegid32 (called from uptime.exe!OEP+0xcb7 (0x401cb7))

One−time INT3 breakpoint: cygwin1.dll!_getgid32 (called from uptime.exe!OEP+0xcbe (0x401cbe))

One−time INT3 breakpoint: cygwin1.dll!sysconf (called from uptime.exe!OEP+0x735 (0x401735))

One−time INT3 breakpoint: cygwin1.dll!setlocale (called from uptime.exe!OEP+0x7b2 (0x4017b2))

One−time INT3 breakpoint: cygwin1.dll!_open64 (called from uptime.exe!OEP+0x994 (0x401994))

One−time INT3 breakpoint: cygwin1.dll!_lseek64 (called from uptime.exe!OEP+0x7ea (0x4017ea))

One−time INT3 breakpoint: cygwin1.dll!read (called from uptime.exe!OEP+0x809 (0x401809))

One−time INT3 breakpoint: cygwin1.dll!sscanf (called from uptime.exe!OEP+0x839 (0x401839))

One−time INT3 breakpoint: cygwin1.dll!uname (called from uptime.exe!OEP+0x139 (0x401139))

One−time INT3 breakpoint: cygwin1.dll!time (called from uptime.exe!OEP+0x22e (0x40122e))

One−time INT3 breakpoint: cygwin1.dll!localtime (called from uptime.exe!OEP+0x236 (0x401236))

One−time INT3 breakpoint: cygwin1.dll!sprintf (called from uptime.exe!OEP+0x25a (0x40125a))

One−time INT3 breakpoint: cygwin1.dll!setutent (called from uptime.exe!OEP+0x3b1 (0x4013b1))

One−time INT3 breakpoint: cygwin1.dll!getutent (called from uptime.exe!OEP+0x3c5 (0x4013c5))

One−time INT3 breakpoint: cygwin1.dll!endutent (called from uptime.exe!OEP+0x3e6 (0x4013e6))

One−time INT3 breakpoint: cygwin1.dll!puts (called from uptime.exe!OEP+0x4c3 (0x4014c3))

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]