Сейчас на форуме: laslo, UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Любителям Delphi - Native API и т.д. |
Посл.ответ | Сообщение |
|
Создано: 06 сентября 2007 08:42 · Личное сообщение · #1 Вот случайно наткнулся: Jedi API Library sourceforge.net/projects/jedi-apilib/ сам ещё не юзал, но кое-что интересное там всё-таки есть:
|
|
Создано: 06 сентября 2007 10:07 · Личное сообщение · #2 |
|
Создано: 06 сентября 2007 11:07 · Личное сообщение · #3 |
|
Создано: 06 сентября 2007 11:41 · Личное сообщение · #4 Этот сборник вижу первый раз, хотя неполный, ради интереса посмотрел DbgUiConnectToDbg и обнаружил, что она типа недокументирована ещё. Нормальный сборник, особенно строки описания к ntstatus, экономит время. А про Zw как Zero warranty аффтар отжог. ----- Security through obscurity is just an illusion |
|
Создано: 09 сентября 2007 06:39 · Личное сообщение · #5 Юзал как-то Setup API модуль из этой либы. Т.к. плохо знаю Delphi, изначально модуль писался и отлаживался на С++, потом переводил на паскаль. Прототипы функций начал писать сам, но от лени нагуглил это. Собралось, но падало, поскольку руки у меня кривые. Тогда доделал свои - всё ок. Сравнил - в нескольких прототипах передача по ссылке\значению перепутано. С тех пор подобные вещи делаю сам (косяков не меньше, но не так обидно =) |
|
Создано: 09 сентября 2007 10:00 · Личное сообщение · #6 |
|
Создано: 24 ноября 2011 18:42 · Личное сообщение · #7 Сори что апаю древний топ. Просто хочу предупредить, если кто захочет это заюзать - не стоит. Попробовал. Чтобы сделать банальное перечисление модулей в LDR_DATA пришлось в нескольких местах код пофиксить, хоть там и стоит комент что проверено через WinDbg. Ну а дальше больше, динамический вызов апи не проверяет блокировку пеба, а ведь апи то нативные и он вполне может быть залочен, в общем лучше самому сконвертить для своих дел нужные структуры. ----- Yann Tiersen best and do not fuck |
|
Создано: 24 ноября 2011 18:48 · Поправил: Clerk · Личное сообщение · #8 PE_Kill > банальное перечисление модулей в LDR_DATA Банальные LdrEnumerateLoadedModules(), LdrQueryProcessModuleInformation(), RtlQueryProcessDebugInformation(); экспортируемо, совместимо и синхронно Эмсирем снова в деле, хотя он также любил патчи =) Одно тока не понятно - дельфи конченый конпилятор и суёт стока всякого дерьма, что не понятно зачем нейтив, если есть кернел32. Хотя если приложение нейтивное(SUBSYSTEM_NATIVE), то думаю на дельфяк собирать такое это маразм, как и драйвера.. |
|
Создано: 24 ноября 2011 19:39 · Личное сообщение · #9 |
|
Создано: 24 ноября 2011 19:52 · Поправил: PE_Kill · Личное сообщение · #10 Clerk пишет: Банальные LdrEnumerateLoadedModules(), LdrQueryProcessModuleInformation(), RtlQueryProcessDebugInformation(); экспортируемо, совместимо и синхронно Мне нужно манипулировать данными, причем без API Clerk пишет: Одно тока не понятно - дельфи конченый конпилятор и суёт стока всякого дерьма, что не понятно зачем нейтив... За пределами VX тоже есть жизнь Ну и топ про делфи библиотека, причем здесь экспортируемые апи, компилятор и прочее? ЗЫ. Кстати клерк, ты же ядро хорошо знаешь, что такое поле TimeSlip в структуре KUSER_SHARED_DATA? ----- Yann Tiersen best and do not fuck |
|
Создано: 24 ноября 2011 20:51 · Личное сообщение · #11 Maximus Я конечно дельфи не юзал(не ну пробовал конечно давным давно), так что не могу предположить что будет в бинаре после компиляции того кода из ксакепа. Но думаю автор там сильно преувеличивает - он показал только одну процедуру, кроме неё по идеи должна быть куча мусора. Если он такой хороший компилятор, то почему такие отвратительные приложения выходят(можно не отвечать, просто мысли вслух).. PE_Kill > такое поле TimeSlip в структуре KUSER_SHARED_DATA Не знаю что это, но судя по хидеру какаято отладочная переменная. Непосредственно в ядре этого смещения нигде нет, сейчас попробовал найти и не нашёл(нтос 5.1). В сурсах(\ntos\kd\) есть функционал типо KdUpdateTimeSlipEvent(), но там апдейтятся внутренние переменные и эта вроде как не затрагивается. > Мне нужно манипулировать данными, причем без API Вы же сами утверждаете постоянно что лезть в андок и во всякие внутренние структуры зло. Даже я по этим спискам не лажу, максимум это найти описатель через LdrFindEntryForAddress() и флаг там поправить. Хотя не понятно зачем это делать(в смысле енумить описатели в базе), если есть для етого рантайм хороший. В загрузчик вообще не следует лазить асинхронно, должна быть хотябы синхронизация на LdrpLoaderLock. Чисто ради интереса спрошу, зачем вам такое делать ? > За пределами VX тоже есть жизнь Нету |
|
Создано: 24 ноября 2011 21:20 · Личное сообщение · #12 Clerk пишет: кроме неё по идеи должна быть куча мусора Нет, при таком подходе не будет. Clerk пишет: почему такие отвратительные приложения выходят Потому что пихает кучу рантайма в PE файл. Собственно студия пихает не меньше, только рантайм у нее внешний, а с MFC так наверное и больше пихает чем делфи и код в десятки раз страшнее. Clerk пишет: Вы же сами утверждаете постоянно что лезть в андок и во всякие внутренние структуры зло. Есть задачи, которые по другому решить нельзя. Clerk пишет: Даже я по этим спискам не лажу, максимум это найти описатель через LdrFindEntryForAddress() и флаг там поправить. К сожалению код поиска API в ntdll (а ее базу тоже как то получить надо) занимает слишком много места, которое и так ограничено. Clerk пишет: В загрузчик вообще не следует лазить асинхронно, должна быть хотябы синхронизация на LdrpLoaderLock. Для ntdll, да еще и в основной нити на EP можно и не лочить. Clerk пишет: Чисто ради интереса спрошу, зачем вам такое делать ? Ммм, если в контексте Delphi, то просто отладка кода для последующего переноса на asm, если глобально, то... ммм, для загрузчика PE файлов. ----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: MasterSoft |
|
Создано: 24 ноября 2011 22:21 · Личное сообщение · #13 PE_Kill > К сожалению код поиска API в ntdll (а ее базу тоже как то получить надо) занимает слишком много места, которое и так ограничено. Точна, я же базу так и получаю - второй описатель модуля. Хотя можно както так(stdcall, на входе ссылка в образ проекции, например PEB.LoaderLock): Code:
или так: Code:
> для загрузчика PE файлов. Чтото последнее время все начали лодеры кодить.. я бы заюзал патч(в релоцированной проекции, хотябы в копии нтдлл) |
|
Создано: 24 ноября 2011 22:34 · Личное сообщение · #14 |
|
Создано: 24 ноября 2011 22:40 · Личное сообщение · #15 |
|
Создано: 24 ноября 2011 23:09 · Личное сообщение · #16 |
|
Создано: 25 ноября 2011 00:44 · Личное сообщение · #17 Дельфи хороша тем, что там можно быстро и с минимальными затратами собрать Вынь32 приложение. (фактически минимально достаточно dcc32.exe, dccXX.dll, system.dcu, windows.dcu, messages.dcu и sysinit.dcu - от версии компилятора зависит). Если есть время и желание пооптимизировать - можно и ёйный rtl (вы/до)пилить, но сами ж понимаете, оно затачивалось под базы данных, а не под супер тонкие апи приложения. |
|
Создано: 25 ноября 2011 01:15 · Личное сообщение · #18 |
|
Создано: 25 ноября 2011 07:24 · Личное сообщение · #19 |
|
Создано: 25 ноября 2011 08:29 · Личное сообщение · #20 PE_Kill > VirtualAlloc(**, PAGE_EXECUTE**) Это не то. Там две проверки - вначале определяется возможность исполнить код за пределами модулей и включается проверка памяти, это через NtQueryInformationProcess. Должен быть флаг MEM_EXECUTE_OPTION_EXECUTE_DISPATCH_ENABLE, его нельзя повторно установить в юзермоде. Если он сброшен начинает неприятная проверка ссылки на сех - принадлежность описанным модулям и тип памяти, сех должен быть не в приватной памяти и не в проекции не файловой секции, он должен быть только в файловой проекции(MEM_IMAGE). Иначе сех работать не будет. Это както проблемно обойти весьма. |
|
Создано: 25 ноября 2011 11:05 · Личное сообщение · #21 |
|
Создано: 25 ноября 2011 20:33 · Личное сообщение · #22 PE_Kill > Как такая ситуация воспроизводится, в настройках винды? RtlDispatchException(). > Если ограничение только на SEH, тот тут без проблем, пейлоад нормально прогружен и после инициализации находится по своим адресам. Сех неотъемлемая часть любого модуля. В этом случае данный функционал не может быть обработан. Стоит сказать что решения два и они вам не понравятся, но иначе тока патч тех двух апи. Но это сами понимаете никуда не годно. |
|
Создано: 26 ноября 2011 08:23 · Личное сообщение · #23 Clerk пишет: RtlDispatchException(). Я имел ввиду, при каких условиях в винде включается режим Clerk пишет: MEM_EXECUTE_OPTION_EXECUTE_DISPATCH_ENABLE Clerk пишет: Сех неотъемлемая часть любого модуля. В этом случае данный функционал не может быть обработан. Может, потому что пейлоад внутри модуля, я об этом уже писал. ----- Yann Tiersen best and do not fuck |
|
Создано: 26 ноября 2011 10:20 · Поправил: Clerk · Личное сообщение · #24 PE_Kill > Я имел ввиду, при каких условиях в винде включается режим Включается в бут.ини параметром "NOEXECUTE=OPTOUT"(USD.NXSupportPolicy). Тогда флаги не перманентные и можно далее их изменить, в противном случае флаги перманентные и загрузчик запрещает их изменение. > пейлоад внутри модуля Тогда будет работать. Обычно при загрузке из памяти такого нет. |
eXeL@B —› Программирование —› Любителям Delphi - Native API и т.д. |