|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 28, 2002 10:43:54 подскажите бряк на какие функции надо ставить в АЙСЕ чтобы проследить открытие реестра и чтение ключа него. Большое спасибо. |
|
|
Дата: Ноя 28, 2002 12:32:17 Когда-то давно хотел статью про условные бряки писать, да так и похерил. Остались черновики. Вот те кусок - разберешься. ====================================================== =============================== Открываем CDPlayer.exe The RegSetValueEx function stores data in the value field of an open registry key. It can also set additional value and type information for the specified key. LONG RegSetValueEx( HKEY hKey, // handle of key to set value for LPCTSTR lpValueName, // address of value to set <- d(esp->8)="SmallFont" DWORD Reserved, // reserved DWORD dwType, // flag for value type CONST BYTE *lpData, // address of value data <- d(esp->14)=00000000 DWORD cbData // size of value data ); BPX RegQueryValueExA if (*(esp->8)=='Smal') 'Smal' - чувствительно к регистру! 'Smal'!='smal' Указать обязательно 4 символа 'S', 'Sm', 'Sma' - плохо, хотя SIce и позволяет это сделать. Открыть редактор реестра? [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\CdPlayer\Settings] "SaveSettingsOnExit"=dword:00000000 "SmallFont"=dword:00000000 "ToolTips"=dword:00000001 "StopCDPlayingOnExit"=dword:00000001 "DisplayT"=dword:00000001 "DisplayTr"=dword:00000000 "DisplayDr"=dword:00000000 "InOrderPlay"=dword:00000001 "MultiDiscPlay"=dword:00000000 "IntroPlay"=dword:00000000 "IntroPlayLen"=dword:0000000a "ContinuousPlay"=dword:00000000 "ToolBar"=dword:00000000 "DiscAndTrackDisplay"=dword:00000001 "StatusBar"=dword:00000001 "WindowOriginX"=dword:00000068 "WindowOriginY"=dword:000000ee BPX RegSetValueExA if *(esp->8)=='Smal' do "eb esp->14 0" Идем в редактор реестра и меняем "SmallFont"=0 на "SmallFont"=1 хе-хе, ничего не получается. Как не получается у Regedit, так не получится и у CDPlayer. Запускаем CDPlayer, -> Параметры -> Настройка -> Шрифт -> мелкий Закрываем - открываем CDPlayer: шрифт опять крупный. Позиция окна по оси X в араметре WindowOriginX. bpx RegSetValueExA if *(esp->8)=='Wind' Будем прерываться 2 раза на чтении WindowOriginX и на чтении WindowOriginY. Нас интересует только WindowOriginX. bpx RegQueryValueExA IF *((esp->8)+9)=='ginX' do "p ret; ed esp+14 0; x" Как бы вы не перемещали окно, оно все время будет появляться у левой границы экрана. ===================================================================================== The RegOpenKey function opens the specified key. This function is provided for compatibility with Windows version 3.1. Win32-based applications should use the RegOpenKeyEx function. LONG RegOpenKey( HKEY hKey, // handle of open key LPCTSTR lpSubKey, // address of name of subkey to open PHKEY phkResult // address of handle of open key ); Открывается ключ: [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\CdPlayer\Settings] Определить раздел реестра: hKey Identifies a currently open key or any of the following predefined reserved handle values: HKEY_CLASSES_ROOT equ 80000000h HKEY_CURRENT_USER equ 80000001h HKEY_LOCAL_MACHINE equ 80000002h HKEY_USERS equ 80000003h d esp+8 ?*(esp+4) = 80000001 if *(esp+4)==80000001 По d esp->8 видим: Software\Microsoft\Windows\CurrentVersion\Applets\CdPlayer\Settings Нам надо CdPlayer\Settings bpx ADVAPI32!RegOpenKeyA if *((esp->8)+32)=='CdPl' Если приложение открывает один и тот же ключ в разных разделах реестра (вряд ли возможно) bpx ADVAPI32!RegOpenKeyA if *((esp->8)+32)=='CdPl' && *(esp+4)==80000001 |
|
|
Дата: Дек 2, 2002 07:39:18 А можно ли конкретно пояснить КАК поставить бряк на опредиленный ключ реестра? Например HKLM/Software/GameOverGames/... |
|
|
Дата: Дек 20, 2002 09:34:19 Да, да!!! Меня тоже это очень интерисует! Кстати, народ, впервые столкнулся с такой проблемой: пытаюсь дизасемблировать EssentialNetTools, а он (W32dasm) показывает фигу... Нашел куда прога в реестр пишет кол-во оставшихся дней, а бряк поставить не могу - незнаю как, и с дизасемблированием херня вышла... |
|
|
Дата: Дек 20, 2002 12:40:37 Ладно... Если вам так лень разбираться в моих черновиках... На примере стандартного "лазерного проигрывателя". ===================================================================== Win98: ASCII bpx RegQueryValueExA if (*(esp->8)=='Wind') Сработает два раза, при чтении ключей: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\CdPlayer\Settings\WindowOriginX HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\CdPlayer\Settings\WindowOriginY Когда попадете в sice набираете: d esp->14 В окне DATA увидите буфер, куда прочитается значение ключа по выходе из функции. Выходите из RegQueryValueExA по F11, и смотрите значение. ===================================================================== Win2000: UNICODE bpx RegQueryValueExW if (*(esp->8)==0x00690057) 0x00690057 - первые два символа имени ключа "WindowX" в unicode. Сработает два раза, при чтении ключей: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\DeluxeCD\Settings\WindowX HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\DeluxeCD\Settings\WindowY Когда попадете в sice набираете: d esp->14 В окне DATA увидите буфер, куда прочитается значение ключа по выходе из функции. Выходите из RegQueryValueExW по F11, и смотрите значение. ===================================================================== Достаточно? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |