首页
社区
课程
招聘
[求助]Unicode串和寄存器问题
发表于: 2008-12-10 14:10 3772

[求助]Unicode串和寄存器问题

2008-12-10 14:10
3772
void _stdcall GetSBuff(char *user)
{
        ::MessageBox(NULL,LPCTSTR(user),LPCTSTR(user),0);     
        return;    
}
_asm
        {

                push edx;
                call GetSBuff;
        }


edx中的值在od调试中得到的值是 unpack
是Unicode串
这里用messagebox弹出的值只有第一个字符“u”
请哪位指点一下 非常感谢!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 182
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
MessageBoxW
2008-12-10 14:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
A是ASCII版本的

W是unicode版本

系统根据你编译的语言会自动选择相应版本

所以你直接使用MessageBox应该可以

而且写入文件后 也是只有一个字符 如下面的函数 请问为何?
void _stdcall WriteToFile(char buff[50])
{      
        HANDLE hFile=CreateFile("c:\\log.txt",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
        if(hFile==INVALID_HANDLE_VALUE)
        {
                return;
        }
        ::SetFilePointer(hFile,0,NULL,FILE_END);
        DWORD dwWrite;
        
        WriteFile(hFile,buff,strlen(buff),&dwWrite,NULL);
        
        CloseHandle(hFile);
}
2008-12-10 14:23
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
如果是unicode 就不能用strlen计算长度
2008-12-10 16:56
0
游客
登录 | 注册 方可回帖
返回
//