首页
论坛
专栏
课程

[原创]菜鸟分析MiniQQ V1.4 免费版 2006.01.01 字符串加密算法

2006-1-2 23:06 8854

[原创]菜鸟分析MiniQQ V1.4 免费版 2006.01.01 字符串加密算法

2006-1-2 23:06
8854
题目:菜鸟分析MiniQQ V1.4 免费版 2006.01.01 字符串加密算法
软件名称:MiniQQ V1.4 免费版 2006.01.01
软件来源:Http://www.PrettySky.Com
软件平台: Win9x/Me/NT4/2000

软件简介:
  请相信自己的眼睛,你没有看错,虽然70K的QQ客户端确实令人不可思议。迷你QQ(MiniQQ)是一个超级小的QQ客户端,他采用命令行方式工作,字符界面+声音带来的效果的确非常Cool,用它就可以和自己QQ上的好友交流,它使用一种精简版的TCP/QQ通讯协议,这种协议流量极小,在你网速不快,或者流量需要收费的时候(比如笔记本链接手机用GPRS上网)你将会获得更快的速度,和更少的费用(GPRS接入点cwwap时请使用第三方HTTP代理软件即可)。

迷你QQ(MiniQQ)具备了所有常用的功能的功能有,显示好友列表、文字聊天、添加好友、删除好友、查看资料、修改登录状态等,语音和视频聊天功能我们目前不打算加入。迷你QQ(MiniQQ)直接连接腾讯官方的TCP服务器,密码传送采用MD5不可逆加密法,请放心您的账号安全。

破解目的:练手
破解难度:简单
工具:ollydbg,PEID, ida

  在skycn闲逛看到此软件觉得好奇就下了,用的的确是TCP协议,应该是和qq的手机接口通讯。软件免费版本第一次和好友通讯会带一些提示信息,用peid查了一下是upx的壳,手脱了一下。搜索提示字符串没有结果,用od载入,搜索引用字符串也没有。看样部分字符串资源是加密了。
  怎么找到加密字符串的地方,我的思路是封包一定要发出去,先看看封包。用commview查看了一次封包,是明码查看发送消息的命令字符串中包含"cltmsg"。
用od装载程序,查看字符串引用,下断点到所有引用包含"cltmsg"的地方启动软件,登陆后发送一个消息给任意好友 很快断下在 00417AFB 处
00417ABF    B8 B8934100     MOV EAX,2_.004193B8                      ; 请输入信息内容:
00417AC4    E8 F7C5FFFF     CALL 2_.004140C0
00417AC9    B8 E8C84100     MOV EAX,2_.0041C8E8
00417ACE    E8 39C1FFFF     CALL 2_.00413C0C
00417AD3    833D E8C84100 0>CMP DWORD PTR DS:[41C8E8],0
00417ADA    0F84 94010000   JE 2_.00417C74
00417AE0    833D F0C84100 F>CMP DWORD PTR DS:[41C8F0],-1
00417AE7    0F84 BE000000   JE 2_.00417BAB
00417AED    807B 0C 00      CMP BYTE PTR DS:[EBX+C],0
00417AF1    0F85 B4000000   JNZ 2_.00417BAB
00417AF7    C643 0C 01      MOV BYTE PTR DS:[EBX+C],1
00417AFB    68 D0934100     PUSH 2_.004193D0                         ; ver=1.3&con=1&cmd=cltmsg&seq=
00417B00    8D85 30FFFFFF   LEA EAX,DWORD PTR SS:[EBP-D0]
00417B06    50              PUSH EAX
00417B07    B8 3F420F00     MOV EAX,0F423F
00417B0C    E8 F3B2FEFF     CALL 2_.00402E04
00417B11    8945 BC         MOV DWORD PTR SS:[EBP-44],EAX
00417B14    C645 C0 00      MOV BYTE PTR SS:[EBP-40],0
00417B18    8D55 BC         LEA EDX,DWORD PTR SS:[EBP-44]
00417B1B    33C9            XOR ECX,ECX

经过几次跟踪很快发现了这里
00417B48    8D95 24FFFFFF   LEA EDX,DWORD PTR SS:[EBP-DC]
00417B4E    B8 18944100     MOV EAX,2_.00419418
00417B53    E8 7CBFFFFF     CALL 2_.00413AD4
00417B58    8B8D 24FFFFFF   MOV ECX,DWORD PTR SS:[EBP-DC]
00413AD4是用来完成字符串编码的

413AD4的代码如下
00413AD4    55              PUSH EBP
00413AD5    8BEC            MOV EBP,ESP
00413AD7    83C4 F8         ADD ESP,-8
00413ADA    53              PUSH EBX
00413ADB    56              PUSH ESI
00413ADC    57              PUSH EDI
00413ADD    8BFA            MOV EDI,EDX
00413ADF    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
00413AE2    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
00413AE5    E8 4A0BFFFF     CALL 2_.00404634
00413AEA    33C0            XOR EAX,EAX
00413AEC    55              PUSH EBP
00413AED    68 793B4100     PUSH 2_.00413B79
00413AF2    64:FF30         PUSH DWORD PTR FS:[EAX]
00413AF5    64:8920         MOV DWORD PTR FS:[EAX],ESP
00413AF8    8BC7            MOV EAX,EDI
00413AFA    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
00413AFD    E8 FA06FFFF     CALL 2_.004041FC
00413B02    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
00413B05    E8 3A09FFFF     CALL 2_.00404444
00413B0A    8BF0            MOV ESI,EAX
00413B0C    D1FE            SAR ESI,1
00413B0E    79 03           JNS SHORT 2_.00413B13
00413B10    83D6 00         ADC ESI,0
00413B13    85F6            TEST ESI,ESI
00413B15    7E 4C           JLE SHORT 2_.00413B63
00413B17    BB 01000000     MOV EBX,1
00413B1C    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 得到密文数据结构指针
00413B1F    E8 2009FFFF     CALL 2_.00404444                         ; 获得密文数据长度
00413B24    2BC3            SUB EAX,EBX                              ; 从后向前取数据
00413B26    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]             ; 得到密文数据结构指针
00413B29    8A0402          MOV AL,BYTE PTR DS:[EDX+EAX]             ; 取得一BYTE密文数据
00413B2C    34 01           XOR AL,1
00413B2E    8845 FB         MOV BYTE PTR SS:[EBP-5],AL               ; 保存到临时变量2
00413B31    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 得到密文数据结构指针
00413B34    E8 0B09FFFF     CALL 2_.00404444                         ; 获得密文数据长度
00413B39    2BC3            SUB EAX,EBX
00413B3B    50              PUSH EAX
00413B3C    8BC7            MOV EAX,EDI
00413B3E    E8 510BFFFF     CALL 2_.00404694
00413B43    5A              POP EDX                                  ; 从前向后取数据
00413B44    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-4]             ; 得到密文数据结构指针
00413B47    8A4C19 FF       MOV CL,BYTE PTR DS:[ECX+EBX-1]           ; 取得一BYTE密文数据
00413B4B    80F1 01         XOR CL,1
00413B4E    880C10          MOV BYTE PTR DS:[EAX+EDX],CL
00413B51    8BC7            MOV EAX,EDI
00413B53    E8 3C0BFFFF     CALL 2_.00404694
00413B58    8A55 FB         MOV DL,BYTE PTR SS:[EBP-5]
00413B5B    885418 FF       MOV BYTE PTR DS:[EAX+EBX-1],DL
00413B5F    43              INC EBX
00413B60    4E              DEC ESI
00413B61  ^ 75 B9           JNZ SHORT 2_.00413B1C
00413B63    33C0            XOR EAX,EAX
00413B65    5A              POP EDX
00413B66    59              POP ECX
00413B67    59              POP ECX
00413B68    64:8910         MOV DWORD PTR FS:[EAX],EDX
00413B6B    68 803B4100     PUSH 2_.00413B80
00413B70    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
00413B73    E8 3006FFFF     CALL 2_.004041A8
00413B78    C3              RETN

C函数
void EnCode(const char* Src, int Len, char* Dest)
{
        BYTE al, cl;
        DWORD ebx, esi;

        esi = Len;
        esi = esi >> 1;
        ebx = 1;

        while(esi > 0)
        {
                al = Src[Len-ebx];
                al = al ^ 1;
                cl = Src[ebx-1];
                cl = cl ^1;
                Dest[Len-ebx] = cl;
                Dest[ebx-1] = al;
                ebx++;
                esi--;
        }
        Dest[Len] = 0;
}

后记:
作者真的很聪明,连手机接口都能用上, 程序用delphi写的,占用的内存还是不少的 呵呵。用命令行聊qq满好玩的。第一次写这方面文章,写的不好之处还请大家包含。

2006年1月2日
gameres:pk2000 pediy:goodcode

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (11)
wenglingok 26 2006-1-3 08:08
2
0
这个工具很有意思!

真够mini的
WHO-AM-I 2006-1-3 10:42
3
0
不错,精品!!!!!!!!
zhaoocn 7 2006-1-4 12:48
4
0
逆向市为了学习
pentacleNC 4 2006-1-4 13:19
5
0
不错~
偶只去除了其广告。当时也没再具体分析下去~~
17521 1 2006-1-4 19:02
6
0
强 学习了  连C代码都写出来了
飞心男孩 2 2006-1-6 19:28
7
0
"第一次写这方面文章,写的不好之处还请大家包含。"
大哥,我服了,写得真是不错.我脱壳了,硬是没找到字符串不说,也没弄明白字符串到底藏那里了,现在算是明白了,谢谢,顶了!!
auser 2006-1-9 11:48
8
0
好软件!
现在的QQ动则数十兆,这个76K的QQ确实让人惊喜!

注册费用15元,值得支持一下!
lidazixun 2 2006-1-9 13:23
9
0
现在1.6的好像没有加密了~

可是那个顶部的信息我也找不到,估计是内存加载
menglv 2006-1-20 13:30
10
0
现在是2.0了,我喜欢,今天刚出
眼镜 2006-1-20 17:28
11
0
pk2000你娃一天舒服哦。
nbw 24 2006-1-20 19:39
12
0
这个软件做得非常棒。

[公告]给破解者的一封信

1,我认为破解确实是一门技术,无聊时候我也喜欢做一些反向分析。
2,我也喜爱用破解版软件,因为他们是Free的。
3,我并不介意你破解我的软件,但是请不要修改我的版权信息,你可以添加,但请不要修改和删除。
4,我非常尊重那些只是为了Free而破解的Cracker,我愿意和这些人交流。
5,如果你破解了我的软件,如果可能的话请告诉我,或者让我知道你是怎么破解的,我会非常感谢。
6,我的Email:prettysky8@gmail.com
游客
登录 | 注册 方可回帖
返回