Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Минимум АПИ, Нужны советы 
:(
    Опции темы
Sunvas
Дата 10.9.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Как свести к минимуму использование апи функций в программе? Нужны конструктивные советы. Может у кого-нить найдуться исходники неких апи функций на асме?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Alexeis
Дата 10.9.2006, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Sunvas @  10.9.2006,  00:31 Найти цитируемый пост)
исходники неких апи функций на асме

Это является собственостью Microsoft, а потому если что-то и есть, то это либо украдено, либо дизасемблировано. И то и другое запрещено по закону. Так что в этом здесь не помогут. (Если речь идет о WinApi)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sunvas
Дата 10.9.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(alexeis1 @  10.9.2006,  00:45 Найти цитируемый пост)
Так что в этом здесь не помогут. (Если речь идет о WinApi)

Но почему сразу украдено?? Может гении додумались как та или иная процедура работает. Мне всего лишь надо минимум использование апи функций в программе. Нужны советы..


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Alexeis
Дата 10.9.2006, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Ну в конце концов програма работает как клиент, на windows и при любой необходимость обо всем просит Win Api. Можно, конечно, написать сервис ядра который будет ко всему железу обращатся без api, но это будет не унивесально, только для того железа для которого будет предусмотрено. Но смысл Api дать универсальный аппаратно-независимый логический интерфес, где не надо себе ни чем морочить голову. Выходя из Api программа попадает во времена "ДОС". Где все нужно делать самому. А это более громоздко и не универсально.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BUGOR
Дата 10.9.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Да не, ну в ДОСе были прерывания, тоже довольно универсальная штукаsmile

А вообще вопрос неккоректен. Какие именно API функции ты хочешь заменить? Если функции которые "ниже" ring3 не уходят(wsprintf lstrlen и т.д.), то не вижу проблемы, если режима ядра, то их можно вызывать через системные сервисы(с помощью sysenter или int 2Eh), но в каждой системе(даже сервиспаке) номера сервисов разные, а это дополнительный гемморой. 

Это сообщение отредактировал(а) BUGOR - 10.9.2006, 09:10


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
RideX
Дата 10.9.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



Sunvas, пиши прогу под MS-DOS, или юзай Native API (ф-ции режима ядра). Хотя это посложнее будет чем Win32 API. Самый простой примерчик:
Код

implementation

{$R *.dfm}

const
 KeyName = '\Registry\Machine\SOFTWARE\NewKey';

 
procedure TForm1.Button1Click(Sender: TObject);
var
 uKeyName: TUnicodeString;
 attr: TObjectAttributes;
 hKey: dword;
begin
  RtlInitUnicodeString(@uKeyName, KeyName);
  InitializeObjectAttributes(@attr, @uKeyName, OBJ_CASE_INSENSITIVE, 0, nil);
  ZwCreateKey(@hKey, KEY_ALL_ACCESS, @attr, 0, nil, REG_OPTION_NON_VOLATILE, nil);
  ZwClose(hKey);
end;

end.

PM   Вверх
BUGOR
Дата 10.9.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Так он же вроде вообще про API говорил, а ты ему Native API предлагаешь, это же те же апи, только вызываются из другой библиотекиsmile


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Snowy
Дата 10.9.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Sunvas @  10.9.2006,  00:31 Найти цитируемый пост)
Как свести к минимуму использование апи функций в программе?
Не использовать никаких функций. Только синтаксис языка smile

Цитата(Sunvas @  10.9.2006,  00:31 Найти цитируемый пост)
Может у кого-нить найдуться исходники неких апи функций на асме?
Ты собераешься на асме обращаться к диску? Или к клаве? Или к монитору? В винде? Не используя API? Дохлый номер.
Ну, если тебе не нужен интерфейс ввода-вывода, то можно.
Только программа не будет получать ни откуда данные и никуда их не будет выводить.

- Вот написал программу?
- А что она делает?
- А фиг знает - она не говорит smile

PM MAIL   Вверх
BUGOR
Дата 10.9.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Цитата

Ты собераешься на асме обращаться к диску? Или к клаве? Или к монитору? В винде? Не используя API? Дохлый номер.
Ну, если тебе не нужен интерфейс ввода-вывода, то можно.
Только программа не будет получать ни откуда данные и никуда их не будет выводить.


Бред. 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
RideX
Дата 10.9.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



Цитата(BUGOR @  10.9.2006,  13:03 Найти цитируемый пост)
Так он же вроде вообще про API говорил, а Native API предлагаешь, это же те же апи, только вызываются из другой библиотеки

Они вызываются из ntdll/ntoskrnl, и вообще-то не те же, это "ядерные", т.е. Ring0 функции  smile Иначе как ты себе представляешь, каким образом он собирается взаимодействовать с операционной системой, так что ли:
Цитата(BUGOR @  10.9.2006,  12:08 Найти цитируемый пост)
их можно вызывать через системные сервисы(с помощью sysenter или int 2Eh)
Так это никакие не сервисы, это шлюз в Ring0, соответственно для WindowsXP/Windows 2000

Цитата(Sunvas @  10.9.2006,  03:31 Найти цитируемый пост)
Может у кого-нить найдуться исходники неких апи функций на асме?
Что значит исходники? Исходники экспортируемых функций из системных библиотек? Вообще в Инете где-то были исходники Windows, но сразу скажу, что у меня их нет.

PM   Вверх
BUGOR
Дата 10.9.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



RideX
Цитата

Они вызываются из ntdll/ntoskrnl, и вообще-то не те же, это "ядерные", т.е. Ring0 функции   Иначе как ты себе представляешь, каким образом он собирается взаимодействовать с операционной системой, так что ли:


Я вообще-то написал, что это Native API, я в курсе, что они исполняются в Ring0, но, что это принципиально меняет я не понимаю? Вопрос стоит как избавиться от АПИ, а ты вместо юзермодных предлагаешь ядерные, а что это меняет? Только имена функций и библиотеки из которых они импортируются. 


Цитата

так что ли:


Именно так, а чем предложенный мною вариант не подходит, в контексте данной темы?

Цитата


Цитата
их можно вызывать через системные сервисы(с помощью sysenter или int 2Eh)


Так это никакие не сервисы, это шлюз в Ring0, соответственно для WindowsXP/Windows 2000


Ты о чём вообще? Чтобы корректно вызвать sysenter или int 2Eh в eax надо положить номер сервиса.
Бог ты мой... Ну да на >= 2k будет работать точно, хотя скорее всего вообще на всей линейке NT будет работать, а может и на 98/Me или ты проверял, чтобы это утверждать?


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
RideX
Дата 10.9.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



Цитата(BUGOR @  10.9.2006,  18:15 Найти цитируемый пост)
ты вместо юзермодных предлагаешь ядерные, а что это меняет?
То, что юзермодные функции уже не используются.

Цитата(BUGOR @  10.9.2006,  18:15 Найти цитируемый пост)
чем предложенный мною вариант не подходит, в контексте данной темы?
Твой вариант использует функции ntoskrnl, ты понимаешь эту тему как полный отказ от использования API. Если ты считаешь это приемлемым, почему ты считаешь что нельзя использовать Native API, которые вернут тебе номер вызываемой ф-ции, а предлагаешь, как я понял, вручную подставлять их значения перед sysenter. К чему эта половинчатось? Тогда уж полностью отказывайся от использования функций Windows и не юзай ntoskrnl.

Цитата(BUGOR @  10.9.2006,  18:15 Найти цитируемый пост)
Ты о чём вообще?

Только лишь о том, что sysenter - это команда перехода в Ring0, т.е. в ntoskrnl.exe

Цитата(BUGOR @  10.9.2006,  18:15 Найти цитируемый пост)
Бог ты мой... Ну да на >= 2k будет работать точно, хотя скорее всего вообще на всей линейке NT будет работать, а может и на 98/Me или ты проверял, чтобы это утверждать?

Что я должен проверять, утверждаю что, про sysenter что ли? Так это в Intel Architecture Software Developer’s Manual написано, SYSENTER - Fast System Call, transfers to a flat protected mode kernel. И вообще, покажи где я говорил что что-то где-то не работает и про передачу параметров.
PM   Вверх
BUGOR
Дата 10.9.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Цитата

То, что юзермодные функции уже не используются.


А где в теме сказано, что нужно избавиться от вызова только лишь юзермодных апи? Там сказано от АПИ в целом.

Цитата

Твой вариант использует функции ntoskrnl, ты понимаешь эту тему как полный отказ от использования API. Если ты считаешь это приемлемым, почему ты считаешь что нельзя использовать Native API, которые вернут тебе номер вызываемой ф-ции, а предлагаешь, как я понял, вручную подставлять их значения перед sysenter. К чему эта половинчатось? Тогда уж полностью отказывайся от использования функций Windows и не юзай ntoskrnl.


Вызов функций через системные сервисы  не использует ни экспорт, ни импорт файлов. Предложенный тобою вариант:
ZwCreateKey(@hKey, KEY_ALL_ACCESS, @attr, 0, nil, REG_OPTION_NON_VOLATILE, nil);

Это вызов функции которая ЭКСПОРТИРУЕТСЯ из ntdll.dll.

Цитата

Только лишь о том, что sysenter - это команда перехода в Ring0, т.е. в ntoskrnl.exe


Ну так я же с этим не спорюsmile

Цитата

Что я должен проверять, утверждаю что, про sysenter что ли? Так это в Intel Architecture Software Developer’s Manual написано, SYSENTER - Fast System Call, transfers to a flat protected mode kernel. И вообще, покажи где я говорил что что-то где-то не работает и про передачу параметров


Заметь, я везде на ряду с sysenter(а он появился вроде только в 2k) упоминаю int 2Eh. Ты в своём посте написал:
Цитата

соответственно для WindowsXP/Windows 2000

Я так понял ты имел ввиду, что это актуально только для этих систем. Я с этим не спорю, т.к. на других не проверял, хотя ntdll.dll есть и в 98 и в Me.

Добавлено @ 17:12 
Ну всё, я допёр, что ты имеешь ввиду... Да, я вызываю API, но в обход импорта и экспорта файлов, я думал автор топика именно этого хочет добиться. 

Это сообщение отредактировал(а) BUGOR - 10.9.2006, 17:10


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
RideX
Дата 10.9.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 94
Регистрация: 8.9.2004

Репутация: 4
Всего: 7



BUGOR, ага, понятно smile Тогда, думаю, автору топа надо смотреть в сторону кроссплатформенных приложений, там, по идее, использование ф-ций API должно быть минимальным.
PM   Вверх
RA
Дата 10.9.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Цитата(Sunvas @  10.9.2006,  00:31 Найти цитируемый пост)
Как свести к минимуму использование апи функций в программе

 А что за нужда такая? 

PS:
Если ты хочешь скрыть таблицу импорта то есть другой способ .....
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.