169 похожих чатов

Интересно, нет ли какого-то способа получить из dll не адрес

самой метки, а адрес со смещением?

54 ответов

138 просмотров

речь про getprocaddress?

Чего-чего? Начнём с того, что в DLL нет никаких меток))

Стикер

The Bird of Hermes- Автор вопроса
КТ315
Чего-чего? Начнём с того, что в DLL нет никаких ме...

Ну типа беру я принтф, а хочу принтф+2 получить

The Bird of Hermes- Автор вопроса
КТ315
mov eax, dword[printf] add eax, 2

Чтобы сразу достать адрес из dll printf+2

The Bird of Hermes
Чтобы сразу достать адрес из dll printf+2

push printf_str push dll_handle call dword[GetProcAddress] add eax, 2

The Bird of Hermes- Автор вопроса
КТ315
push printf_str push dll_handle call dword[GetProc...

А через таблицу импорта?

The Bird of Hermes
А через таблицу импорта?

Ну, находишь таблицу импорта, цикл по именам функций, когда находишь - получаешь RVA из таблицы адресов, и получаешь адрес.

The Bird of Hermes- Автор вопроса
КТ315
Ну, находишь таблицу импорта, цикл по именам функц...

Блин, я говорю о той штуке, которая через library/import

The Bird of Hermes
Блин, я говорю о той штуке, которая через library/...

Это макрос, какое отношение он к DLL имеет?

The Bird of Hermes- Автор вопроса
КТ315
Это макрос, какое отношение он к DLL имеет?

Ну они же из dll импортят функции

The Bird of Hermes
Ну они же из dll импортят функции

Импортирует функцию загрузчик. А макрос просто указывает адрес, куда загрузчик должен положить адрес на функцию.

The Bird of Hermes- Автор вопроса
КТ315
Импортирует функцию загрузчик. А макрос просто ука...

Хорошо, я могу как-то сказать загрузчику, чтобы он загрузил этот адрес сразу увеличенным на 8 например

The Bird of Hermes
Хорошо, я могу как-то сказать загрузчику, чтобы он...

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

The Bird of Hermes
TLS?

Да. Или пропатчить библиотеку, но с системной не прокатит.

The Bird of Hermes
Что это)

ThreadLocalStorage, (одна из фишек - ) функция которую загрузчик будет вызывать каждый раз при создании\закрытии потока.

The Bird of Hermes- Автор вопроса
КТ315
ThreadLocalStorage, (одна из фишек - ) функция кот...

Типа я могу такую функцию объявить и он её исполнит ещё до мейна?

The Bird of Hermes
Что это)

штука через fs работающая в винде и маке

The Bird of Hermes- Автор вопроса

Ээээ ты что делаешь, это незаконно

The Bird of Hermes
Типа я могу такую функцию объявить и он её исполни...

если надо прям до entry запустить, то подсели к проге ещё одну либу с dllentry, она раньше чем основной вызовется

Mixail Frolov
если надо прям до entry запустить, то подсели к пр...

Зачем, если можно просто подселить к программе ещё одну программу, и попросить пользователя её запустить перед запуском основной?

Alexey
Mov [eax+2], dword [printf]

Так можно де , транзистор?

КТ315
Зачем, если можно просто подселить к программе ещё...

dll проще и у антивируса лишних дум на твою прогу не будет

Mixail Frolov
dll проще и у антивируса лишних дум на твою прогу ...

😁 У антивируса по-умолчанию будет дума, если у программы нет CRTStartup. И нет, DLL не проще. DLL это аж целых минимум строк 20, а TLS - обычная структурка на 5-7 строк.

Mixail Frolov
dll проще и у антивируса лишних дум на твою прогу ...

+ потом можно в либу ещё что-то добавить

Mixail Frolov
+ потом можно в либу ещё что-то добавить

Как и в TLS... Вредные советы раздаёшь)

КТ315
Как и в TLS... Вредные советы раздаёшь)

я придерживаюсь подхода к разработке по с использованием большого числа модулей, и по этому библиотека для меня(в данном подходе) это чуть ли не база

The Bird of Hermes- Автор вопроса
Mixail Frolov
я придерживаюсь подхода к разработке по с использо...

Ну хз, динамическая библиотека это по сути прога, которая постоянно висит в памяти

The Bird of Hermes
Ну хз, динамическая библиотека это по сути прога, ...

В импорт и экспорт придётся прописать, таскать с собой постоянно, лишний код тупо, когда можно 5 строк на TLS потратить, и уже есть функция, которая будет запускаться каждый раз до создания потока (в том числе, перед запуском главного кода).

The Bird of Hermes- Автор вопроса
The Bird of Hermes
А где про это TLS почитать можно

На MSDN, естественно. Но мне не очень нравится там формат описания, поэтому вот статья на WASM: https://wasm.in/blogs/tls-iznutri.453/ А вот как обьявлять на FASM: .tls_callback: ; Вызывается каждый раз при создании потока ret 4*3 ; Аргументы как у DllMain data 9 dd 0 dd 0 dd .tls_index dd .tls_callbacks dd 0 dd 0 .tls_index dd 0 .tls_callbacks dd .tls_callback, 0 end data

КТ315
На MSDN, естественно. Но мне не очень нравится там...

В .tls_callbacks можешь сколько угодно добавить функций.

The Bird of Hermes- Автор вопроса
КТ315
На MSDN, естественно. Но мне не очень нравится там...

А в документации fasm описания нет? А то меня напрягает data 9

The Bird of Hermes- Автор вопроса
КТ315
Не видел.

data начинает определение специальных данных PE, за директивой должен следоваь один из идентификаторов данных (export, import, resource или fixups) или номер записи данных в заголовке PE. Данные должны быть определены на следующих строках и заканчиваться директивой end data. Если выбрано определение настроек адресов, они генерируются автоматически, и никаких данных определять больше не требуется. То же самое относится к ресурсам, если за идентификатором resourse следует оператор from и имя файла в кавычках - в этом случае данные берутся из этого файла ресурсов.

Mixail Frolov
ох какая жуть

Сразу видно, что с TLS никогда не работал.

The Bird of Hermes- Автор вопроса
КТ315
На MSDN, естественно. Но мне не очень нравится там...

О, так он может много калбеков вызывать

The Bird of Hermes- Автор вопроса
КТ315
Да.

А на х64 правила для ret меняются?

КТ315
Сразу видно, что с TLS никогда не работал.

ну в винде да, не работал, но по мне это уже перебор какой-то

Mixail Frolov
ну в винде да, не работал, но по мне это уже переб...

Перебор это писать DLL, чтобы просто свой PE поправить в памяти до запуска главного кода 😁 Хотя, как s54820 выше написал - лучше в main и править, тут даже TLS не нужен, но раз уж хочется - то лучше TLS, библиотека перебор.

The Bird of Hermes- Автор вопроса
КТ315
Да.

А эта штука вызывается уже после импорта библиотек или до?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта