首页
社区
课程
招聘
[原创]QQGAME双开及去除热键提示
发表于: 2010-5-11 14:31 8697

[原创]QQGAME双开及去除热键提示

2010-5-11 14:31
8697
【文章标题】: 【原创】QQGAME双开及去除热键提示
【文章作者】: 无嗔
【作者邮箱】: admin@wc1217.com
【作者QQ号】: 77423704
【下载地址】: http://www.wc1217.com/down/demo.rar
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!大牛踱过....
--------------------------------------------------------------------------------
【详细过程】
  最近迷上QQ欢乐斗地主,但技术太烂,总是没有豆豆,有达人告诉我,可以多用几个号用代理上刷豆豆,心喜。
  一天刷了6000多豆,但每次登录的时候都来回倒腾输代理、输号码,输密码,做为学计算机的,怎么可以什么都靠手呢。
  目的出来了。写了一个程序,如图(未完工)。
  


  但是命令根本没有代理这个接口,所以转战SendMessage了,网上有破双开和热键的软件,但我的程序,是不允许用别人的软件来辅助的,破解也自己写。
  下载最新的GAME2010Beta3,用OD载入GAME.exe,在API断点选择“枚举目标程序导入函数”,选择“LoadLibraryA”,
  

  
  确定后按F9几次,等右下角出现ASCII“Utility.dll”后,F8走起,从模块Kernael32走到Factory再走到StartUp,看到如下:
  
  010CF9BF    FF10            call    dword ptr [eax]
  010CF9C1    8B8E CC010000   mov     ecx, dword ptr [esi+1CC]
  010CF9C7    68 5E100000     push    105E
  010CF9CC    68 861F0000     push    1F86                             ; 下面应该是QQ的主窗体看它传到哪去了
  010CF9D1    68 185C0E01     push    010E5C18                         ; ASCII "QQGame_MainFrame"
  010CF9D6    8B01            mov     eax, dword ptr [ecx]             ; 到ECX里去了
  010CF9D8    68 CC530E01     push    010E53CC                         ; ASCII "QQGame"
  010CF9DD    68 005C0E01     push    010E5C00                         ; ASCII "QQGame_Mutex03/01/2003"
  010CF9E2    FF50 0C         call    dword ptr [eax+C]                ; 调用了,F7进
  010CF9E5    8BF8            mov     edi, eax
  010CF9E7    83C6 08         add     esi, 8
  010CF9EA    57              push    edi
  
  之后就跳到Utility模块里来了.
  10012F3A    6A 00           push    0
  10012F3C    FF15 00010210   call    dword ptr [<&KERNEL32.CreateMute> ; kernel32.CreateMutexA//熟吧,创建互斥体
  10012F42    85C0            test    eax, eax
  10012F44    8946 4C         mov     dword ptr [esi+4C], eax
  10012F47    74 24           je      short 10012F6D
  10012F49    FF15 B0000210   call    dword ptr [<&KERNEL32.GetLastErr> ; ntdll.RtlGetLastWin32Error//错误模块
  10012F4F    3D B7000000     cmp     eax, 0B7
  10012F54    8BCE            mov     ecx, esi
  10012F56    EB 07           jnz     short 10012F5F                    ; 比较有的话就跳走了,不让跳 改成JMP
  10012F58    E8 BE000000     call    1001301B
  10012F5D    EB 2A           jmp     short 10012F89
  10012F5F    E8 90010000     call    100130F4
  10012F64    85C0            test    eax, eax
  10012F66    74 21           je      short 10012F89
  10012F68    897D FC         mov     dword ptr [ebp-4], edi
  10012F6B    EB 1C           jmp     short 10012F89
  
  复制可执行文件到Common/Utility.dll后,就可以双开了,但还是出现了热键提示,我们再开一个窗口,接着走.
  
  
  回到QQGAME模块后,到
  
  004010EB  |.  FF50 40       call    dword ptr [eax+40]               ;  StartUp.010CFB95
  
  运行了,下断点 重启程序,运行到这F7进入,F8走,到
  
  010CFBBF    E8 4F010000     call    010CFD13
  
又运行了,方法同上,接着来
  
  010CFE10    E8 18FCFFFF     call    010CFA2D
  
  又运行 来
  (此时已到StartUp模块了)
  
  010CFA3D    68 34530E01     push    010E5334                         ; ASCII "MainLogi.dll"
  010CFA42    E8 EAB00000     call    010DAB31
  010CFA47    85C0            test    eax, eax
  010CFA49    74 2D           je      short 010CFA78
  010CFA4B    6A 00           push    0
  010CFA4D    68 2C5C0E01     push    010E5C2C                         ; ASCII "Key"
  010CFA52    68 B0530E01     push    010E53B0                         ; ASCII "BossKey"
  010CFA57    68 94530E01     push    010E5394                         ; ASCII "config\original\BossKey.ini"
  010CFA5C    8D8E 08010000   lea     ecx, dword ptr [esi+108]         ; BOSS KEY。哈哈,娃哈哈
  010CFA62    E8 727F0000     call    010D79D9
  010CFA67    85C0            test    eax, eax
  010CFA69    75 03           jnz     short 010CFA6E
  010CFA6B    6A 51           push    51
  010CFA6D    58              pop     eax
  010CFA6E    8B0F            mov     ecx, dword ptr [edi]
  010CFA70    50              push    eax
  010CFA71    6A 01           push    1
  010CFA73    8B11            mov     edx, dword ptr [ecx]
  010CFA75    FF52 10         call    dword ptr [edx+10]               ; MainLogi.0122A037 赋值到MainLogi模块里了,跟去
  010CFA78    5F              pop     edi
  010CFA79    5E              pop     esi
  
  
  到MainLogi了,F8来到这
  
  0122A0B9    FF37            push    dword ptr [edi]
  0122A0BB    FF15 CC022801   call    dword ptr [<&USER32.RegisterHotK>; USER32.RegisterHotKey//又熟了吧
  0122A0C1    85C0            test    eax, eax
  0122A0C3    8945 FC         mov     dword ptr [ebp-4], eax
  0122A0C6    75 1B           jz     short 0122A0E3                   ; 就是这,jnz跳
  0122A0C8    8B45 08         mov     eax, dword ptr [ebp+8]
  0122A0CB    C786 8C000000 0>mov     dword ptr [esi+8C], 1
  0122A0D5    8986 90000000   mov     dword ptr [esi+90], eax
  0122A0DB    899E 94000000   mov     dword ptr [esi+94], ebx
  0122A0E1    EB 15           jmp     short 0122A0F8
  0122A0E3    0FBEC3          movsx   eax, bl
  
  
  保存后就完工了.呵呵...
  之后配合一下WriteFile,就可以完工了.
  
  有录像,附件已传,谢谢观赏.www.wc1217.com
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年05月11日 14:25:38

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
  • o.jpg (31.50kb,375次下载)
  • q.JPG (19.25kb,371次下载)
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有点意思,呵呵
2010-5-12 10:07
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
0122A0C6    75 1B           jz     short 0122A0E3                   ; 就是这,jnz跳
这一句改了之后  开第一个QQ游戏的时候就会提示热键己注册
2010-5-14 02:03
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
我立马试试。回来成功在评论也不迟钝
2010-5-14 11:10
0
雪    币: 436
活跃值: (141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵..错了..应该改成
0122A0C6    75 1B           jz     short 0122A0C8                   ; 就是这,jnz跳

也就是改成 75 00

当然..你在OD的APIBreak插件中加入
K:CreateMutex
U:RegisterHotKey
[APIBreak.ini文件中]

会更方便的
2010-5-14 17:24
0
雪    币: 149
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
先打开一个QQGame,然后用od再打开一个QQGame,不停的F8查找程序退出位置
实现多开要修改的文件
QQGame\commom\Utility.dll
老板键提示框去掉要修改的文件
QQGame\Logic\MainLogi.dll

好像 Skype 国际版 3.8 好像比这个难弄些
00589220 > $ /EB 57         jmp     short 00589279
00589222   . |BA 04777777   mov     edx, 77777704
00589227   . |52            push    edx
00589228   . |B9 BC925800   mov     ecx, 005892BC
0058922D   . |B8 41925800   mov     eax, 00589241
00589232   . |29C1          sub     ecx, eax
00589234   . |BB 03777777   mov     ebx, 77777703
00589239   > |301C01        xor     byte ptr [ecx+eax], bl
0058923C   . |C1C3 03       rol     ebx, 3
0058923F   .^|E2 F8         loopd   short 00589239
00589241   . |5A            pop     edx
00589242   . |31C9          xor     ecx, ecx
00589244   . |BB 41403938   mov     ebx, 38394041
00589249   > |81FA 20925800 cmp     edx, <ModuleEntryPoint>
0058924F   . |75 05         jnz     short 00589256
00589251   . |BA 54945800   mov     edx, 00589454                  ;  Entry address
00589256   > |52            push    edx
00589257   . |68 A08E9E8B   push    8B9E8EA0                       ; /Arg4 = 8B9E8EA0
0058925C   . |52            push    edx                            ; |Arg3
0058925D   . |68 31A23101   push    0131A231                       ; |Arg2 = 0131A231
00589262   . |FF32          push    dword ptr [edx]                ; |Arg1
00589264   . |E8 63FFFFFF   call    005891CC                       ; \Skype.005891CC
00589269   . |5A            pop     edx
0058926A   . |8902          mov     dword ptr [edx], eax
0058926C   . |81FA 05777777 cmp     edx, 77777705
00589272   . |74 05         je      short 00589279
00589274   . |83C2 04       add     edx, 4
00589277   .^|EB D0         jmp     short 00589249
00589279   > \E8 EE000000   call    0058936C
0058927E   .  84C0          test    al, al
00589280   .  74 1C         je      short 0058929E
00589282   .  6A 00         push    0                              ; /Style = MB_OK|MB_APPLMODAL
00589284   .  FF35 547BE600 push    dword ptr [E67B54]             ; |Title = "Skype"
0058928A   .  FF35 587BE600 push    dword ptr [E67B58]             ; |Text = "Error: Skype is not compatible with debuggers like SoftICE .."
00589290   .  6A 00         push    0                              ; |hOwner = NULL
00589292   .  E8 19FEE7FF   call    <jmp.&user32.MessageBoxA>      ; \MessageBoxA
00589297   .  6A 01         push    1                              ; /ExitCode = 1
00589299   .  E8 F2F0E7FF   call    <jmp.&kernel32.ExitProcess>    ; \ExitProcess
2010-5-14 18:40
0
游客
登录 | 注册 方可回帖
返回
//