![]() |
Модераторы: 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 |
||||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
На компах, куда я вынужден сливать свои программы некоторые АПИ функции отключены!! Я не знаю какие именно. Это сделано из соображений безопасности, но у меня из-за этого даже простой вызов Findwindow полностью глючит программу. Я уже очень долго мирюсь с этим... Просто надоело - пытаюсь найти хоть какой-нить выход. ЗЫ ну подскажи.. (хотя это мне это нужно всего лишь из-за любознательности). -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
скорее всего, дело в отсутствии административных прав у пользователя. даже если что-то и ограничивает использование "опасных" функций, есть большие сомнения что FindWindow попала в их ряды. опять же, ограничение этих самых "опасных" функций состоит лишь в том, что при их использовании будет возвращаться ошибка. только и всего. а такого рода явления, скорее всего, есть следствие недостаточного контроля ошибок.
выход - нормально исследовать ситуацию. ограничения прав, стоящее ПО, итд итп. |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Ошибки я хорошо контролирую. Даже пустая форма с кнопочкой, в Onclick которой написана данная функция страшно пугает ошибками памяти. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
так что за ПО то там стоит? описываемая тобой ситуевина отдает какой-то дурно пахнущей мистикой.
![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
ПО - стандартное. Есть касперский, но он не насторен чему-то вредить.... Мне кажется, что АПИ функции отключены путем перекомпилирования системных библиотек.. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
ага, точно - windows ж open source! ![]() возьми, например, avz и просканируй систему, а не рассказывай "байки из склепа". ![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Путем тупого дизасемблирования и правки ассемблерного кода! Все делается из под доса, так что винда ничего не видит и не знает. Даж сам когда-то видел как такое делается... Это не байки, это горькота жизни. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
||||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Синтаксис языка (по крайней мере Delphi) использует WinAPI функции ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
ты когда-нибудь пробовал? собрать рабочий модуль из дизассемблированного листинга - весьма нетривиальная задача, если речь не идет о программе типа "hello world". задачи такого рода(изменение поведения функций) решаются перехватом. дизасм в таких случаях помогает, а не решает. |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Повеселился - процедуры же не работают! Я же не говорю, чтобы поведение функций изменить! Можно из просто-на-просто запортить изменяя je на jne. Есть более продвинутые программы (платные), которые позволяют тем, кто сечет в ассемблере делать другие навороченые вещи. Одна такая программа кажись называется (точно не помню) "*** DrHack" -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
процесс изменения hex-редактором кода системных библиотек, да еще и так, что они начинают сыпать ошибками, называется не "перекомпилирование системных библиотек", а идиотизм. за такое руки надо отрывать.
бороться с этим не надо, надо просто либо систему переставлять, либо взять основные системные dll из винды той же сборки и записать поверх испорченных. |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Интересно, как ты это сделаешь на системе НТФС да еще и в винде? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
||||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Или из доса.
|
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
В нтфс из под доса. Я знаю всего одну програму, которая может писать в НТФС из под доса. Но для этого мне надо еще и с чего-то загрузиться, а возможности у меня нет. ЗЫ назови хоть одну толковую программу, которая могла бы писать в НТФС из под доса. А без диска никак! Там сидюков нет! Давайте не будем отклоняться от темы! -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
||||
|
||||
Mr.Floppy |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 3.7.2006 Где: Москва Репутация: 1 Всего: 1 |
Писать свои драйвера для низкоуровневого доступа к железу и обращаться к ним. Короче - половина операционки ![]() |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
||||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Дану! А у меня че-то не пишут. Грузился када-то с дискеты 98, грузил волков и нортон - НТФС даже не видели, не то, чтоб даже читали! -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
![]() ![]() ![]()
О! Первая умная мысль за все время конференции. Из этого следуют вопросы: а могут ли быть конфликты из-за этого? Вызовы процедур из таких библиотек можно ли перехватить? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
перехватить можно все. для того, чтобы использовались "свои" dll, их нужно динамически подгружать, причем с указанием пути(например: LoadLibrary(".\kernel32.dll")). во всех остальных случаях будут использоваться библиотеки системы... хотя, можно и со статическим импортом повеселиться - законных способов сделать такое не припомню, а руками примерно так: переименовать kernel32.dll в krnl32.dll и в хекс-редакторе заменить строку(и) "KERNEL32.DLL" на ".\KRNL32.DLL"... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |