Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Apr 26, 2019 1:25 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 17 posts ]  Go to page Previous 1 2
Author Message
 Post subject: Re: @KERNEL
PostPosted: Tue Aug 28, 2018 6:49 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1143
pavelyakov wrote:
Автор ни хера не смыслит в программировании просто. - ну ок тебе виднее. Странно, только почему-то работает все..

Работает - это далеко не показатель, особенно в ядерных делах.

_________________
я лишь учусь


Top
   
 Post subject: Re: @KERNEL
PostPosted: Wed Aug 29, 2018 9:18 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
punk_joker wrote:
pavelyakov wrote:
Автор ни хера не смыслит в программировании просто. - ну ок тебе виднее. Странно, только почему-то работает все..

Работает - это далеко не показатель, особенно в ядерных делах.
Вот-вот.
Правильнее сказать "выполняется какой-то код и по счастливой случайности вроде бы ничего не падает: ни приложение, ни ядро" — по факту же как раз таки НЕ работает.

pavelyakov, ты почему-то не хочешь читать, что тебе пишут.
Может быть тебе кое-что поможет понять. Возьмём твой же "вроде бы" работающий пример:
Code:
beginWindow:
dword callback = 0;
void window(){
callback = EAX; // указатель на функцию окна в ядре
EBX+=100; // сдвинуть координату X всех окон на 100 пикселей.
callback(); // вызов функции
}
endWindow:
void main(){
EAX = 81;
EBX = 0; // номер переопределяемой функции
ECX = #window; // указатель на стартовый адрес функции
EDX = #beginWindow; // начальный адрес загрузки скомпилированной функции в память ядра
ESI = #endWindow; // конечный адрес
$int 0x40
}
Для чего тебе копировать вот это
Code:
dword callback = 0;
там ведь изначально никаких нужных данных не содержится!?
Может быть тебе всё-таки не копировать нужно, а выделить память?
Так, а теперь подумай, как ты будешь к ней адресоваться?
Ты ведь заранее не знаешь, что вернёт тебе
Code:
        stdcall kernel_alloc, esi
        mov     dword [tempPointerAlloc], eax
то есть, ты не знаешь, по какому адресу будет загружен твой код и данные(однако приложение собрано с ImageBase 0).
Получается, что будет происходить запись не понятно куда и чтение не понятно откуда. Вполне вероятно, что из-за этого могут затереться какие-то данные или код в ядре, а это может привести к чему-то нехорошему(порче пользовательских данных, например, или ещё хуже оборудования).

Если было бы всё так просто, то и не выдумывали бы ни какие релокации, а они нужны.
Вот, к примеру, процедура fix_coff_relocs http://websvn.kolibrios.org/filedetails ... c#line-786
Как думаешь, для чего она? Или по твоему она лишняя :)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 17 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited