Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Какой способ вызова winapi функций занимает меньше всего памяти?

  • Автор темы Автор темы seven_up
  • Дата начала Дата начала
1659968844931.png
 
давай сначала разберемся с тем что ты понимаешь о чем спрашиваешь . пример покажи ? что вызываешь в каком контексте. что то типа того смотрел ?
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
и что ? программисту пофигу на язык. нормальному. язык лишь синтаксис для выполнения задачи. какая разница какой там язык стоит в статье если там есть механизм взаимодействия
если так важно вот тред с с++
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
и что ? программисту пофигу на язык. нормальному. язык лишь синтаксис для выполнения задачи. какая разница какой там язык стоит в статье если там есть механизм взаимодействия
1659969710512.png
 
давай сначала разберемся с тем что ты понимаешь о чем спрашиваешь . пример покажи ? что вызываешь в каком контексте. что то типа того смотрел ?
Пожалуйста, авторизуйтесь для просмотра ссылки.
Обычный вызов:
инключ стандартной либы (если нужно) и вызов например FreeLibrary(hLibModule);

Через прототип + GetProcAddress
GetProcAddress(GetModuleHandleA("Kernel32.dll"), " FreeLibrary");

Еще слышал про хеширование и вызов по хешу, но знаю про это мало.

Что мне надо?
Знать наиболее оптимальный вариант вызова подобных функций из расчёта занимаемой памяти.
Т.е обычный вызов занимает столько то байт, через прототип столько то и так далее
 
это еще почитай
Пожалуйста, авторизуйтесь для просмотра ссылки.

Обычный вызов:
инключ стандартной либы (если нужно) и вызов например FreeLibrary(hLibModule);

Через прототип + GetProcAddress
GetProcAddress(GetModuleHandleA("Kernel32.dll"), " FreeLibrary");

Еще слышал про хеширование и вызов по хешу, но знаю про это мало.

Что мне надо?
Знать наиболее оптимальный вариант вызова подобных функций из расчёта занимаемой памяти.
Т.е обычный вызов занимает столько то байт, через прототип столько то и так далее
это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.
 
Последнее редактирование:
это еще почитай
Пожалуйста, авторизуйтесь для просмотра ссылки.


это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.
Второй вариант данный момент использую, 9 винапи функций, не использует никаких библиотек вроде <Windows.h>.
Прога из себя представляет инжектор и отправку http запроса с получением результата.
Но вот вес 4кб, минимум что смог сделать :(
 
На твой вопрос невозможно ответить, потому что твой вопрос либо поставлен нерпавильно, либо ты сам не понимаешь что пишешь.
Про какую память ты пишешь? Про размер кода? Про размер Кучи или стека во время вызова?
Вызов винапишной функции это по сути разыменовывание указателя из таблицы импорта и вызов соответствующего кода по полученному адресу с передачей параметров в случае динамической линковки.
Либо в ручную загрузка необходимой либы и получение адреса нужной функции.(Конечно это на пару десятвов байт займет больше места в коде и стеке)
Что тут можно оптимизировать?
Если конечно беды с бошкой можно вызывать более низкоуревневые апи, наприер вместо Sleep вызывать SleepEx.
Если совсем все плохо с бошкой можем вызвать NtDelayExecution из Ntdll.
Если мы лежим в дурке можем сами сделать системное прерывание 80h с eax=34h.
 
Последнее редактирование:
На твой вопрос невозможно ответить, потому что твой вопрос либо поставлен нерпавильно, либо ты сам не понимаешь что пишешь.
Про какую память ты пишешь? Про размер кода? Про размер Кучи или стека во время вызова?
Вызов винапишной функции это по сути разыменовывание указателя из таблицы импорта и вызов соответствующего кода по полученному адресу с передачей параметров в случае динамической линковки.
Либо в ручную загрузка необходимой либы и получение адреса нужной функции.(Конечно это на пару десятвов байт займет больше места в коде и стеке)
Что тут можно оптимизировать?
Если конечно беды с бошкой можно вызывать более низкоуревневые апи, наприер вместо Sleep вызывать SleepEx.
Если совсем все плохо с бошкой можем вызвать NtDelayExecution из Ntdll.
Если мы лежим в дурке можем сами сделать системное прерывание 80h с eax=34h.
Под весом и памятью я имел ввиду уменьшение занимаемого места на диске, ну типо вес проги такой-то, этот вес формируется исходя из кода, компилятора и тд.
Я же хочу оптимизировать код, а точнее вызовы winapi с целью уменьшение занимаемого веса.
Надеюсь ты правильно меня понял.

За пример спасибо, я в принципе думал насчёт спуска ближе к машинному коду, он явно занимает меньше места.
 
За пример спасибо, я в принципе думал насчёт спуска ближе к машинному коду, он явно занимает меньше места.
Как раз нет, чем грубже ты спускаешьcя к прикладному уровню, тем больше у тебя действий. Можешь сам посмотреть через сколько библиотек редиректится вызов того же Sleep и сколько кода выполняется от вызова Sleep до системного прерывания. В то время когда мы можем выполнгить всего 2 инструкции:
1659972460860.png
 
Последнее редактирование:
это еще почитай
Пожалуйста, авторизуйтесь для просмотра ссылки.


это тонкая олтимизация. через какое то время сам проверю и отпишу . думаю, второй аккуратнее работает с памятью, но надо потестить. будет время гляну.
используй loadlibrary брат мой и будет тебе счастье.
Под весом и памятью я имел ввиду уменьшение занимаемого места на диске, ну типо вес проги такой-то, этот вес формируется исходя из кода, компилятора и тд.
Я же хочу оптимизировать код, а точнее вызовы winapi с целью уменьшение занимаемого веса.
Надеюсь ты правильно меня понял.

За пример спасибо, я в принципе думал насчёт спуска ближе к машинному коду, он явно занимает меньше места.
а ну я понял. не такой фигней не страдал никогда . под мои задачи во главе угла всегда была стабильность а не размер ,)
 
Одно другому не мешает)
ну нет. в большинстве случаев, оптимизация всегда выбор между чем то одним. или ты выкручиваешь в одну сторону или в другую или в третью. но никак не во все сразу.
мы говорим про стратегию . а не причесывание кода )
 
ну нет. в большинстве случаев, оптимизация всегда выбор между чем то одним. или ты выкручиваешь в одну сторону или в другую или в третью. но никак не во все сразу.
мы говорим про стратегию . а не причесывание кода )
Ну в моём случае потеря нескольких десятков миллисекунд не проблема, программа то маленькая
 
Назад
Сверху Снизу