【文章标题】: 【原创】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期)