OD逆向分析QQ游戏大厅多开体.docx

上传人:b****3 文档编号:4117454 上传时间:2022-11-28 格式:DOCX 页数:13 大小:264.08KB
下载 相关 举报
OD逆向分析QQ游戏大厅多开体.docx_第1页
第1页 / 共13页
OD逆向分析QQ游戏大厅多开体.docx_第2页
第2页 / 共13页
OD逆向分析QQ游戏大厅多开体.docx_第3页
第3页 / 共13页
OD逆向分析QQ游戏大厅多开体.docx_第4页
第4页 / 共13页
OD逆向分析QQ游戏大厅多开体.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

OD逆向分析QQ游戏大厅多开体.docx

《OD逆向分析QQ游戏大厅多开体.docx》由会员分享,可在线阅读,更多相关《OD逆向分析QQ游戏大厅多开体.docx(13页珍藏版)》请在冰豆网上搜索。

OD逆向分析QQ游戏大厅多开体.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1