Page 2 of 2
Re: Run with OpenDialog
Posted: Wed Nov 09, 2016 4:52 pm
by Leency
RunOD более функционален, может пусть он будет в дистре?
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 12:23 pm
by 0CodErr
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 12:39 pm
by Pathoswithin
http://wiki.kolibrios.org/wiki/Writing_ ... The_header
This is the total size of the program
code in bytes, its easy to use a label which you place at the end of the
code.
А по факту не понятно, зачем этот параметр вообще нужен - он не используется.
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 12:41 pm
by 0CodErr
>> wiki
>> актуальная информация
ну-ну
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 12:42 pm
by 0CodErr
зачем этот параметр вообще нужен - он не используется
А зачем же ты тогда его изменил-то
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 1:02 pm
by Siemargl
Используется. Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"
А вообще, теоретически нужно разделять код и данные для защиты кода от несанкционированного изменения.
Если я правильно подозреваю, в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 1:09 pm
by 0CodErr
Siemargl wrote: в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
Ну вот оно у меня так и было. Пока кое-то не решил, что он самый "умный"
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 1:09 pm
by Pathoswithin
Факт: программа работает. Посмотрел в kernel/core/taskman.inc - не используется.
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 1:20 pm
by Siemargl
Pathoswithin wrote:Факт: программа работает. Посмотрел в kernel/core/taskman.inc - не используется.
Ну работать она может и по ошибке)
Если смотрел загрузчик, можешь пояснить, почему 1 и не 2. Т.е как именно проверяется заголовок и что грузится в память.
Мне это нужно на предмет в перспективе подлинкованных к программам ресурсов.
1>Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"
2>Если я правильно подозреваю, в коде OD ошибка - program.end должно указывать как минимум за концом статических данных, т.е что грузить из файла в память ?!
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 1:51 pm
by Leency
0CodErr
Программа работает и это главное.
Знаешь как сделать более правильно - правь код.
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 2:51 pm
by Pathoswithin
Siemargl
Сейчас вместо этого параметра просто размер самого файла, потому я и не понял его значения. А вот если следующий параметр (количество памяти) будет меньше размера файла, тогда ошибка.
Re: Run with OpenDialog
Posted: Fri Nov 11, 2016 3:40 pm
by CleverMouse
Siemargl wrote:Используется. Когда я неверно его (или м.б. соседний в заголовке) выставил - КОС отказалась запускать прогу с диагнозом "not an executable"
Не используется. Там есть проверка от
diamond'а 10-летней давности
Code: Select all
; \begin{diamond}[20.08.2006]
; sanity check (functions 19,58 load app_i_end bytes and that must
; fit in allocated memory to prevent kernel faults)
cmp edx, [APP_HEADER_01.i_end]
jb .fail
; \end{diamond}[20.08.2006]
- в edx в этот момент равен mem_size - но это всё. Видимо, все остальные использования отмерли вместе с функциями 19 и 58.
Siemargl wrote:А вообще, теоретически нужно разделять код и данные для защиты кода от несанкционированного изменения.
Ядерный PE-загрузчик честно устанавливает права доступа к памяти по атрибутам секций. Отключаемо, естественно, - fasm по умолчанию создаёт одну секцию readable+writable+executable, с которой можно делать что угодно.