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

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

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

54 ответов

130 просмотров

речь про 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
Да.

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта