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

Вниз

Как можно получить доступ к регистрам из делфей?   Найти похожие ветки 

 
Selesty   (2003-01-22 23:48) [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 на нужный мне, в течение выполнения программы?


 
ole   (2003-01-23 04:20) [1]

Const
A:Array [1..Max] of Byte=
($90,$eb,$03....$90);
End;
В процессе выполнения программы:
Asm
Jmp Pointer(A)
End;
Не забудь поставить в конце кода код команды RETF



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

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

Наверх





Память: 0.45 MB
Время: 0.008 c
14-30018
Amit
2003-02-24 10:03
2003.03.10
It s cool! Верно...


1-29831
ghg
2003-02-28 10:00
2003.03.10
Tbitmap


8-29962
kucherav
2002-11-26 20:12
2003.03.10
может вопрос и не в тему, но все-таки


1-29855
Строитель
2003-02-25 16:33
2003.03.10
Броузер


3-29713
Cherepovets
2003-02-18 23:40
2003.03.10
TQuery





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский