R0 CREW

DBI (PIN) как за инжектить с помощью LoadLibrary?

Всем привет.
Есть модуль для PIN, который выглядит как обычная (почти) dll-ка. Согласно документации инжект в АП процесса производится с помощью своей утилиты pin.exe примерно так:

pin.exe -pid 1234 -t \path\to\module.dll

Вопрос в следующем.
Как сделать инжект вручную, с помощью обычной LoadLibrary() ?
Все попытки загрузить подобным образом dll приводят к исключению в PIN_Init(argc, argv)…

Добрый вечер, ну так вы должны понимать, что pin развёртывается в целевом процессе, а утилита pin.exe собственно и выполняет это развёртывание, если мне не изменяет память pin.exe внедряла свою библиотеку в процесс, не уверен что этот процесс инициализации задокументирован, но думаю зареверсить относительно легко (если сильно припрёт). Хотя задача ваша очень странно поставлена, что вы хотите сделать? возможно решить можно по другому

Никакой реверс не поможет, т.к. PIN это не просто инжект, а своего рода простава между ОС и приложением. А в DLL не содержит статически слинкованного полного комплекта для выполнения “работы” и имеет множество обращений к API которое и содержится в PIN.EXE и окружении. DLL это как плагин и вы хотите его использовать без материнского (базового) приложения.

Насколько я понял всю работу делает не pin.exe, а pinvm.dll и библиотека разумеется динамически слинкована с ней. А задача проста - подгрузить всё это дело в виндовый сервис. Но во-первых, pin почему то не может приаттачится к процессу от пользователя SYSTEM, а во-вторых, сервис при фаззинге будет не однократно падать, и было бы очень изящным решением сделать подгрузку моей библиотеки автоматически.

OKOB откуда инфа? Если верить презентации то pinvm вполне самодостаточная либа, а сам pin.exe используется только для инициализации и передачи конфигов. Не исключено конечно что там есть какой-то IPC, сам не реверсил

s0i37 во первых причиной того, что не удалось приаттачить pin может быть не достаток прав, или же в случае инжекта по средствам set context, apc, отсутствие треда в сигнальном состоянии, легко это проверить отладчиком. Во вторых, не помню точно ключ реестра (см. утилиту gflags), но можно прописать pin как отладчик, чтобы на каждом запуске вашего сервиса загрузчик запускал pin.exe с необходимыми параметрами, google it