Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Вниз

EIP   Найти похожие ветки 

 
Selesty   (2003-01-20 11:04) [0]

Такой вопрос:
допустим у меня есть строка
ExeCode:string="x90xebx03x5dxebx05xe8xf8xffxffxffx83xc5x15x90x90"
@ExeCode - даст адрес этой строчки?
а как теперь засунуть этот адрес в eip чтобы код содержащийся в по этому адресу начал выполняться
И ещё в каком виде нужно загонять машинный код в строку, чтобы он выполнялся:
1 - в таком: a="\x90\xeb\x03\x5d\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc5\x15\x90\x90"
2 - в таком:
a="x90xebx03x5dxebx05xe8xf8xffxffxffx83xc5x15x90x90"
3 - в таком:
a="90eb035deb05e8f8ffffff83c5159090"
Положит ли интерпритатор строку в стек, если я обозначу переменную содержащую маш коды как ExeCode:string="..." в Var функции (в модуле (unit))
как строка обозначенная как string будет расположена в 32 битном стеке, если строка будет представлять некий машинный код - выполнится ли он, если на него будет указывать eip?
Думаю вопрос понятен?!
Только не спрашивайте зачем мне это.... Просто Нуно очень
Ответ
2. Строку надо в виде:
SomeString: string=#$b0#$bf....;
3. вместо @SomeString используй procedure(PChar(SomeString))... так оно правильно адрес возьмет

procedure(PChar(SomeString)) - не совсем понятно, так как в регистр eip засунуть адрес строки, чтобы далее программа начала выполнять инструкции заданные машинными кодами в строке, допустим есть функция
function exe_code(var VerOS:byte); //VerOS - версия Оси (смотря какая)
var
SomeString:string="#$90#$eb#$03#$5d#$eb#$05#$e8#$f8#$ff#$ff#$ff#$83";
{Куда поместится эта строка?В стек или в data? - Важно - так как код самомодифицирующийся}
regi:registers;
P:Pchar;
begin
P:=@SomeString;
regi.ip:=p; //помещаем указатель на строку в eip - прокатит так?-начнёт ли код из //которого состоит SomeString выполняться?

end;
//Или как ещё можно заменить eip на нужный мне, в течение выполнения программы?


 
Digitman   (2003-01-20 11:31) [1]


> допустим у меня есть строка
> ExeCode:string="x90xebx03x5dxebx05xe8xf8xffxffxffx83xc5x15x90x90"
> @ExeCode - даст адрес этой строчки?


Нет, не даст. Это - адрес управляющей структуры AnsiString во внутр.представлении ObjectPascal, а не самих строковых данных, уонтролируемых этой структурой.


> в каком виде нужно загонять машинный код в строку,
> чтобы он выполнялся:
> 1 - в таком: a="\x90\xeb\x03\x5d\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc5\x15\x90\x90"
> 2 - в таком:
> a="x90xebx03x5dxebx05xe8xf8xffxffxffx83xc5x15x90x90"
> 3 - в таком:
> a="90eb035deb05e8f8ffffff83c5159090"


Ни в одном из перечисленных.


> Положит ли интерпритатор строку в стек, если я обозначу
> переменную содержащую маш коды как ExeCode:string="..."
> в Var функции (в модуле (unit))


ObjectPascal в составе Delphi - это не интерпретатор, а компилятор.
Да, положит. Но в рез-те в стек будет положен адрес упр.структуры строковой переменной типа AnsiString, объявленной в процедуре локально.


> строка будет представлять некий машинный код - выполнится
> ли он, если на него будет указывать eip?


Строковые данные не могут содержать маш.код.
Да, выполнится. Но результат будет непредсказуем.


> как ещё можно заменить eip на нужный мне, в течение выполнения
> программы?


Явно записать в eip нужное значение нельзя.
eip получает новое значение:
- jmp, j[condition]
- call/ret[n]
- intXX, iret[f]


 
Игорь Шевченко   (2003-01-20 13:01) [2]

Digitman © (20.01.03 11:31)

В дополнение:

push needed_address
ret

С уважением,


 
Digitman   (2003-01-20 13:06) [3]


> Игорь Шевченко


Дык иыть - хоть push хоть не push - все равно ret[n] :))))


 
Игорь Шевченко   (2003-01-20 13:14) [4]


> Digitman ©

:-))
Маленькая разница все-таки есть :-)))


 
Danlicha   (2003-01-22 00:39) [5]

Так тоже можно:

mov eax, needed_address
jmp eax




Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
8-54118
Berser
2002-12-06 01:20
2003.03.17
Запись звука с тел лин с помощью AsuncPro


6-54152
WingGod
2003-01-24 02:45
2003.03.17
События...


1-54040
Спрашивающий
2003-03-04 01:26
2003.03.17
Повторю вопрпос:Взаимодействие OpenDialog и функции DiskFree(0)


14-54163
Феликс
2003-02-28 20:49
2003.03.17
От тюрьмы и от сумы...


14-54196
Дмитрий К.К.
2003-03-03 06:23
2003.03.17
Апплеты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский