Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Имеется чужая программа без исходного кода, которая под определённым пользователем, чей пароль мне неизвестен, выполняет определённые команды SQL.

С помощью профайлера я вижу название View, который выполняется в одном месте программы. Он возвращает осмысленный результат, содержащий несколько строк.

Когда я смотрю исходный код этого View из-под себя, я вижу что-то вроде 'SELECT null AS Field1, null AS Field2, null AS Field3'. Когда я его запускаю, я получаю одну пустую строку.

Никаких CREATE VIEW и чего-либо подобного не выполняется. Как разработчикам удалось скрыть текст View от всех пользователей, кроме того, под которым работает программа?
5 май 15, 11:42    [17601169]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Андрей Усачёв
С помощью профайлера я вижу название View, который выполняется в одном месте программы. Он возвращает осмысленный результат, содержащий несколько строк.

А как вы с помощью профайлера увидели результат ?
5 май 15, 11:43    [17601174]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
В схеме этого "определенного пользователя" view может быть совершенно другим
5 май 15, 11:55    [17601249]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Текст запроса из профайлера приведите, пожалуйста
5 май 15, 11:59    [17601279]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Результат я увидел не в профайлере, а в приложении.

Текст в профайлере примерно такой: "SELECT Field1, Field2, Field3 FROM View1".

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

Как посмотреть, как выглядит View в схеме этого пользователя? Он db_owner, себе я тоже добавил эту схему, переконнектился к серверу, но вижу тот же самый фиктивный исходный код.
5 май 15, 12:06    [17601325]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Залогиниться "определённым пользователем" я не могу, потому что не знаю его пароля, а если поменяю, то перестанет работать очень важная программа.
5 май 15, 12:07    [17601340]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Андрей Усачёв
Результат я увидел не в профайлере, а в приложении.

И почему вы решили, что этот результат взят только из представления ?

Андрей Усачёв
Как посмотреть, как выглядит View в схеме этого пользователя?

найти его и посмотреть. Если конечно он существует
5 май 15, 12:09    [17601357]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Андрей Усачёв
Результат я увидел не в профайлере, а в приложении.

+ Анекдот

- Вы знаете, этот Челентано ужасно поет - картавит, не попадает в такт и путает слова!
- А где вы его слушали?
- Та нигде. Мне Мойша напел по телефону.
5 май 15, 12:22    [17601463]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Андрей Усачёв
Как посмотреть, как выглядит View в схеме этого пользователя?


Для начала можно попробовать выполнить запрос
select *
from sys.views
where name  = <название Вашего view>

на той базе, к которой обращается Ваше приложение, и посмотреть, сколько строк вернется.
5 май 15, 12:23    [17601467]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Glory
Андрей Усачёв
Результат я увидел не в профайлере, а в приложении.

И почему вы решили, что этот результат взят только из представления ?


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

Я думал, есть какой-то общеизвестный трюк, позволяющий для всех посторонних показывать фиктивный View вместо правильного.
5 май 15, 12:40    [17601555]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Кот Матроскин
Андрей Усачёв
Как посмотреть, как выглядит View в схеме этого пользователя?


Для начала можно попробовать выполнить запрос
select *
from sys.views
where name  = <название Вашего view>

на той базе, к которой обращается Ваше приложение, и посмотреть, сколько строк вернется.


Возвращется одна строка. Я даже смотрел "select text from syscomments where id = object_id('SYS_LICDT')" -- возвращается фейковый запрос.
5 май 15, 12:43    [17601570]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
SQL2008
+ Анекдот

- Вы знаете, этот Челентано ужасно поет - картавит, не попадает в такт и путает слова!
- А где вы его слушали?
- Та нигде. Мне Мойша напел по телефону.


Большое спасибо! Вы мне очень помогли.

Я прекрасно осознаю, что не имея доступа к исходному тексту программы, можно только строить предположения относительно того, как связаны внешние проявления её работы и истинные процессы, происходящие внутри неё.
5 май 15, 12:44    [17601577]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Поищу что-то похожее на таблицу в файловой структуре программы.
5 май 15, 12:46    [17601589]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Андрей Усачёв
Я думал, есть какой-то общеизвестный трюк, позволяющий для всех посторонних показывать фиктивный View вместо правильного.

Сервер хранит тот код, что ему поручили хранить.
Сервер может скрывать от вас текст представления. Но он не может его подменять.
5 май 15, 12:47    [17601593]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
o-o
Guest
Андрей Усачёв
Как посмотреть, как выглядит View в схеме этого пользователя? Он db_owner, себе я тоже добавил эту схему, переконнектился к серверу, но вижу тот же самый фиктивный исходный код.

если вы сисадмин, возьмите да посмотрите от его имени.
execute as login = 'mysterious_login';
select system_user;
------
--mysterious_login
use your_db;
go

exec sp_helptext 'dbo.vw_super_view';
5 май 15, 13:04    [17601682]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Такое же представление может сейчас лежать и в других базах.
Но с другими SELECTами.

Кстати, действительно, фиктивное VIEW может использоваться,
например, для создания колонок грида запросом SELECT * FROM Вью;

А данными заполняется из другого места, необязательно из БД.

Хотя, с нормальными гридами это делается намного проще...
5 май 15, 13:11    [17601733]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
o-o
Guest
iap
Такое же представление может сейчас лежать и в других базах.
Но с другими SELECTами.

он же пишет, что если имеющееся
"удалить View или поменять имя хотя бы одного его поля, программа работать перестаёт"
значит, обращается именно к этому.
ну вот пусть и убедится, что сервер ни при чем.
а что там кто в гриде подменяет, это в другую ветку пускай жалуется :)
5 май 15, 13:24    [17601827]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Андрей Усачёв
С помощью профайлера я вижу название View, который выполняется в одном месте программы. Он возвращает осмысленный результат, содержащий несколько строк.

Текст этот можно посмотреть?
5 май 15, 13:24    [17601829]     Ответить | Цитировать Сообщить модератору
 Re: Как удалось скрыть текст View?  [new]
Андрей Усачёв
Member

Откуда: Рига, Латвия
Сообщений: 128
Из-под "того" пользователя текст выглядит так же.

Сейчас я практически уверен, что View используется лишь для инициализации грида, а данные таблицы хранятся в памяти, потому что я нашёл каталог на диске, где они периодически сохраняются. Если бы данные хранились в базе, вряд ли пришлось так делать.

Спасибо всем!
5 май 15, 13:28    [17601859]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить