OD逆向分析QQ游戏大厅多开体.docx
- 文档编号:4117454
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:264.08KB
OD逆向分析QQ游戏大厅多开体.docx
《OD逆向分析QQ游戏大厅多开体.docx》由会员分享,可在线阅读,更多相关《OD逆向分析QQ游戏大厅多开体.docx(13页珍藏版)》请在冰豆网上搜索。
OD逆向分析QQ游戏大厅多开体
本来我是很不情愿再写一篇OD逆向分析的,因为此时写这篇文章会很累,时间多,字也打得多,
而且很可能会在一段时间后,游戏更新了,未来本文可能就会失效.但还是写了,为了独立团论坛的学员大家,也给前面的做个佐证与一点补充.
先创建一个QQ游戏大厅的进程,
然后去创建第二个QQ游戏大厅进程时,会创建失败,并且第一个进程的大厅窗口会被激活置为前台,另外任务栏下的QQ游戏按钮也会被闪烁几下.
会闪烁可是好事啊,可以给我们找关键的禁止双开的CALL提供很多的帮助.
下面我们在开着第一个QQ游戏大厅的情况下,用OD载入第二个QQ游戏大厅程序,然后下断点在以下两个会终止进程的API上
ExitProcess
TerminateProcess
API断点设置如下:
在OD里按F9运行,会中断在ExitProcess上.
见堆栈窗口情况:
0012FEDC 785421CC ?
Tx /CALL到ExitProcess来自MSVCR90.785421C6
0012FEE0 00000000 .... \ExitCode=0
看堆栈提示,是MSVCRT领空的785421C6处指令MSVCRT是VC++的运行时库,与易语言的核心库一样的概念.
另外就是易语言与易核心库是用VC++编的,所以我们编写的易程序在运行时,也会加载这个MSVCRT运行库的
现在我们直接复制完堆栈数据窗口的所有返回信息:
0012FEDC 785421CC ?
Tx /CALL到ExitProcess来自MSVCR90.785421C6
0012FEE0 00000000 .... \ExitCode=0
0012FEE4 /0012FF28 (_.
0012FEE8 |78542411 _$Tx 返回到MSVCR90.78542411来自MSVCR90.785421B5
0012FEEC |00000000 ....
0012FEF0 |A28413F9 ?
劉
0012FEF4 |00412B4C L+A. QQGame.00412B4C
0012FEF8 |00151F01 __.
0012FF10 |0012FEF0 瘙_.
0012FF14 |00000000 ....
0012FF18 |0012FFB0 ?
_. 指向下一个SEH记录的指针
0012FF1C |7858CBDE 匏Xx SE处理程序
0012FF20 |DACC2861 a(腾
0012FF24 |FFFFFFFE
0012FF28 ]0012FF3C
0012FF2C |78542466 f$Tx 返回到MSVCR90.78542466来自MSVCR90.78542306
0012FF30 |00000000 ...
0012FF3C ]0012FFC0 ?
_.
0012FF40 |00409DEC 鞚@. 返回到QQGame.00409DEC来自MSVCR90.exit
0012FF44 |00000000 ....
0012FF48 |B0AB7FEA ?
0012FF4C |7C930228 (_搢 ntdll.7C930228
0012FF50 |FFFFFFFF
0012FF54 |7FFDE000 .帻
0012FF58 |00000044 D...
0012FF5C |00153920 9_.
0012FF60 |00153B38 8;_. ASCII"WinSta0\\Default"
0012FFB0 |0012FFE0 ?
_. 指向下一个SEH记录的指针
0012FFB4 |0040A4A5 イ@. SE处理程序
0012FFB8 |B0F9549A 歍
0012FFBC |00000001 _...
0012FFC0 \0012FFF0 ?
_.
0012FFC4 7C817077 wp亅 返回到kernel32.7C817077
0012FFC8 7C930228 (_搢 ntdll.7C930228
0012FFCC FFFFFFFF
0012FFD0 7FFDE000 .帻
0012FFD4 805522FA ?
U
我们要找创建互斥体的CALL,这样才能找到这个call的压入参数(互斥体名称),分析出QQ游戏大厅限制双开的互斥体名称,
那么找CALL,当然是在进程的凌空找,从上面堆栈的所有返回信息来看,只有:
0012FF40 |00409DEC 鞚@. 返回到QQGame.00409DEC来自MSVCR90.exit
这句是游戏进程的凌空,其他都是在MSVCR90或kernel32模块凌空里,所以其他就不需要跟踪了,我们来看
返回到QQGame.00409DEC来自MSVCR90.exit 鼠标选中堆栈数据窗口这条代码,右键选中
来到这里:
发现上面有2个CALL,我们对这2个CALL下断点,在这里需要注意的是,因为我们跳转到这的代码是在这2个CALL之后,
所以要让程序再执行到我们下断点的这2个CALL的话,需要重新载入一次,选择OD菜单里的
然后在按F9运行调试。
这个时候程序就被执行到第1个CALL时,被断下来了,
我们按F8单步步过这个CALL时候,发现QQ游戏大厅窗口闪了一下,、
这是因为我们OD里加载的这个游戏大厅发现了系统中,早已经打开了一个QQ游戏大厅,把正在运行的大厅窗口最前闪动操作
那么这个CALL肯定跟互斥体有关系,我们跟入CALL00403DAF 这个CALL里面进去看看,
进入CALL00403DAF内部:
00403DAF /$ 55 PUSHEBP //来到这 我们继续F8一条一条调试往下执行看看
00403DB0 |. 8BEC MOVEBP,ESP
00403DB2 |. 83EC78 SUBESP,78
00403DB5 |. A1B4114100 MOVEAX,DWORDPTRDS:
[4111B4]
00403DBA |. 33C5 XOREAX,EBP
00403DBC |. 8945FC MOVDWORDPTRSS:
[EBP-4],EAX
00403DBF |. 53 PUSHEBX
00403DC0 |. 8B5D08 MOVEBX,DWORDPTRSS:
[EBP+8]
00403DC3 |. 56 PUSHESI
00403DC4 |. 57 PUSHEDI
00403DC5 |. 8B7D10 MOVEDI,DWORDPTRSS:
[EBP+10]
00403DC8 |. 6860C34000 PUSHQQGame.0040C360
00403DCD |. FF152CB04000CALLDWORDPTRDS:
[<&KERNEL32.SetDllDir>; kernel32.SetDllDirectoryW
00403DD3 |. FF1528B04000CALLDWORDPTRDS:
[<&KERNEL32.GetTickCo>;[GetTickCount
00403DD9 |. 8B3500B04000MOVESI,DWORDPTRDS:
[<&KERNEL32.Output>; kernel32.OutputDebugStringW
00403DDF |. 6880BA4000 PUSHQQGame.0040BA80 ;/String="QQGametimestampWinMain"
00403DE4 |. 894588 MOVDWORDPTRSS:
[EBP-78],EAX ;|
00403DE7 |. FFD6 CALLESI ;\OutputDebugStringW
00403DE9 |. E8C3FCFFFF CALLQQGame.00403AB1
00403DEE |. E89DF9FFFF CALLQQGame.00403790
00403DF3 |. E887F8FFFF CALLQQGame.0040367F
00403DF8 |. 85C0 TESTEAX,EAX
00403DFA |. 740C JESHORTQQGame.00403E08
00403DFC |. 6840BA4000 PUSHQQGame.0040BA40 ; UNICODE"createResource:
recordFileExits"
00403E01 |. FFD6 CALLESI
00403E03 |. E859F7FFFF CALLQQGame.00403561
00403E08 |> 8D4D8C LEAECX,DWORDPTRSS:
[EBP-74]
00403E0B |. E89AEDFFFF CALLQQGame.00402BAA
00403E10 |. 85FF TESTEDI,EDI
00403E12 |. 7433 JESHORTQQGame.00403E47
00403E14 |. 57 PUSHEDI ;/String
00403E15 |. FF1524B04000CALLDWORDPTRDS:
[<&KERNEL32.lstrlenA>>;\lstrlenA
00403E1B |. 8BF0 MOVESI,EAX
00403E1D |. 46 INCESI
00403E1E |. 81FEFFFFFF3FCMPESI,3FFFFFFF
00403E24 |. 7E04 JLESHORTQQGame.00403E2A
00403E26 |. 33C0 XOREAX,EAX
00403E28 |. EB14 JMPSHORTQQGame.00403E3E
00403E2A |> 8D0436 LEAEAX,DWORDPTRDS:
[ESI+ESI]
00403E2D |. E8EE5D0000 CALLQQGame.00409C20
00403E32 |. 8BC4 MOVEAX,ESP
00403E34 |. 6A00 PUSH0
00403E36 |. 56 PUSHESI
00403E37 |. 57 PUSHEDI
00403E38 |. 50 PUSHEAX
00403E39 |. E8EBF6FFFF CALLQQGame.00403529
00403E3E |> FF7588 PUSHDWORDPTRSS:
[EBP-78]
00403E41 |. FF7514 PUSHDWORDPTRSS:
[EBP+14]
00403E44 |. 50 PUSHEAX
00403E45 |. EB08 JMPSHORTQQGame.00403E4F
00403E47 |> FF7588 PUSHDWORDPTRSS:
[EBP-78]
00403E4A |. FF7514 PUSHDWORDPTRSS:
[EBP+14]
00403E4D |. 6A00 PUSH0
00403E4F |> 53 PUSHEBX
00403E50 |. 8D4D8C LEAECX,DWORDPTRSS:
[EBP-74]
00403E53 |. E8E6F5FFFF CALLQQGame.0040343E
00403E58 |. 8D4D8C LEAECX,DWORDPTRSS:
[EBP-74]
00403E5B |. E83BE9FFFF CALLQQGame.0040279B
00403E60 |. 33C0 XOREAX,EAX
00403E62 |. 8DA57CFFFFFFLEAESP,DWORDPTRSS:
[EBP-84]
00403E68 |. 5F POPEDI
00403E69 |. 5E POPESI
00403E6A |. 5B POPEBX
00403E6B |. 8B4DFC MOVECX,DWORDPTRSS:
[EBP-4]
00403E6E |. 33CD XORECX,EBP
00403E70 |. E8695C0000 CALLQQGame.00409ADE
00403E75 |. C9 LEAVE
00403E76 \. C21000 RETN10
发现当我们F8从头执行调试到粉色代码处后,我们正在运行的另外QQ游戏大厅窗口(非OD加载的QQ游戏大厅),又闪了一次,
那么老样子,我们步入进去CALLQQGame.0040343E 这个CALL里面瞧瞧至于为什么这个CALL要进去看看,
是因为其他上面的CALL执行后,游戏大厅窗口都没有闪,没有任何反应,只有这个call执行完后,QQ游戏大厅才闪了一下,所以要进入看看
进入后来到了:
0040343E /$ 6A08 PUSH8 //来到这 我们又继续F8一条一条调试往下执行看看
00403440 |. B82AA64000 MOVEAX,QQGame.0040A62A
00403445 |. E802670000 CALLQQGame.00409B4C
0040344A |. 894DF0 MOVDWORDPTRSS:
[EBP-10],ECX
0040344D |. 33DB XOREBX,EBX
0040344F |. 53 PUSHEBX
00403450 |. FF15F8B34000CALLDWORDPTRDS:
[<&ole32.CoInitialize>; ole32.CoInitialize
00403456 |. 6858B74000 PUSHQQGame.0040B758 ;/String="TenioInitialize!
"
0040345B |. FF1500B04000CALLDWORDPTRDS:
[<&KERNEL32.OutputDeb>;\OutputDebugStringW
00403461 |. 8B4DF0 MOVECX,DWORDPTRSS:
[EBP-10]
00403464 |. E848F4FFFF CALLQQGame.004028B1
00403469 |. 8B4DF0 MOVECX,DWORDPTRSS:
[EBP-10]
0040346C |. E80FF4FFFF CALLQQGame.00402880
00403471 |. 6A14 PUSH14
00403473 |. E896670000 CALL ? 2@YAPAXI@Z> 00403478 |. 59 POPECX 00403479 |. 8945EC MOVDWORDPTRSS: [EBP-14],EAX 0040347C |. C745FC01000>MOVDWORDPTRSS: [EBP-4],1 00403483 |. 3BC3 CMPEAX,EBX 00403485 |. 7411 JESHORTQQGame.00403498 00403487 |. 68B4B74000 PUSHQQGame.0040B7B4 ; UNICODE"factory2.dll" 0040348C |. 8BC8 MOVECX,EAX 0040348E |. E85DF6FFFF CALLQQGame.00402AF0 00403493 |. 8945EC MOVDWORDPTRSS: [EBP-14],EAX 00403496 |. EB03 JMPSHORTQQGame.0040349B 00403498 |> 895DEC MOVDWORDPTRSS: [EBP-14],EBX 0040349B |> 8B45EC MOVEAX,DWORDPTRSS: [EBP-14] 0040349E |. 8B4004 MOVEAX,DWORDPTRDS: [EAX+4] 004034A1 |. 834DFCFF ORDWORDPTRSS: [EBP-4],FFFFFFFF 004034A5 |. 3BC3 CMPEAX,EBX 004034A7 |. 745B JESHORTQQGame.00403504 004034A9 |. 6A02 PUSH2 004034AB |. FFD0 CALLEAX 004034AD |. 8BF0 MOVESI,EAX 004034AF |. 59 POPECX 004034B0 |. 3BF3 CMPESI,EBX 004034B2 |. 7450 JESHORTQQGame.00403504 004034B4 |. 8B06 MOVEAX,DWORDPTRDS: [ESI] 004034B6 |. 680CE00200 PUSH2E00C 004034BB |. 689CB74000 PUSHQQGame.0040B79C ; UNICODE"StartUp.dll" 004034C0 |. 53 PUSHEBX 004034C1 |. 8BCE MOVECX,ESI 004034C3 |. FF5008 CALLDWORDPTRDS: [EAX+8] 004034C6 |. 8BF8 MOVEDI,EAX 004034C8 |. 3BFB CMPEDI,EBX 004034CA |. 7427 JESHORTQQGame.004034F3 004034CC |. 8B07 MOVEAX,DWORDPTRDS: [EDI] 004034CE |. 8BCF MOVECX,EDI 004034D0 |. FF504C CALLDWORDPTRDS: [EAX+4C] ; 执行到这CALL后,{: 100_157: }发现游戏窗口又闪了一次,所以再进入这个CALL瞧瞧 004034D3 |. 85C0 TESTEAX,EAX 004034D5 |. 7413 JESHORTQQGame.004034EA 004034D7 |. 8B4DF0 MOVECX,DWORDPTRSS: [EBP-10] 004034DA |. 53 PUSHEBX 004034DB |. E8C9F2FFFF CALLQQGame.004027A9 004034E0 |. FF7514 PUSHDWORDPTRSS: [EBP+14] 004034E3 |. 8B07 MOVEAX,DWORDPTRDS: [EDI] 004034E5 |. 8BCF MOVECX,EDI 004034E7 |. FF5050 CALLDWORDPTRDS: [EAX+50] 004034EA |> 8B06 MOVEAX,DWORDPTRDS: [ESI] 004034EC |. 53 PUSHEBX 004034ED |. 57 PUSHEDI 004034EE |. 8BCE MOVECX,ESI 004034F0 |. FF500C CALLDWORDPTRDS: [EAX+C] 004034F3 |> 8B4DEC MOVECX,DWORDPTRSS: [EBP-14] 004034F6 |. E8B2F1FFFF CALLQQGame.004026
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OD 逆向 分析 QQ 游戏 大厅 多开体