好象QQ游戏发布的程序都是Microsoft Visual C++ 6.0 [Debug]的多,不知道这样做有什么好处?!
QQ连连看也没有禁止掉这些调试信息,它使用了WM_COPYDATA来和调试程序通讯,
WM_COPYDATA == 0x4A
.data:004519BC ; char aQgdebugwnd[]
.data:004519BC aQgdebugwnd db 'QGDebugWnd',0 ; DATA XREF: sub_427DBF+2Ao
.text:00427DE9 push offset aQgdebugwnd ; lpWindowName
.text:00427DEE push eax ; lpClassName
.text:00427DEF call ds:FindWindowA
.text:00427DF5 test eax, eax
.text:00427DF7 mov lpClassName, eax
.text:00427DFC jz short loc_427E17
.text:00427DFE
.text:00427DFE loc_427DFE: ; CODE XREF: sub_427DBF+28j
.text:00427DFE and [ebp+lParam], 0
.text:00427E02 lea ecx, [ebp+lParam]
.text:00427E05 push ecx ; lParam
.text:00427E06 push 0 ; wParam
.text:00427E08 push 4Ah ; Msg
.text:00427E0A push eax ; hWnd
.text:00427E0B mov [ebp+var_8], esi
.text:00427E0E mov [ebp+var_4], edi
.text:00427E11 call ds:SendMessageA
用VC6写个窗口程序,标题为QGDebugWnd, 并处理WM_COPYDATA消息就可以了
BOOL CTestDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
if (!IsBadReadPtr(pCopyDataStruct->lpData, pCopyDataStruct->cbData))
{//用songyj的方法来显示
printf("%s\n", pCopyDataStruct->lpData);
}
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
输出信息:
COEMShow 删除所有资源 0 0
收到 SC_PLAYER_INFO 并发送 GAMEC_MSG_CLIENTINIT
收到自己信息-玩家身份
GAMES_MSG_ROOMTYPE
Server Init To SetRoomType
SetRoomType to Start Btn
加入玩家 ViperDodge
CUQG 要求获取325812366身份:0
Load bg.mid
StartGame Set All rank to -1
OEMShow 一局游戏开始
总共的棋子数量:23 OEM百分比:0% OEM棋子数量:0
COEMShow 删除所有资源 14195900 0
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课