Pull to refresh

Comments 17

Ну просто же.
Подменяем стандартную виндовую библиотеку своим враппером, который все вызовы кроме записи и чтения из реестра тупо транслирует в виндовую либу.
А запись в реестр блокирует, ведя её в оперативную память. ТО есть по сути виндовый реестр даже не узнает, что в него хотели писать.

Плюс решения очевиден — универсальность, компактность, простота использования.
Минус — не вижу.
1. Винда может быть разной.
2. Винда может быть х32 и х64.
3. С файлами в профиле как быть?
А какая нам разница какая винда?
IDA хочет конкретные методы, эти конкретные методы есть в нашей фейковой либе, она их использует.
А уж фейковая либа стандартным способом обращается к виндовым функциям, как обычное приложение.

Третий вопрос не понял. Чуть подробнее пожалуйста о каких файлах и профилях речь.
Вы уверены что х32 либа будет корректно подменять вызовы к реестру в среде х64?
Плюс нужно будет осуществлять сброс фейкового реестра из памяти в файл и его загрузку из файла перед запуском иды. Это кто будет делать — та же либа?

По третьему вопросу:
"%appdata%\zynamics"
"%appdata%\Hex-Rays"
"%appdata%\IDA Pro"
Вы уверены что х32 либа будет корректно подменять вызовы к реестру в среде х64?

Конечно.
IDA 32 битная как по вашему работает в 64 битной ОС?

Плюс нужно будет осуществлять сброс фейкового реестра из памяти в файл и его загрузку из файла перед запуском иды. Это кто будет делать — та же либа?
По третьему вопросу:

Второй и третий вопросы по сути одно и тоде.
Такая либа делает практически ровно тоже самое что и ваш батник, просто чуть более чисто. Например, если вырубится электричество — в реестре не будет ничего лишнего. Ну и в целом — один раз решение сделал и забыл, годится для любой проги. Раз вы любите портативность — такая фейковая либа мастхэв.
Речь не о работе иды х32 в винде х64.
Речь о работе либы х32 в иде х64.
Впрочем, признаю: идея интересная. Реализуйте!

Да в общем-то, всё уже придумано до нас. Sandboxie и иже с ними.

Не получится. Тогда все Ваши правки файлов останутся в той же песочнице.
Кстати, размер моего файла (exe) — 140 кб. Инсталлятор Sandboxie — 6 мб.
И мы ушли от основной идеи: чтобы не захламлять систему остатками работы иды — мы захламим её песочницей )))

И кстати я тут подумал о Вашем доводе со сбоем питания. Извините, а как либа спасёт в этом случае? Она поможет сбросить кеш записи на диск? Или в ней встроенный ИБП? Потому как при «удачном» сбое питания у пользователя возникнут куда более серьёзные проблемы, чем грязь в реестре, которая, кстати, легко чистится двойным кликом по файлу backup.reg.

Из песочницы нужные файлы можно руками достать. Кажется, Sandboxie можно указать, что доступ к нужным каталогам не надо виртуализировать. Тогда и доставать руками ничего не надо будет.
Впрочем, если на системе следов вообще оставлять не надо, то песочница не подойдёт, конечно же.

Чёт вы какой-то агрессивный.
Безусловно реализую, если мне вдруг понадобится портабельный софт таскать.
Впрочем на 99% уверен, что уже реализовано сборщиками портативный версий. Уж больно простая и универсальная идея.
Вам показалось :)
Просто Вы пишите концепты, которые не подходят к задаче.
Если портабелизовать через Sandboxie (а с ней — уж поверьте! — я давно разобрался), то там это реализовано не на уровне инжекта библиотек, а на уровне драйвера.

Исходно идея была сделать нечто универсальное, небольшое по размеру и сохраняющее доступ к исходным файлам IDA. Я это реализовал по-своему. Не берусь утверждать, что это — лучший способ, но если кто-то сделает что-то универсальное, небольшое по размеру и с сохранением доступа к файлам — я сниму шляпу.

А рассуждать в теории можно долго. Только до практики редко дело доходит.
Я делал такое на практике. Только не для досутпа к реестру, а для отслеживания работы с GAPI. Не вижу здесь ничего не реализуемого.
Неплохой подход к снаряду, но принцип, описанный AllexIn мне кажется более надежным и универсальным.
Более того — наверняка в системе уже существуют аналогичные возможности, т.к. задача подмены вызовов вызвана (простите за тавтологию) необходимостью обеспечения слоя совместимости для legacy приложений. Теоретически его можно было подхакнуть именно для реализации своих задач.
Век живи — век учись!

call :removedir "%appdata%\zynamics"

:removedir
del /F /Q /S %1 > nul
rmdir /s /q %1
exit /b

Снимаю шапку перед этой конструкцией вызова процедур в Batch файлах! Спасибо, буду пользоваться.
В старинных языках только такие «функции» и были. Goto жил, goto жив, goto будет жить.
Тогда уж gosub :)
Да и структуру call — retn старинного языка Ассемблера пользователям IDA как бы положено знать.

В том вся и прелесть, что здесь мы имеем реальную процедуру, даже с параметрами. А без goto тут даже можно и обойтись, сделав явный exit перед блоком процедур

Sign up to leave a comment.

Articles

Change theme settings