我截获了某游戏里的一些文字,都是用ExtTextOutW输出的,我将截获到的文字用WideCharToMultiByte转换后输出到文件,可都是一些乱码,后来我就将十六进制数据打了出来,谁能告诉我这些数据应该如何转换成可以正常显示的文字???
[ExtTextOutW] [13] [cf 32 b3 34 df 2f 63 14 af 45 20 3e d4 4c 55 3f d4 03 6e 11 ca 1b c8 4b c4 01 ]
?????????????
[ExtTextOutW] [12] [53 05 fc 2a 58 2c 12 1c 35 09 45 50 7c 08 03 1c bb 1b 1c 28 00 1d c4 01 ]
?????偅??????
[ExtTextOutW] [7] [c3 09 d1 36 a5 09 f3 2a ed 4a c3 41 c4 01 ]
???????
[ExtTextOutW] [6] [6d 55 f3 09 0b 00 7c 19 24 39 0c 00 ]
啭? ??
[ExtTextOutW] [12] [63 4c e1 03 e0 09 cf 32 b3 34 d4 4c 55 3f e1 03 e0 09 ca 1b c8 4b c4 01 ]
????????????对于英文字母转换后能正常显示,我想上面的应该是些汉字,可又不知道如何转换,请高人指教,万分感谢!!
[ExtTextOutW] [13] [cf 32 b3 34 df 2f 63 14 af 45 20 3e d4 4c 55 3f d4 03 6e 11 ca 1b c8 4b c4 01 ]
?????????????
[ExtTextOutW] [12] [53 05 fc 2a 58 2c 12 1c 35 09 45 50 7c 08 03 1c bb 1b 1c 28 00 1d c4 01 ]
?????偅??????
[ExtTextOutW] [7] [c3 09 d1 36 a5 09 f3 2a ed 4a c3 41 c4 01 ]
???????
[ExtTextOutW] [6] [6d 55 f3 09 0b 00 7c 19 24 39 0c 00 ]
啭? ??
[ExtTextOutW] [12] [63 4c e1 03 e0 09 cf 32 b3 34 d4 4c 55 3f e1 03 e0 09 ca 1b c8 4b c4 01 ]
????????????对于英文字母转换后能正常显示,我想上面的应该是些汉字,可又不知道如何转换,请高人指教,万分感谢!!
解决方案 »
- 如何读取USB Composite Device的数据
- VC 中 this
- CFile::GetStatus 访问不存在的网络文件速度慢的问题
- 到底什么是Activex呢?
- 怎样实现描点
- vfw中COMPVARS结构的问题。100分谢谢。
- 简单问题:如何在对话框上用GDI+显示Jpg图片?
- 你知道吗????
- DCOM访问北拒绝:((((急
- winxp的资源管理器的地址栏comboBox是如何做的?
- 急!!!多个号码按钮共享一个响应BN_CLICKED消息的函数OnButton(),如何在OnButton()中知道所按号码按钮控件的ID???
- 高分求助操作excel 中合并单元格 问题!(立刻放分!)
//转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte
WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ;
LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen);
WideCharToMultiByte (0x0804, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ;
WideCharToMultiByte (0x0804, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ; 我用这个转换怎么pszGbt里是空的???
那关于第一个参数我在MSDN里只看到几个可用值,936,0x804这两个值是从哪得知的?
不过你存的这些字节确实没法转成汉字
我截获了某游戏里的一些文字,都是用ExtTextOutW输出的,我将截获到的文字用你既然知道是exttextout输出 ..那你就应该继续跟进.是怎么样编码的..
所谓编码.可能是加密编码....没有的话.一般不用转换..多此一举
游戏还要干其它很多事啦
void LogFileW(LPCSTR lpFuncName, LPCWSTR lpString, int cbString)
{
char szFileName[]="c:\\hook.log"; char szGbt[256],szGbs[256];
DWORD dwWriteLen;
HANDLE hfile; memset( szGbt, 0x00, 256 );
memset( szGbs, 0x00, 256 ); WideCharToMultiByte(CP_UTF8,0, lpString, cbString, szGbt, 255, NULL, NULL); hfile = CreateFile( szFileName, GENERIC_WRITE, \
FILE_SHARE_WRITE | FILE_SHARE_READ , \
NULL, OPEN_ALWAYS, NULL, NULL );
if( hfile )
{
SetFilePointer( hfile, 0L, 0L, FILE_END );
sprintf( szGbs, "[%s] [%d] [%s]\r\n", lpFuncName, cbString, szGbt );
WriteFile( hfile, szGbs, strlen(szGbs), &dwWriteLen, NULL );
CloseHandle( hfile );
}}以下是截获extTextOutW的程序:
BOOL WINAPI MyExtTextOutW(HDC hdc,int X,int Y,UINT fuOptions,CONST RECT *lprc,LPCWSTR lpString,UINT cbCount,CONST INT *lpDx)
{
LogFileW( "ExtTextOutW", lpString, cbCount );
ExtTextOutW(hdc,X,Y,fuOptions,lprc,lpString,cbCount,lpDx);
return TRUE;
}就这两函数,不知道是不是有问题??
把LOG函数里面的WideCharToMultiByte改成
WideCharToMultiByte(936,0, lpString, cbString, szGbt, 255, NULL, NULL);
或者
WideCharToMultiByte(950,0, lpString, cbString, szGbt, 255, NULL, NULL);
试试
谢谢你的帮助。你说的这两个参数(936,950)我都试过了仍然不行。我试着hook windows自带的计算器,结果该值为AC_UTF8时,能显示出菜单名称之类的汉字,其它字符是乱码;其它代码页值时都是乱码。
似乎这个问题很难解决,那我想问一下,代码页这个参数在MSDN里只说明了几个,没提到936,950这些值,这些值是从何得知的? 回答后立即结贴 。希望有朋友帮帮忙
http://dev.csdn.net/article/72/72002.shtm