Крекинг - важные брэйкпоинты.
[ Хакерство :: Компьютер ]

 

Самые важные брэйкпоинты.

Для работы с SoftIce необходимо знать основные брэйкпоинты.


Общецелевые брэйкпоинты:

bpx hmemcpy
 bpx MessageBox
 bpx MessageBoxExA
 bpx MessageBeep
 bpx SendMessage

 bpx GetDlgItemText
 bpx GetDlgItemInt
 bpx GetWindowText
 bpx GetWindowWord
 bpx GetWindowInt

 bpx DialogBoxParamA
 bpx CreateWindow
 bpx CreateWindowEx
 bpx ShowWindow
 bpx UpdateWindow

 bmsg xxxx wm_move
 bmsg xxxx wm_gettext
 bmsg xxxx wm_command
 bmsg xxxx wm_activate
 
При Времянных защитах:  

bpint 21 if ah==2A (DOS)
 bpx GetLocalTime
 bpx GetFileTime
 bpx GetSystemtime
 bpx GetTickCount
 bpx FileTimeToSystemTime
 
При CD-ROM и Дисковых защитах:  

bpint 13 if ah==2 (DOS)
 bpint 13 if ah==3 (DOS)
 bpint 13 if ah==4 (DOS)
 bpx GetFileAttributesA
 bpx GetFileSize
 bpx GetDriveType
 bpx GetVolumeInformation
 bpx GetLastError
 bpx ReadFile
 bpio -h (Your CD-ROM Port Address) R
 
При защитах типа: Dongle (HASP):

 bpio -h 278 R
 bpio -h 378 R
 
На ввод с клавиатуры:

 bpint 16 if ah==0 (DOS)
 bpint 21 if ah==0xA (DOS)
 
При работе с файловыми защитами:

 bpint 21 if ah==3dh (DOS)
 bpint 31 if ah==3fh (DOS)
 bpint 21 if ah==3dh (DOS)
 bpx ReadFile
 bpx WriteFile
 bpx CreateFile
 bpx SetFilePointer
 bpx GetSystemDirectory

При работе с INI файлами:

 bpx GetPrivateProfileString
 bpx GetPrivateProfileInt
 bpx WritePrivateProfileString
 bpx WritePrivateProfileInt
 При работе с Реестром  bpx RegCreateKey
 bpx RegDeleteKey
 bpx RegQueryValue
 bpx RegQueryValueEx
 bpx RegCloseKey
 bpx RegOpenKey

При Флагах в регистрах:

 bpx cs:eip if EAX==0
 
При Флагах в памяти:

 bpmb cs:eip rw if 0x30:0x45AA==0

При "подслушивающей" технике взлома:

 bpx 0x30:0x45AA do "d 0x30:0x44BB"
 bpx CS:0x66CC do "? EAX"
 При работе с консольными приложениями  WriteConsole/ReadConsole
 SetCursorPos

Упрощенный вывод сообщений

MessageBox, MessageBoxEx, MessageBoxIndirect, MessageBeep (эта функция не выводит сообщение, а только издает соответствующий звуковой сигнал)

Создание и уничтожение окон

CreateWindow(наиболее популярная функция создания окон), CreateWindowEx

CloseWindow (функция закрытия окна), DestroyWindow

Создание и уничтожение диалогов

CreateDialog, CreateDialogIndirect, CreateDialogIndirectParam, CreateDialogParam (этифункциитолькосоздаютдиалог)

DialogBox, DialogBoxIndirect, DialogBoxIndirectParam, DialogBoxParam (эта группа функций позволяет создавать модальные диалоги; управление не возвращается программе, пока диалог не будет закрыт)

EndDialog, DestroyWindow

Чтение и изменение текстов окон

GetWindowText, GetDlgItemText (чтение текста окна или элемента диалога)

GetWindowTextLength (чтение длины текста окна)

GetDlgItemInt (чтение текста элемента диалога как 32-битного числа)

SetWindowText, SetDlgItemText, SetDlgItemInt (установка нового текста окна или элемента диалога)

Изменение видимости, позиции и прочих подобных свойств окна

EnableWindow (активация/деактивацияокна)

ShowWindow, ShowWindowAsync (изменение видимости и состояния окна, в частности – позволяет минимизировать или наоборот развернуть окно)

SetWindowPos, MoveWindow (изменение положения окна)

SetWindowWord (устаревшая и практически не используемая функция), SetWindowLong – две функции, позволяющие модифицировать весьма широкий спектр параметров окна. GetWindowWord, GetWindowLong – функции чтения этих параметров.

Загрузка ресурсов

LoadImage (универсальная функция загрузки изображений, иконок и курсоров), LoadBitmap, LoadIcon, LoadCursor

FindResource, FindResourceEx, LoadResource (функциизагрузкиресурсовлюбоготипавпамять)

Отображение изображений и текстов на экране

BitBlt, StretchBlt, MaskBlt (функции копирования BITMAP’ов на экран)

DrawText, TextOut, TabbedTextOut (обычный вывод текста)

GrayString (редко используемая функция, выводит на экран строку со стилем надписи на неактивном управляющем элементе)

Работа с файлами

OpenFile (устаревшая функция), CreateFile (основная функция открытия файлов; несмотря на свое название способна открывать файлы и даже директории)

ReadFile, ReadFileEx (функции чтения из файлов)

WriteFile, WriteFileEx (функции записи в файл)

SetFilePointer (перемещениепофайлу)

GetFileTime, GetFileAttributes, SetFileTime, SetFileAttributes (чтениеимодификациявременисозданияиатрибутовфайлов/директорий)

SetEndOfFile (изменение размеров файла)

Операциисреестром

RegOpenKey, RegOpenKeyEx, RegCreateKey, RegCreateKeyEx (открытиеисозданиеключейреестра)

RegQueryInfoKey (запрос информации о ключе, в частности – для проверки факта существования подключа)

RegQueryValue,RegQueryValueEx (чтение значений из реестра)

RegSetValue, RegSetValueEx (запись ключей в реестр)

RegCloseKey (закрытие ключа реестра)

Чтение и запись INI-файлов

GetProfileSection, WriteProfileSection, GetProfileInt, GetProfileString, WriteProfileString, WriteProfileInt (функции для работы с файлом Win.ini, в настоящее время считаются устаревшими, но иногда используются)

GetPrivateProfileSection, GetPrivateProfileSectionNames, WritePrivateProfileSection, GetPrivateProfileInt, GetPrivateProfileString, GetPrivateProfileStruct, WritePrivateProfileString, WritePrivateProfileInt, WritePrivateProfileStruct (функцииработысобластьюреестра, отведеннойдляхранениянастроекпрограмм, либоспроизвольнымINI-файлом; этагруппафункцийсчитаетсяустаревшей)

Работа с датой и временем

GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime (чтениетекущеговремени)

SetSystemTime, SetLocalTime(установка нового времени)

LocalTimeToFileTime, FileTimeToLocalTime, FileTimeToSystemTime, SystemTimeToFileTime (преобразованиеформатавремени)

CompareFileTime (сравнение двух переменных, хранящих время)

GetFileTime, SetFileTime (запись и чтение времени создания, последней модификации и последнего доступа к файлу)

Процессы и потоки: создание и управление

WinExec (устаревшая функция запуска исполняемых файлов), CreateProcess (функция, обычно используемая для запуска исполняемых файлов), ShellExecute, ShellExecuteEx (пара «альтернативных» функций для запуска приложений (применительно к исполняемым файлам) или открытия, печати и т.п. папок и документов).

 ExitProcess(«стандартное» завершение процесса, эта функция способна завершить только тот процесс, внутри которого она вызвана), TerminateProcess (принудительное завершение процесса; эта функция способна «убить» любой процесс (в NT – при наличии соответствующих привилегий), что иногда используется защитами для подавления крэкерского софта)

CreateThread (штатная функция создания нового потока), CreateRemoteThread (эта функция «живет» только под NT-подобными и на самом деле в защитах практически не используется. Зато очень, очень (я не забыл сказать «очень»?) широко используется самими крэкерами для внедрения в чужой процесс. Так что обойти ее вниманием в этом поминальнике было бы несправедливо)

ExitThread, TerminateThread(штатное завершение и аварийное уничтожение потоков соответственно)

Загрузкаивыгрузка DLL

LoadLibrary, LoadLibraryEx (функциизагрузкидинамическихбиблиотек)

LoadModule (устаревшая функция загрузки DLL)

GetProcAddress (функция, возвращающая адрес функции или переменной, объявленной в экспорте DLL, по имени этой функции/переменной (разумеется, соответствующая DLLдолжна быть подгружена текущим процессом). Эта функция широко используется как в защитах чтобы вызов какой-либо функции не «светился» в дизассемблированном листинге, а также для приемов типа push<желаемый адрес возврата>; jmp <адрес функции, полученный через GetProcAddress>, используемых для сокрытия точки, откуда была вызвана функция)

FreeLibrary (функция принудительной выгрузки DLL)