bogrus Если ты компилил мой пример в неизменном виде, то у меня при DLL_PROCESS_ATTACH callback не вызывается(почему??), Olly нормально брякается на OEP, если я добавлю немножко кода в callback, например вызов API, то все вызывается, на OEP не брякается, т.е. все работает, я в недоумении. Вот так все работает: Код (Text): TlsCallback_0: ; DllHandle, Reason, Reserved cmp DWORD [esp + 4*2], DLL_PROCESS_ATTACH jne @F push 0 mov eax, [fs:30h] mov eax, [eax + 68h] mov ecx, szNotFound test eax, eax jz @L1 mov ecx, szFound @L1: push ecx cinvoke wsprintf, szBuff, format_string, eax push szBuff push 0 call [MessageBox] mov BYTE [_start], 6Ah @@: mov eax, 1 retn 4*3
На w2ksp4 вызывается(что под олей, что без)! я твой пример не изменял, ты можешь у себя вместо "mov BYTE [_start], 6Ah" сделать "mov BYTE [_start], 0", если сallback отработает значит получишь exception
Действительно, XP не хочет вызывать callback при DLL_PROCESS_ATTACH если нету user32.dll, а при DLL_PROCESS_DETACH вызывает всегда, тут одно из двух: или мы что-то намутили со структурой в __tls_used или это нормально... (w2k например без kernel32.dll тоже не вызывает, правда как при ATTACH так и DETACH)