Эмулятор реестра

Здесь можно обсудить ваш любимый плагин.
k561ln7
Posts: 61
Joined: Wed 31 Aug, 2005 20:37
Location: Иркутск

Эмулятор реестра

Post by k561ln7 »

во первых это альфа!


Файлы эмулятора:
FarRegSubstitution.exe
FarRegSubstitution.ini
rsinject.dll

Как заставить работать:
Самое простое: кладете все файлы эмулятора рядом с far.exe, запускаете SaveSettings.bat из фаровской поставки – он сохраняет все фаровские настройки в файлах: FarSave1.reg и FarSave2.reg, которые эмулятор и будет использовать. Все.
Для запуска фара из под эмулятора запускаете FarRegSubstitution.exe, который автоматически запустит фар.


Настройка эмулятора:
в FarRegSubstitution.ini есть всего три параметра: FarSave1, FarSave2, Far.
FarSave1 и FarSave2
  • должны указывать на файлы с импортированными ключами из реестра, к примеру скриптом который входит в стандартную поставку фара: SaveSettings.bat.
    Файлы должны содержать в себе ветки: HKEY_CURRENT_USER\SOFTWARE\FAR и HKEY_LOCAL_MACHINE\SOFTWARE\FAR - это не обязательно, т.е. не проверяется, так отрабатывает SaveSettings.bat, под него и заточено.
    Формат файлов должен быть: REGEDIT4 (файлы созданные при помощи скрипта SaveSettings.bat этому параметру удовлетворяют). Формат: Windows Registry Editor Version 5.00 - не пойдет.
Far - путь до Far.exe

Настройки должны указываться с полными путями, или простым относительным путем, если эмулятор лежит рядом с Far.exe и reg файлами. Не должно быть чего-то такого "../../far/Far.exe"
По умолчанию, настроено так, что предполагается расположение эмулятора рядом с Far.exe.

Работа эмулятора:
Эмулятор считывает информацию из FarRegSubstitution.ini, запускает фар, создает поток в его адресном пространстве, который загружает rsinject.dll, далее rsinject.dll создает в памяти объект эмулятора реестра и экспортирует туда ключи из файлов указанных в FarRegSubstitution.ini, затем подменяет вызовы процедур обращения к реестру на свои собственные.
Объект эмулятора реестра работает так: при вызове следующих функции: RegOpenKeyEx, RegCreateKeyEx, RegOpenKeyA, проверяет идет ли обращение к ключам: HKEY_CURRENT_USER\SOFTWARE\FAR и HKEY_LOCAL_MACHINE\SOFTWARE\FAR, если нет, то он перенаправляет вызов системному реестру, если да, то отрабатывает эмулятор.
При вызове всех остальных функции, проверяется, существования в эмуляторе открытого ключа с передающимся идентификатором, если такой ключ не находится, то обращение передается системному реестру.

Ограничения:
Платформа только 32-х битная, не реализованы процедуры для работы с юникодом, эмулятор не пойдет в линейке win9х, winME.

Эмулируемые процедуры:
RegOpenKeyExA
RegDeleteValueA
RegDeleteKeyA
RegCreateKeyExA
RegSetValueExA
RegQueryValueA
RegOpenKeyA
RegEnumKeyExA
RegQueryValueExA
RegCloseKey
RegEnumValueA

Это только те процедуры, которые использует Far.exe, плагины могут (и используют) более расширенный список процедур, которые эмулятор обрабатывать не будет, они будут обрабатываться системным реестром.



При парсинге reg файлов корректно обрабатываются только следующие типы данных: REG_SZ, REG_DWORD(dword), REG_BINARY(hex), REG_EXPAND_SZ(hex(2)) REG_MULTI_SZ(hex(7)).
Обработка типов: REG_NONE, REG_DWORD_LITTLE_ENDIAN, REG_DWORD_BIG_ENDIAN, REG_LINK, REG_RESOURCE_LIST, REG_FULL_RESOURCE_DESCRIPTOR, REG_RESOURCE_REQUIREMENTS_LIST – не предусмотрена, но фар их вроде бы и не использует.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Post by maxdrfl »

EInvalidPointer in module rsinject.dll at 00003A59
Invalid pointer operation

WinXP SP1
Far 1.71 alpha 4 build 2251
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 569
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by Zeroes »

xpsp2

А у меня сообщается

---------------------------
Error
---------------------------
Not Inject Library
---------------------------
OK
---------------------------

в папке лежат:
Far.exe
FarRegSubstitution.exe
FarSave1.reg
FarSave2.reg
FarRegSubstitution.ini
rsinject.dll
FarRus.hlf
FarRus.lng
--- Zeroes & Ones ---
k561ln7
Posts: 61
Joined: Wed 31 Aug, 2005 20:37
Location: Иркутск

Post by k561ln7 »

попробуйте сейчас и приводите сразу полный путь до папки где лежат все фалы, что написано в ини-шке то же можно показать.
divan
Posts: 4
Joined: Wed 03 Jan, 2007 16:18

Post by divan »

win2003 x64 sp1
Тоже окно с not inject library, фар грузится конечно, но надо полагать использует реестр =)
В filemon и regmon не видно чтобы файл rsinject.dll кто-то искал.
k561ln7
Posts: 61
Joined: Wed 31 Aug, 2005 20:37
Location: Иркутск

Post by k561ln7 »

c правами какими заходите в систему? администраторскими, юзерскими?
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 569
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by Zeroes »

k561ln7

admin

с последней версией
1) создаётся конс окно

2)
выдаёт messagebox:
---------------------------
Error
---------------------------
E722C5A9-CDC6-46DD-BCF9-1DCDC074735A
---------------------------
OK
---------------------------

3) после наж на OK
выдаёт messagebox:
---------------------------
Error
---------------------------
Not Inject Library


---------------------------
OK
---------------------------

после нажат на OK появляются окошки FAR'a но ничего из REG не взялось.
--- Zeroes & Ones ---
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Post by maxdrfl »

аналогичная ситуация.
k561ln7
Posts: 61
Joined: Wed 31 Aug, 2005 20:37
Location: Иркутск

Post by k561ln7 »

Как не кручу, все работает и из под хр из под 2003.
Сделал более расшириный отлов ошибок, ну и поправил в паре мест, если не пойдет, то хоть может станет ясно где именно отваливается при ижекции.
Прикрутил за одно версии.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Post by maxdrfl »

опять Invalid pointer operation.

кстати говоря, всё это дело вроюде бы не работает когда я хочу запустить фар с пользователем (far.exe /u), это можно поправить?
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Post by Alexey Samlyukov »

ini-шник:
----------
[Far]
FarSave1="FarSave1.reg"
FarSave2="FarSave2.reg"
Far="Far.exe"
----------

запуск не проходит:

---------------------------
Far.exe - Ошибка приложения
---------------------------
Исключение неизвестное программное исключение (0x0eedfade) в приложении по адресу 0x7c81eb33.
---------------------------
ОК Отмена
---------------------------



---------------------------
Application Error
---------------------------
Exception EInvalidPointer in module rsinject.dll at 00003D75.

Invalid pointer operation.
---------------------------
ОК
---------------------------
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Post by Alexey Samlyukov »

Ха, он слинкован в десятом колене с MSJAVA.DLL которой у меня в системе нет...
Last edited by Alexey Samlyukov on Wed 15 Aug, 2007 04:33, edited 1 time in total.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Post by Alexey Samlyukov »

нашел в инете - все равно не пашет.
k561ln7
Posts: 61
Joined: Wed 31 Aug, 2005 20:37
Location: Иркутск

Post by k561ln7 »

>кстати говоря, всё это дело вроюде бы не работает когда я хочу запустить фар с пользователем (far.exe /u), это можно поправить?

А как конкретно запускаешь с этим ключом? В инишник прописываешь: Far="Far.exe /u user"?

>Ха, он слинкован в десятом колене с MSJAVA.DLL которой у меня в системе нет...
С чего вдруг? Не использует он MSJAVA.DLL.

FarRegSubstitution.exe статически подключает:
advapi32.dll
kernel32.dll
oleaut32.dll
user32.dll

rsinject.dll статически подключает:
advapi32.dll
kernel32.dll
oleaut32.dll
user32.dll

динамически ни чего не подключается.

Отключил пока объект эмулирующий реестр, понапихал обработку исключений куда только возможно. Сейчас библиотека должна инжектиться, подменять адреса, но все вызовы функций перенаправлять в системный реестр. Проверьте плиз так работать будет или нет. Сейчас поставлю чистую хр, посмотрю как там себя поведет.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Post by maxdrfl »

либо ini (тогда он говорит что не может создать процесс), либо прописываю на запуск bat файл, который пускает фар.

В случае батника все пускается без ошибок, но и работает в системном реестре.

Кстати, последний твой вариант запускается на ура. Ошибок нет.
Post Reply

Return to “Обсуждение плагинов”