Сейчас на форуме: tyns777, localhost1, vsv1, asfa (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Проблемы с 64bit proxy-dll |
Посл.ответ | Сообщение |
|
Создано: 24 февраля 2020 02:30 · Личное сообщение · #1 Хочу переписать простую прокси-дллку с 32 бит, и почему-то она криво работает на 64 бит. Не получается сделать ни на Си, ни на Масм, приложение тупо падает. Это version.dll , 32 битная версия такая: 64 битная (масм) 64 битная (Си) Добавлено спустя 4 минуты Или может есть тулзы какие-то готовые. Все, что нашел - заточено под 32 бита. |
|
Создано: 24 февраля 2020 03:23 · Личное сообщение · #2 |
|
Создано: 24 февраля 2020 03:33 · Личное сообщение · #3 SReg пишет: либо подрубить масм в студии Я нашел другой вариант, где юзается масм в х64 , но или студия глючит, или я..пишет ошибку. Как его там включить? Студия 2015. Добавляю новый асм файл в проект, там код вида Code:
В Си пишу Code:
Project->Build depend..->Build customization выбираю MASM , но получаю ошибку , что линкер не видит этот RunASM |
|
Создано: 24 февраля 2020 03:40 · Личное сообщение · #4 |
|
Создано: 24 февраля 2020 04:19 · Поправил: Storage · Личное сообщение · #5 Code:
DllMain поставьте как точку входа Компоновщик - > Дополнительно - >Точка входа Укажите импорт явно в том же компоновщике и используйте DEF файл телега https://t.me/VIRTEAM JID: virteamplus@sj.ms |
|
Создано: 24 февраля 2020 08:59 · Личное сообщение · #6 |
|
Создано: 24 февраля 2020 11:03 · Личное сообщение · #7 morgot, делал по этой инструкции http://lallouslab.net/2016/01/11/introduction-to-writing-x64-assembly-in-visual-studio/ проблем не было (студии 2015 и 2019). r_e пишет: Отличный способ отхватить дедлок - использовать LoadLibrary в DllMain Можно пояснить почему? | Сообщение посчитали полезным: morgot |
|
Создано: 24 февраля 2020 11:45 · Поправил: cppasm · Личное сообщение · #8 Потому что MSDN. The entry-point function should perform only simple initialization or termination tasks. It must not call the LoadLibrary or LoadLibraryEx function (or a function that calls these functions), because this may create dependency loops in the DLL load order. This can result in a DLL being used before the system has executed its initialization code. Similarly, the entry-point function must not call the FreeLibrary function (or a function that calls FreeLibrary) during process termination, because this can result in a DLL being used after the system has executed its termination code. |
|
Создано: 24 февраля 2020 13:33 · Личное сообщение · #9 |
|
Создано: 24 февраля 2020 13:43 · Личное сообщение · #10 |
|
Создано: 24 февраля 2020 14:18 · Личное сообщение · #11 Спасибо всем. Я вроде указывал в студии masm building, но не собирало и все. Переделал еще раз с нуля, по инструкции - и заработало. Мистика. Или может, я указывал этот масм в настройках win32 проекта, а компилировал 64 битный? Может такое быть или этот Masm добавляется сразу в весь solution? Почему вообще не сделали его поддержку по дефолту? r_e пишет: Отличный способ отхватить дедлок - использовать LoadLibrary в DllMain. Когда-то на васме обсуждали эту тему, как все таки правильно? Создавать поток в DllMain тоже не советуют. Ну вот когда есть дллка, которая должна что-то там пропатчить и т.д. difexacaw пишет: Нужно послать APC Т.е. вместо потока или явного вызова LoadLibrary нужно вызвать QueueUserApc ,передав адрес процедуры, где идет основная работа? Или что имелось ввиду? Alchemistry пишет: вписал путь к реальной длл Как и куда вписывать? |
|
Создано: 24 февраля 2020 14:35 · Личное сообщение · #12 morgot > Создавать поток в DllMain тоже не советуют. Создавать потоки в dll.EP можно. Когда поток запустится он войдёт в ожидание в загрузчике, пока текущий поток(который выполняет dll.EP) не покинет загрузчик, затем поток выйдет из ожидания и продолжит выполнять загрузчик. Если выполнить при этом в dll.EP синхронизацию с новым потоком, то возникнет деадлок. > Т.е. вместо потока или явного вызова LoadLibrary нужно вызвать QueueUserApc Да, разница в синхронизации такой загрузки. Придётся обождать через туже APC запуск потока, а поэтому для такой синхронной загрузки во втором потоке нет смысла. Это нужно обычно для инжектов, когда в произвольный момент времени нужно подгрузиться. ----- vx | Сообщение посчитали полезным: morgot |
|
Создано: 24 февраля 2020 16:00 · Поправил: Alchemistry · Личное сообщение · #13 morgot сюда #pragma comment(linker, "/export:VerQueryValueW=version.VerQueryValueW") на пример https://github.com/Panupong9844/metasploit-framework/blob/eb11a5993a88d49a11039c454b109ab64b9a8a81/data/templates/src/pe/dll_gdiplus/template.h хоть с локалхоста задай | Сообщение посчитали полезным: morgot |
|
Создано: 24 февраля 2020 16:03 · Поправил: bartolomeo · Личное сообщение · #14 код FASM - прокси 64х для d3d9.dll 2f37_24.02.2020_EXELAB.rU.tgz - d3d9.asm | Сообщение посчитали полезным: morgot |
|
Создано: 24 февраля 2020 21:24 · Личное сообщение · #15 Возвращаясь к длл, написанной чисто на Масм64. Когда я сравнил ее с рабочим 64 битным вариантом, то нашел ошибку. Масм почему-то генерит с такого кода Code:
вот такой Code:
Если вручную занопить пролог (enter , sub rsp ), то все работает. Но - откуда это берется и можно ли это отключить? Ведь в студии тот же масм такое не генерит. |
|
Создано: 24 февраля 2020 21:34 · Личное сообщение · #16 option prologue ? Добавлено спустя 9 минут Пример наглядный тебе с синхроном apc: 25c0_24.02.2020_EXELAB.rU.tgz - L.7z ----- vx |
|
Создано: 24 февраля 2020 21:45 · Личное сообщение · #17 |
|
Создано: 24 февраля 2020 22:11 · Личное сообщение · #18 |
|
Создано: 24 февраля 2020 22:16 · Личное сообщение · #19 |
|
Создано: 24 февраля 2020 22:31 · Личное сообщение · #20 |
|
Создано: 24 февраля 2020 23:51 · Поправил: difexacaw · Личное сообщение · #21 |
eXeL@B —› Вопросы новичков —› Проблемы с 64bit proxy-dll |