No entiendo, no se si es por la manera de compilar pero asi funciona, le he puesto una string antes de las direcciones de MSn y funciona, habia visto que habia un return raro al cargarse la direccion.
format PE GUI 4.0
include 'win32ax.inc'
invoke LocalAlloc, LPTR, 1000
mov ebx, eax
invoke CoInitialize,0
invoke CoCreateInstance,CLSID_Messenger,NULL,\
0x4,\
IID_IMessenger,ebx
struct GUID
Data1 dd ?
Data2 dw ?
Data3 dw ?
Data4 rb 8
ends
yoseba db '0000000000000000000000000000000000000000', 0
CLSID_Messenger GUID 0xb69003b3,0xc55e,0x4b48,<0x83,0x6c,0xbc,0x59,0x46,0xfc,0x3b,0x28>
IID_IMessenger GUID 0xd50c3186,0x0f89,0x48f8,<0xb2,0x04,0x36,0x04,0x62,0x9d,0xee,0x10>
data import
library kernel32, 'kernel32.dll',\
ole32, 'ole32.dll'
import ole32, CoInitialize, 'CoInitialize',\
CoCreateInstance, 'CoCreateInstance'
include 'API\KERNEL32.INC'
end data
voy a compilarlo de otra manera a ver
, tanto tiempo viendo en que fallaba ya me estaba volviendo loco