· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Бряк на чтение из реестра

Посл.отвђт Сообщен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