Как создать хранимую процедуру на основе запроса от программы?
Такое выдает профайлер когда моя программа посылает запрос, вот как мне создать хранимую процедуру на основе этого? Хранимые процедуры были утеряны((
declare @p3 int
set @p3=NULL
declare @p4 int
set @p4=NULL
declare @p5 int
set @p5=NULL
exec dbo.GetUserList 0,54,@p3 output,@p4 output,@p5 output
select @p3, @p4, @p5
go
Вот что IDA полказывает .rdata:004F6D8C aCallDboApGetac_0 db '{CALL dbo.GetUserList(?,?,?,?,?)}',0 .rdata:004F6D8C ; DATA XREF: AccountDB::GetUserMaxLevel(int,uchar &,int &,int &):loc_417619↑o
Ответы (1 шт):
А я понял, в чем вопрос!
Насколько я понял - у Вас были перенесены (откуда то) данные в таблицах, а программные обьекты-такие, как функции и/или хранимые процедуры-забыли перенести (возможно, просто потому, что не знали об их существовании). Но это - мои предположения.
И теперь у Вас такая задача по своеобразному реверс-инжинирингу: есть обращения к хранимкам, но нет самих процедур.
Как я понимаю, в этом случае Ida бесполезен, и опираться при восстановлении можно только на названия процедур, типы их аргументов и уже хранящуюся в таблицах информацию.
Ну, то есть, если процедура называется GetUsers - то понятно, что процедура должна возвращать список пользователей. Дальше смотрим таблицу пользователей, и пытаемся придумать, какие ее столбцы было бы логично вернуть в ответ, чтобы они соответствовали списку выходных аргументов хранимой процедуры. И так далее...
Иногда, насколько я знаю, ещё логику, реализованную в хранимых, переносят в код программы. У этого подхода есть свои плюсы и минусы, нужно "смотреть по обстановке", делать ли так