Несколько месяцев назад я создал тему по поводу runpe инжекта x32->x64 майнера xmrig. Решение в итоге оказалось очень нестабильным (из-за отсутствия работы с релоками и tls callback). Вот только что добавил поддержку релоков, протестил на калькуляторе (заинжектил 64-битный calc.exe в 64-битный Process Hacker) и всё сработало на ура. Но ни у calc.exe, ни у process hacker'а не было tls callback'ов. Так вот вопрос: как вызвать эти зло*бучие колбэки? В который раз загуглив доку в мсдн по pe формату я посмотрел что колбэк имеет следующий формат:
Как вызвать его в другом процессе через RtlCreateUserThread?
Немного отходя от темы, хочу упомянуть, что большинство кодеров .NET Miner'ов так и вовсе не заморачиваются ни с колбэками, ни с релоками, тупо анмап+запись+NtSetContextThread. И вроде как и никто не жалуется особо. Как пример можно рассмотреть майнеры от UnamSanctam на github.
C:
typedef VOID
(NTAPI *PIMAGE_TLS_CALLBACK) (
PVOID DllHandle,
DWORD Reason,
PVOID Reserved
);
Немного отходя от темы, хочу упомянуть, что большинство кодеров .NET Miner'ов так и вовсе не заморачиваются ни с колбэками, ни с релоками, тупо анмап+запись+NtSetContextThread. И вроде как и никто не жалуется особо. Как пример можно рассмотреть майнеры от UnamSanctam на github.