как обойти вызов UDF

0 views
Skip to first unread message

Denys Khanzhyiev

unread,
Oct 31, 2013, 5:45:14 AM10/31/13
to ru-fi...@googlegroups.com
Есть некая программа, которая при запуске обращается к базе, делает вызов
select some_udf('some text') from $rdb_database;

и дальше не хочет работать если запрос возвращает true

У меня есть админский доступ к базе, но нет доступа к самому серверу, так что подменить dll я не могу. (Точнее могу, но это не решение).
Мне нужно сделать временно не перезапуская сервер, чтобы это запрос возвращал false. Потом вернуть назад.

Есть идеи?

Dmitry A. Beloshistov

unread,
Oct 31, 2013, 6:08:46 AM10/31/13
to ru-fi...@googlegroups.com

Ну а просто:

 

Select FALSE from Rdb$database

 

Или :

 

Select IIF(some_udf(‘some text’)=TRUE,FALSE,FALSE) from rdb$database.

 

вместо твоего?

 

 

WBR, Dmitry Beloshistov AKA [-=BDS=-]

--
 
---
Вы получили это сообщение, поскольку подписаны на группу gmane.comp.db.firebird.russian.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес ru-firebird...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.

Alex Cherednichenko

unread,
Oct 31, 2013, 6:11:05 AM10/31/13
to ru-fi...@googlegroups.com
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
> select some_udf('some text') from $rdb_database;
>
> пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ true
>
> пїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ,
> пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ dll пїЅ пїЅпїЅ пїЅпїЅпїЅпїЅ. (пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ).
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ false. пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ.
>
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ?

пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.

Denys Khanzhyiev

unread,
Oct 31, 2013, 6:17:57 AM10/31/13
to ru-fi...@googlegroups.com
Я не могу поменять запрос, я могу изменять только базу. Впрочем... Можно попатчить прогу.


31 октября 2013 г., 12:08 пользователь Dmitry A. Beloshistov <to...@scm.com.ua> написал:

Denys Khanzhyiev

unread,
Oct 31, 2013, 6:19:50 AM10/31/13
to ru-fi...@googlegroups.com
Почему сразу взлом. Это нужно для удобства. Это защита от дурака, я же себя таковым не считаю. :-)


31 октября 2013 г., 12:11 пользователь Alex Cherednichenko <cheredn...@post.cz> написал:
> Есть некая программа, которая при запуске обращается к базе, делает вызов
> select some_udf('some text') from $rdb_database;
>
> и дальше не хочет работать если запрос возвращает true
>
> У меня есть админский доступ к базе, но нет доступа к самому серверу,
> так что подменить dll я не могу. (Точнее могу, но это не решение).
> Мне нужно сделать временно не перезапуская сервер, чтобы это запрос
> возвращал false. Потом вернуть назад.
>
> Есть идеи?

Взлом проприетарного продукта.
Нехорошо.

Alex Cherednichenko

unread,
Oct 31, 2013, 7:03:12 AM10/31/13
to ru-fi...@googlegroups.com
> пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ. :-)

пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅ пїЅпїЅпїЅпїЅ.

Евгений Виноградный

unread,
Oct 31, 2013, 8:03:14 AM10/31/13
to ru-fi...@googlegroups.com
On 31.10.2013 13:45, Denys Khanzhyiev wrote:
> О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫
> select some_udf('some text') from $rdb_database;
>
> О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ true
>
> О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫,
> О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ dll О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫. (О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫).
> О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ false. О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫.
>
> О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫?
>
> --
>
> ---
> О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> gmane.comp.db.firebird.russian.
>
> О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫
> ru-firebird...@googlegroups.com.
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫:
> https://groups.google.com/groups/opt_out.
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ UDF О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ budf.dll О©╫О©╫О©╫ ib_udf.dll. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫:
{{{
/*****************************************
*
* s t r l e n
*
*****************************************
*
* Functional description:
* Returns the length of a given string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION strlen
CSTRING(32767) CHARACTER SET NONE
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
}}}

Denys Khanzhyiev

unread,
Oct 31, 2013, 10:22:33 AM10/31/13
to ru-fi...@googlegroups.com
не пойдет - она мне вернет число >0, что есть true
а мне надо вернуть false
Но в общем я уже распаковал программу, подменил строку запроса. Все равно не работает, как надо.
Ладно, буду мучится с перезапуском сервера.


31 октября 2013 г., 14:03 пользователь Евгений Виноградный <vinog...@gmail.com> написал:
On 31.10.2013 13:45, Denys Khanzhyiev wrote:
Есть некая программа, которая при запуске обращается к базе, делает вызов
select some_udf('some text') from $rdb_database;

и дальше не хочет работать если запрос возвращает true

У меня есть админский доступ к базе, но нет доступа к самому серверу,
так что подменить dll я не могу. (Точнее могу, но это не решение).
Мне нужно сделать временно не перезапуская сервер, чтобы это запрос
возвращал false. Потом вернуть назад.

Есть идеи?

--

---
Вы получили это сообщение, поскольку подписаны на группу
gmane.comp.db.firebird.russian.

Чтобы отказаться от подписки на эту группу и перестать получать из нее
сообщения, отправьте электронное письмо на адрес

Настройки подписки и доставки писем:
https://groups.google.com/groups/opt_out.
Попробуй переобъяви UDF на одну из стандартных функций с подходящими параметрами и результатом из budf.dll или ib_udf.dll. Например:
{{{

/*****************************************
 *
 *    s t r l e n
 *
 *****************************************
 *
 * Functional description:
 *    Returns the length of a given string.
 *
 *****************************************/
DECLARE EXTERNAL FUNCTION strlen
    CSTRING(32767) CHARACTER SET NONE
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';

}}}

--

--- Вы получили это сообщение, поскольку подписаны на группу gmane.comp.db.firebird.russian.

Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес ru-firebird+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages