Есть код: Код (Text): .386 .model flat, stdcall CodeSize = @Endcode - @StartCode .code start: mov esi, offset @StartCode sub esp, CodeSize mov ecx, CodeSize mov edi, esp cld rep movsb mov ebp, esp call ebp add esp, CodeSize retn @StartCode: mov ebp, 07C801D77h ; Адрес LoadLibrary (для примера hardcoded) push offset libsz call ebp ret @Endcode: libsz db "advapi32.dll",0 end start LoadLibrary врзвращает ноль. Копирую код уже не в стек, а в динамич. память, выделенную перед этим через LocalAlloc - та же история. Почему?
xh4ck Для варианта со стеком. Добавь три nop'а между ret и @Endcode: и будет тебе счастье. А на досуге подумай почему указатель стека лучше менять кратно четырем. Для варианта с LocalAlloc: покажи код.
Вот рабочий код (ессно для XPSP2) копируй куда надо. возвращает 77DC0000h Код (Text): E8 09000000 call $+0Eh 61 64 76 61 70 69 33 32 00 db "advapi32",0 BD 771D807C mov ebp, 7C801D77h ; kernel32.LoadLibraryA FFD5 call ebp