![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Как свести к минимуму использование апи функций в программе? Нужны конструктивные советы. Может у кого-нить найдуться исходники неких апи функций на асме?
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Это является собственостью Microsoft, а потому если что-то и есть, то это либо украдено, либо дизасемблировано. И то и другое запрещено по закону. Так что в этом здесь не помогут. (Если речь идет о WinApi) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Но почему сразу украдено?? Может гении додумались как та или иная процедура работает. Мне всего лишь надо минимум использование апи функций в программе. Нужны советы.. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ну в конце концов програма работает как клиент, на windows и при любой необходимость обо всем просит Win Api. Можно, конечно, написать сервис ядра который будет ко всему железу обращатся без api, но это будет не унивесально, только для того железа для которого будет предусмотрено. Но смысл Api дать универсальный аппаратно-независимый логический интерфес, где не надо себе ни чем морочить голову. Выходя из Api программа попадает во времена "ДОС". Где все нужно делать самому. А это более громоздко и не универсально.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
Да не, ну в ДОСе были прерывания, тоже довольно универсальная штука
![]() А вообще вопрос неккоректен. Какие именно API функции ты хочешь заменить? Если функции которые "ниже" ring3 не уходят(wsprintf lstrlen и т.д.), то не вижу проблемы, если режима ядра, то их можно вызывать через системные сервисы(с помощью sysenter или int 2Eh), но в каждой системе(даже сервиспаке) номера сервисов разные, а это дополнительный гемморой. Это сообщение отредактировал(а) BUGOR - 10.9.2006, 09:10 |
|||
|
||||
RideX |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Sunvas, пиши прогу под MS-DOS, или юзай Native API (ф-ции режима ядра). Хотя это посложнее будет чем Win32 API. Самый простой примерчик:
|
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
Так он же вроде вообще про API говорил, а ты ему Native API предлагаешь, это же те же апи, только вызываются из другой библиотеки
![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Не использовать никаких функций. Только синтаксис языка
![]() Ты собераешься на асме обращаться к диску? Или к клаве? Или к монитору? В винде? Не используя API? Дохлый номер. Ну, если тебе не нужен интерфейс ввода-вывода, то можно. Только программа не будет получать ни откуда данные и никуда их не будет выводить. - Вот написал программу? - А что она делает? - А фиг знает - она не говорит ![]() |
|||
|
||||
BUGOR |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
Бред. |
|||
|
||||
RideX |
|
||||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Они вызываются из ntdll/ntoskrnl, и вообще-то не те же, это "ядерные", т.е. Ring0 функции ![]()
Что значит исходники? Исходники экспортируемых функций из системных библиотек? Вообще в Инете где-то были исходники Windows, но сразу скажу, что у меня их нет. |
||||
|
|||||
BUGOR |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
RideX
Я вообще-то написал, что это Native API, я в курсе, что они исполняются в Ring0, но, что это принципиально меняет я не понимаю? Вопрос стоит как избавиться от АПИ, а ты вместо юзермодных предлагаешь ядерные, а что это меняет? Только имена функций и библиотеки из которых они импортируются.
Именно так, а чем предложенный мною вариант не подходит, в контексте данной темы?
Ты о чём вообще? Чтобы корректно вызвать sysenter или int 2Eh в eax надо положить номер сервиса. Бог ты мой... Ну да на >= 2k будет работать точно, хотя скорее всего вообще на всей линейке NT будет работать, а может и на 98/Me или ты проверял, чтобы это утверждать? |
||||||||
|
|||||||||
RideX |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
То, что юзермодные функции уже не используются.
Только лишь о том, что sysenter - это команда перехода в Ring0, т.е. в ntoskrnl.exe Что я должен проверять, утверждаю что, про sysenter что ли? Так это в Intel Architecture Software Developer’s Manual написано, SYSENTER - Fast System Call, transfers to a flat protected mode kernel. И вообще, покажи где я говорил что что-то где-то не работает и про передачу параметров. |
|||
|
||||
BUGOR |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
А где в теме сказано, что нужно избавиться от вызова только лишь юзермодных апи? Там сказано от АПИ в целом.
Вызов функций через системные сервисы не использует ни экспорт, ни импорт файлов. Предложенный тобою вариант: ZwCreateKey(@hKey, KEY_ALL_ACCESS, @attr, 0, nil, REG_OPTION_NON_VOLATILE, nil); Это вызов функции которая ЭКСПОРТИРУЕТСЯ из ntdll.dll.
Ну так я же с этим не спорю ![]()
Заметь, я везде на ряду с sysenter(а он появился вроде только в 2k) упоминаю int 2Eh. Ты в своём посте написал:
Я так понял ты имел ввиду, что это актуально только для этих систем. Я с этим не спорю, т.к. на других не проверял, хотя ntdll.dll есть и в 98 и в Me. Добавлено @ 17:12 Ну всё, я допёр, что ты имеешь ввиду... Да, я вызываю API, но в обход импорта и экспорта файлов, я думал автор топика именно этого хочет добиться. Это сообщение отредактировал(а) BUGOR - 10.9.2006, 17:10 |
||||||||||
|
|||||||||||
RideX |
|
|||
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
BUGOR, ага, понятно
![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |