MyQQ3.19发布

MyQQ3.30

http://xiaoxia.org/?p=4085

MyQQ3.21

See http://code.google.com/p/myqq3/

 

MyQQ3.19(附Win32bin, myqq.exe, libqq.dll, webqq.dll)下载

支持操作系统平台:
Windows, Linux, FreeBSD, OpenSolaris, MacOSX
正在或已经移植至:
FutureAlpha, M8, pidginQQ, mirandaQQ

Version 3.19(2009-9-10)
1. 修复获取群列表(3.18的登录时跳过了获取群列表)。
2. 增加获取好友详细资料。
3. 整理myqq.c中的登录状态判断。

Version 3.18 (2009-7-6 2009-7-30)
1. 修正config.c潜在的内存溢出。
2. 支持长消息(长度大于700)文本发送。
3. libqq异步登录。
4. myqq显示别名为主。
5. 修改了登录协议和别名获取协议。

Version 3.17 (2009-6-30)
1. 修正发送消息后头像的变化。
2. 修正09SP1接收信息的bug。
3. 修正0x18包中获取好友失败时的内存访问错误。
4. 修正09SP1系统消息协议。
5. 盲目修正09接收消息的bug。
6. 增加qqconn.c,支持代理登录。

Version 3.16 (2009-6-27)
1. 增加NoColor配置项关闭色彩文字。
2. 增加cls/clear/clrscr命令来清屏。
3. 提示消息发送失败,但不具体。

Version 3.15 (2009-6-24)
1. 增加qqclient_detach()。
2. 编写成libqq,供外部程序调用。

Version 3.14 (2009-6-21)
1. 命令行参数方式登录失败后的死循环。
2. 内核使用QQ2009SP1协议。
3. 修正08之前接收消息的bug。
4. 兼容Mac32。
5. utf8.c里添加qqdef.h头文件。

MyQQ3.19发布》有388个想法

  1. Vanlin

    其实小虾应该少研究这种东西了,毕竟不能带来什么大的提高。还有更多有意思的东西可以研究。。 呵呵, 个人意见 。

    回复
  2. Mutalisk

    Vanlin说的很对阿

    这个东西继续做下去也没有什么意思了

    另外 11位qq好像马上要出来了

    unsigned int不够存储uid了

    回复
  3. scofield

    请问下有时候收不到包是什么回事,比方说发0XBA验证码的时候收不到,或者获取到数据W了,到发0X22的时候又卡住了,但有时候又很正常,能指点下么?在线等.

    回复
  4. 好汉

    很好很强大.我提两个建议

    1.能不能专为其他应用程序调用提供专门的动态连接库?

    2.能不能依据现在的协议,编个简单的服务程序,以模拟腾讯的服务器.

    回复
  5. 问题

    问下为什么有时会提示”你的网络威胁到其他QQ用户…” 我是顺序用0X91 0X62 0XDD 0X18 0X22 然后就登陆上了,可是有时会给10000 T下线…有解决方法么请问?

    回复
  6. 好汉

    小虾:

    我想在我的软件加个朋友在线消息通道.

    主要用于及时传递实时消息.选用QQ最合适.

    你的QQ很好,我大略看了一看原代码.自成体系.

    一时半会弄不清爽(也没必要).

    我的问题是,我能不能直接使用webqq.dll?

    我看了一下它的出口函数,应当是可以的.

    也就是说,一切QQ线程运作,消息接受和发送,

    都是完备的.只要直接调用即可,并且它对调用的主程序没任何影响.

    假如是这样,您能不能抽出点时间,编写一下它的使用说明和应用事项?

    不胜感激.

    回复
  7. help

    回小虾..问下为什么有时会提示”你的网络威胁到其他QQ用户…” 我是顺序用0X91 0X62 0XDD 0X18 0X22 然后就登陆上了,可是有时会给10000 T下线…有解决方法么请问?

    恩.我是用Q2008协议第三版写成的..虽然这样提示弹下线的频率不高,,但是..但是还是不好啊.请问是那里错出了么?

    回复
  8. help

    补充一下..大概是”你的网络存在危险其他QQ用户的行为,你下次登陆需要验证码”之类…想仿一个QQ客户端..但这个..太碍事了…跟机器有关的那几个字节我都给随机了.还是不成..囧

    回复
  9. Xiaoxia

    楼上,可能你的登录协议不完整。我以前在2008协议也遇到这问题,后来改善了。现在用2009没了。

    回复
  10. Crow

    不懂编程…提点想当然的看法,,,

    1.能不能增加个分栏…比如让命令提示符单独一行并且永远位于回显下方…最好再加个分隔线啥的…

    这样在收消息的时候就不会把正在输入的文字冲掉…让很多字都白打…

    我觉得很多命令行版QQ都有这个通病…特别是多人聊天的时候…造成显示很混乱…所以命令行版客户端和带gui的比起来并不是很实用…

    如果能把命令行和回显分开会整齐很多…

    2.增加类似doskey的功能…用上下方向键滚动命令历史…windows版myqq我没用…反正linux版只要按了上下就会出来”^C”…不是很习惯…或许这是linux的shell特性造成的先天性问题…就当我没说…

    回复
  11. Mr`L

    对QQ2009协议中的0XDD包有点不明白,md5pass1是指md5(md5(pwd))么

    EF 21 B8 1B (rand)

    00 01

    10 4A 61 E3 //uin

    00 00 02 00 00 00 00 01 00 00 08 59

    00 00 01

    7B 84 7E F4 58 51 2E 80 4E D9 86 E0 38 FC 0E F6 //md5(pwd)

    49 78 45 98 (Time: Thu Jan 22 18:08:24 2009)

    00 00 00 00 00 00 00 00 00 00 00 00 00

    3C BE F3 88 (Client IP)

    00 00 00 00

    00 00 00 00

    00 10

    C8 D5 D5 49 28 49 4F 4C BA F7 FB 78 B8 C7 9E 0D //QQ client md5

    70 29 45 CA A0 1E 13 9C B9 67 BE 4B DC AE 16 F7(Key for Reply Packet)

    请问理解正确么?如果正确那为什么次次都密码错误.汗

    回复
  12. 好汉

    这几天试了一试,直接调用webQQ.dll.

    可以发个人消息,但是发群聊不行.

    小虾老大给提个醒,我用错在哪里

    回复
  13. 好汉

    我已搞清楚了.你把自己发的群消息关掉了.

    我发出去了,但看不到,以为不行.其实一切正常.

    谢谢

    回复
  14. xhz

    0X17包获取Q友和群成员 如果QQ过多的话是不是还需要重发第二包?因为我获到的群(04开头的)只有三个,但我实际的群有十几个…请问是什么原因?

    回复
  15. xz

    请问未啥变换登陆ip较频繁时,常常无法发送群信息(提示超时)?

    其实对象化以后,可以用wx-devcpp做一个漂亮的界面,dos太丑也不方便啊.

    回复
  16. amoblin

    linux下编译有问题,去掉-Wall也不行。我发现是printf的问题,少加了”%s”,MSG的宏定义也是printf,全部都要加”%s”。再去掉-O选项,编译就成功了。我的系统为Ubuntu Jaunty.还有,我希望把这个的linux开发放google code上去可以吗?我希望邮件联系详谈。

    回复
  17. q0000x

    有个地方很不好,就是用户在打字时还没打完如果来消息了DOS QQ会自动把没打完的消息给发出去,希望能改进一下

    回复
  18. 不能编译``

    myqq.c: 在函数‘setcolor’中:
    myqq.c:164: 错误: 格式字符串不是一个字面字符串而且没有待格式化的实参
    myqq.c: 在函数‘buddy_msg_callback’中:
    myqq.c:474: 错误: 格式字符串不是一个字面字符串而且没有待格式化的实参
    myqq.c:482: 错误: 格式字符串不是一个字面字符串而且没有待格式化的实参
    myqq.c: 在函数‘qun_msg_callback’中:
    myqq.c:515: 错误: 格式字符串不是一个字面字符串而且没有待格式化的实参
    myqq.c:525: 错误: 格式字符串不是一个字面字符串而且没有待格式化的实参
    myqq.c: 在函数‘main’中:

    回复
  19. zdq1982

    你的程序在大量并发信息面前就报错,比如离线后的大量信息在程序启动的时候 该程序接收重复的信息同理 发送的一样!请问你主要没有 小虾!

    回复
  20. starkwong

    您好,我是 MirandaQQ 的開發者 Stark Wong。由於 libeva 已停止開發,我想在 MirandaQQ 裡使用您的 myqq 作為後台,並會在選項裡說明版權資訊及鳴謝。不過您的程式碼裡並沒有註明授權方式,所以我想問一下是否可以 GPL 方法把我的插件及修改過的 myqq 程式碼 (主要是修改給 MSVC 編譯) 發佈至 sourceforge 裡呢?

    回复
  21. node

    Failed to send the packet. command: 58
    myqq3.14版本一段时间后容易出现上面内容,
    log:00:00:05 [src/packetmgr.c]packetmgr_check_packet(347): resend packet cmd: 58
    myqq3.13版本没有此问题

    回复
  22. cocobear

    试着用google code对项目进行一个管理,这样可以对不同的版本做记录,每次更新都可以比较与上次的代码变化。方便自己与他人。

    回复
  23. fwnl

    MyQQ 能不能可选使用默认的字体颜色呀,字体颜色太多了,窗口容易被boss发现,如果是默认字体颜色再能加上cls清屏命令,这样偷偷上qq就不容易被发现了,谢谢

    回复
  24. Yewanth.Gan

    49F: starkwong 发表时间:2009-06-15 19:02:47 邮箱:[email protected]
    您好,我是 MirandaQQ 的開發者 Stark Wong。由於 libeva 已停止開發,我想在 MirandaQQ 裡使用您的 myqq 作為後台,並會在選項裡說明版權資訊及鳴謝。不過您的程式碼裡並沒有註明授權方式,所以我想問一下是否可以 GPL 方法把我的插件及修改過的 myqq 程式碼 (主要是修改給 MSVC 編譯) 發佈至 sourceforge 裡呢?
    没有想到Stark Won已经来这里留言了,
    希望Huang Guan能够尽快答复,因为你所做的正深刻影响着其他几个QQ相关的开源项目!

    回复
  25. Xiaoxia

    只要不是以营利或非法用途为目的,任何人都可以对MyQQ代码进行无限次复制、修改、增减,然后以GPL或其它协议发布修改的版本。

    回复
  26. starkwong

    發現一個小問題,不知道你們發現了沒有
    在 3.14 版 prot_im.c 裡的 prot_im_recv_msg() 函數,QQ_RECV_IM_BUDDY_09 和 QQ_RECV_IM_BUDDY_09SP1 的條件都漏加了 break;

    回复
  27. Xiaoxia

    谢谢starkwong大牛,新版本刚更换了协议。我一时仓促,犯大毛病了。我之前向你给的邮箱地址发过两封电子邮件,但没有收到回复。没有联系上你。

    回复
  28. kumi

    linux上怎么会出现如下的错误,已经成功登录了。
    To [Nobody]> iconv failed err: Invalid or incomplete multibyte or wide character
    iconv failed err: Invalid or incomplete multibyte or wide character
    iconv failed err: Invalid or incomplete multibyte or wide character
    iconv failed err: Invalid or incomplete multibyte or wide character
    iconv failed err: Invalid or incomplete multibyte or wide character
    iconv failed err: Invalid or incomplete multibyte or wide character

    回复
  29. Xiaoxia

    To kumi, Linux下的版本有待完善。 以前退出问题曾经解决过,pthread_join问题,后来可能是修正的代码又丢了,或者在Linux下没有更新到Windows上去。

    回复
  30. 黑孩儿

    现在学习Web应用开发,准备基于你的libqq写一个轻量级的,可以运行与android chrome浏览器的web qq。

    回复
  31. 西风

    测试了一下,运行比较完美,消息实时性很好,唯一的缺憾是无法获得离线消息。最悲剧的不仅是不能获得离线消息,而且下次再从腾讯qq登陆,也不会再收到离线消息了!个人觉得离线消息的意义还是非常大的,可以说是影响terminal qq实用性的最大因素,建议接下来可以考虑下这方面的研究。

    回复
  32. gzdanny

    谢谢你的分享,你的这份代码对我和其他M8用户意义重大!我是魅族论坛的版主,负责软件板块及开发群的管理,请问可以加你QQ聊下吗?

    回复
  33. zengbo

    在 linux 下读取好友列表,当好友名字比较怪异时会出问题。
    因为 GBK 包含的字还是不够,应该将 utf8.c 中 gb_to_utf8 函数 中的 GBK改成 GB18030

    回复
  34. Xiaoxia

    to zengbo,好提议。。。

    我计算机未学好,一直有个误解,以为GBK就是GB18030了,其实不然。T_T

    回复
  35. Giket

    to 小虾,这个myqq在接收信息的时候,如果第一次接收的数据比第一次的短,就会把第一次的内容也给显示了,这一点是不是bug?我在linux下用的。

    回复
  36. Xiaoxia

    这个在windows上好像没有发现,可能是Linux下的bug。也可能与具体环境(特别是iconv)有关,可以在下个版本修正一下。

    回复
  37. wg2bread

    因为工作原因也在分析qq的协议,也是0x1663的sp1版本,分析0xdd这个包的时候调试的头都晕了,四处找协议找到你的来对比,不过不知道为啥你代码里的和qq发送的完全不是一个结构,但你的还能正常使用,比较迷糊,继续调试- -b

    回复
  38. cole

    使用了你的myqq,感觉工作正常,代码设计的也不错,不知道能否提供一个java的版本,或者使用jni技术封装一个java的版本

    回复
  39. 王者归来

    请问小虾,你的协议是怎么分析的?用了什么工具吗?我想分析下qq宠物企鹅的协议,做个精简的客户端。谢谢

    回复
  40. Derek.Jaa

    小虾写的太好了

    正在用Java重写小虾你的代码,希望能够包装一个jar方便使用Java的开发者

    想知道你是如何进行协议分析的

    另外提个建议,代码的注释不够全面和清晰阿

    回复
  41. akon47

    你好,看了您的G3QQ,感觉做的很棒,眼下希望可以和你讨论另外一个网站的第三方软件的开发事宜,不知是否有兴趣,谢谢。

    回复
  42. Xiaoxia

    googlecode是需要svn来下载代码的,你需要安装svn才能得到代码。http://code.google.com/p/myqq3/source/checkout,当然,也可以在线浏览代码和修改日志的。

    回复
  43. untosil

    我正在使用你的libmyqq 移植android 基本都可以使用了.
    但是有几个问题.
    1.如果群成员太多,性能大幅下降.
    我想只更新群成员的name 但是prot_qun_get_membername 方法好像又问题,不能取到名字.
    2.和前面有人提到的一样.
    经常出现下面问题,导致程序挂掉
    Failed to send the packet. command: 58
    myqq3.14版本一段时间后容易出现上面内容,
    log:00:00:05 [src/packetmgr.c]packetmgr_check_packet(347): resend packet cmd: 58
    myqq3.13版本没有此问题

    回复
  44. 风雪浪子

    Hi,首先很佩服你,很牛,我现在正在用你的myqq,但是我发现一个问题,就是从拍拍网,等其他地方来的临时会话消息没有做处理, 看能不能做一些改动呢? 消息类型是8d

    我抓了个包看了下,代码里面是没有处理这种消息:

    …..+…….>.. 02 01 00 00 CE 2B 86 A2 86 87 BC FA 92 3E D2 B2

    .q.rvZ………” 9D 71 8E 72 76 5A 8B 01 92 D1 F0 AF B6 05 83 22

    ..U..d…i..{.b. A6 94 55 B4 82 64 1B DB 9D 69 D3 9C 7B 7F 62 C2

    .6)….B%……k 11 36 29 F8 C2 C5 AC 42 25 99 C2 EF 80 BF CB 6B

    …..|..K…..oR D1 CE F8 AF DA 7C F2 E9 4B E8 C2 84 D5 FC 6F 52

    …@.K…P.k…m 87 A9 C0 40 12 4B FA CE C0 50 BA 6B AD F2 A9 6D

    `.7.y…..u..M.. 60 D1 37 9F 79 D2 B4 AB B7 94 75 E0 F9 4D AB A0

    […..pq…….. 5B C1 DE B4 E0 94 70 71 1C 93 8B 0F E9 AC B6 DD

    .7..n,.Z..=s.Q.. 8B 37 D5 D0 6E 2C F5 5A 9C FD 3D 73 F9 51 EC CC

    ……….`….R 13 C9 10 BF 17 EA EF A2 90 C9 60 ED 0A 96 91 52

    QJS3…p.k.S.qyp

    回复
  45. Xiaoxia

    呃。。。 遇到没处理的包,log日志应该会记录下来,建议打开PacketLog开关。 然后未处理的包会被记录下来。

    回复
  46. 风雪浪子

    你好,开启了packlog了,收到以下消息时为拍拍网上点过来的临时会话消息,没有做处理

    process_packet(199): [522018443] recv packet ver:100 cmd: ce seqno: 7f0f

    15 9e 70 f4 1f 1d 5e 8b 00 03 cb 04 db 85 30 91 1f 40 00 8d 00 00 00 00 00 75 01

    01 13 00 00 00 00 00 00 00 00 00 38 9d 53 fa 71 fd 5c bf 11 89 20 d4 54 e6 56 4

    a 7b 41 94 9a 02 ba 57 13 2d 1d 17 63 de 9e 22 c6 b8 9a 1d 4f 6f 8a e1 79 75 23

    56 ad ab 8f 62 3a cd e0 fa cf 8e 26 5c 0c 35 00 2e 00 1c 01 13 01 00 4a f6 6f bc

    00 00 03 84 1f 1d 5e 8b 15 9e 70 f4 00 00 00 07 4a f6 6f fd 00 00 00 00 00 00 0

    0 00 1f 1d 5e 8b 00 00 00 04 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 19 0f

    15 9e 70 f4 1f 1d 5e 8b cb 3a 62 fa 91 9f 47 a3 3b 90 72 e8 5e 9b 09 b7 00 0b 5b

    64 4a f6 6f fd 00 00 00 00 00 01 01 00 00 00 01 4d 53 47 00 00 00 00 00 4a f6 6

    f fe 15 a3 19 4b 00 00 00 00 15 00 86 00 00 06 e5 ae 8b e4 bd 93 00 00 01 00 13

    01 00 10 61 73 64 66 61 73 64 66 61 64 73 66 61 73 64 66

    回复
  47. 风雪浪子

    大哥,能分析一下这个包吗?多谢了急…

    process_packet(199): [522018443] recv packet ver:100 cmd: ce seqno: 7f0f

    15 9e 70 f4 1f 1d 5e 8b 00 03 cb 04 db 85 30 91 1f 40 00 8d 00 00 00 00 00 75 01

    01 13 00 00 00 00 00 00 00 00 00 38 9d 53 fa 71 fd 5c bf 11 89 20 d4 54 e6 56 4

    a 7b 41 94 9a 02 ba 57 13 2d 1d 17 63 de 9e 22 c6 b8 9a 1d 4f 6f 8a e1 79 75 23

    56 ad ab 8f 62 3a cd e0 fa cf 8e 26 5c 0c 35 00 2e 00 1c 01 13 01 00 4a f6 6f bc

    00 00 03 84 1f 1d 5e 8b 15 9e 70 f4 00 00 00 07 4a f6 6f fd 00 00 00 00 00 00 0

    0 00 1f 1d 5e 8b 00 00 00 04 00 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 19 0f

    15 9e 70 f4 1f 1d 5e 8b cb 3a 62 fa 91 9f 47 a3 3b 90 72 e8 5e 9b 09 b7 00 0b 5b

    64 4a f6 6f fd 00 00 00 00 00 01 01 00 00 00 01 4d 53 47 00 00 00 00 00 4a f6 6

    f fe 15 a3 19 4b 00 00 00 00 15 00 86 00 00 06 e5 ae 8b e4 bd 93 00 00 01 00 13

    01 00 10 61 73 64 66 61 73 64 66 61 64 73 66 61 73 64 66

    回复
  48. errNg

    resend packet cmd: 91

    [xxxx]Failed to send the packet. command:91

    网络错误。

    虾哥,这是什么意思?登录一直不成功

    回复
  49. ziyue

    应该是可以发起临时会话的啊

    在浏览器地址栏里输入http://wpa.qq.com/msgrd?V=1[AND]Uin=1224651844

    就可以临时会话啊

    QQ2008可以,2009没试

    回复
  50. Lee

    你用Dev-C++ 4.9.9.2编译myQQ3.19,编译完运行时如下情况:输入QQ号和密码后回车,提示”登陆中…”然后就是”网络错误.”,如果密码输入错误会提示密码不对.请问一下,是什么原因?

    回复
  51. Lee

    我用Dev-C++ 4.9.9.2编译myQQ3.19,编译完运行时如下情况:输入QQ号和密码后回车,提示”登陆中…”然后就是”网络错误.”,如果密码输入错误会提示密码不对.请问一下,是什么原因?

    对不起,上面的帖子错了一个字…重发一遍吧

    回复
  52. Xiaoxia

    to dry, 试试把loop的大小改大一些。的确会存在信息量大的时候会自动抛弃一些包。
    但我认为你指的不是这个问题,你是不是说信息显示不全?

    回复
  53. McKing

    大小虾,对你膜拜一下先. 能不能指点一下如何获得好友的IP(大概code的位置)?

    我尝试了好多地方, 无论包里你分析出来的, 还是用getpeername(),取到的IP都不对…

    谢了.

    回复
  54. Xiaoxia

    qq聊天不是p2p的,你很难得到别人的ip吧。。。
    除非你发现了某些漏洞,嘿嘿~
    不过现在如来神掌好像还是可以使用的。

    回复
  55. McKing

    thanks. 你说的是LumaQQ吧.

    我想, 总有些p2p的时刻吧. 难道每个聊天, 一方的信息都要发到腾讯的服务器上,然后服务器再发到另一方? 这样也太笨了吧.

    回复
  56. Xiaoxia

    呵呵,楼上有所不知。现在的p2p聊天工具很少。
    和电子邮件一样,现在你使用qq发的每一条信息都需要在服务器监控和记录的,不然公安机关怎么破案呢? 就比如你开个群讨论反 动的东西,很快就被封了。
    你在网上必须要对自己的一言一行负责人,现代社会没有绝对的自由。

    回复
  57. vaglab

    我下了你的最新程序,发消息时为什么不能发送换行呢。有点不爽,如果能发换行就好了。哈哈~~,不知能否改进下?

    回复
  58. 有点无语

    Linux下问题多多啊……,GMYQQ和MYQQ每个版本都试过了……没一个可以不改直接编译成功的……

    回复
  59. fillu

    OH.刚发现,原来都在这边讨论的.

    我跟着你的思路去分析研究,到了 0X30 这个包时有些字节不知怎么来的.不知可否请教下.

    还记得 这个包里的

    0x30 Login Information

    客户端

    里面这些00后面的那18个字节是怎么得到的?

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    62 0C 12 15 53 7E 9F 12 A9 46 BC 54 41 C1 09 53

    62 0C 12 15 53 7E 9F 12 A9 46 BC 54 41 C1 09 53 这个怎么得到?

    回复
  60. fillu

    还有想问下,不知是否有朋友知道 ,打开QQ空间的那个 64位的clientkey 

    和 ADSESSION  

    这两个值 跟 Session Key 是什么关系?

    怎么取这两个值进入QQ空间?  clientkey 是一定时间内会变的

    回复
  61. Xiaoxia

    to ls, 这些问题我没研究过,可能需要你自己分析或者问tx算了。文档有问题的话,看代码最直接了当。(代码注释不多,是我的错。)

    回复
  62. fillU

    这些东西TX哪会告诉。晕。

    只是好其而已。因为它越保密,就对它越好奇

    那18个字节原来是固定的。

    想知道它客户端上点QQ空间时生成的clientkey 

    和 ADSESSION  

    是怎么得的。  在客户端点图标时,没跟踪到有 02 开头的包。 就直接是生成了 clientkey .  所以 我感觉 这个KEY好像不是从服务器反回来的。但自己技术实在有限,呵呵。 就在这里发表下,看有没有朋友分析过 这两个KEY

    回复
  63. Xiaoxia

    to zengbo, 加好友功能貌似就没完善。
    to 辉,检查一下服务器ip和防火墙。
    to McKing, 估计是发送自定义表情或者图片,这样就和对方建立一个点对点连接,ip就有了。

    回复
  64. Xiaoxia

    to 0xff, 应该是差不多的吧,没啥变化吧。08和09主要差异还是在登录和消息聊天方面。
    to 辉,要看具体平台的。在linux下应该可以直接使用了,没防火墙。windows上就不知道你装了啥杀软、防火墙之类的东东呢……

    回复
  65. 0xff

    xiaoxia能说出详细的地方么? 我试了0x30登陆状态后面的几个字节的配合..还是不行..还是没摄像头..谢谢了

    回复
  66. 天堂

    145F: 野马 ctime: 2010-01-17 11:22:09 address: *hidden*

    clientkey 不难得到~` 主要是~~myqq登陆了一定数量QQ 会出现所有号码都验证码

    怎么得到?

    回复
  67. maemo_user

    xiaoxia, 可以考虑将myqq移植到nokia maemo 5中么,debian核心的?或者更新一下pidgin的QQ协议,现在2008很不稳定,谢谢.

    回复
  68. xingchen

    小虾能不能加个提示音,以前MINIQQ那个提示音满拉风的,然后在config里可以控制开关,相信很多人需要的

    回复
  69. Xiaoxia

    提示音?? 不好搞吧。。。又兼顾多平台。
    to 157F, 不必每次都输入S的。只要上一次输入了即可。

    对不起大家,MyQQ3.x 已经停止开发了。

    回复
  70. 我是新人

    请问这个怎么编译啊?用VC++6.0编译吗?没装lunix,想用windows编译一下,体验一下,弱弱的问下都用什么工具编译

    回复
  71. xy

    难得xiaoxia每天看留言,
    根据网上查的,3.19应该是2009 sp1 版本 (0x1663)

    在获取群的信息的时候,非常郁闷的是,在parse_quninfo方法中,不明白if( status == 3 ) 这个是做什么用,同时,我在用我的代码(非myqq)调试时,不等于3,而是为0,
    还有一点,在读q->owner = get_int( buf ); 这个时,我在调试时,发现跟type是一起的,而不是在中间get_int( buf )抛掉了4个字节
    难道代码不一样?寒。。。

    回复
  72. Xiaoxia

    To xy,
    那个status是不是用来区分是群信息的第一个包还是后续包呢? 更具体的协议内容我也忘记了。 看下文档看看。 版本不同,内容也可能不同的,很郁闷。 我也懒得去研究。

    回复
  73. xy

    我没有文档哦,就是拿着别人的代码和你的代码在看,我是用的c#,对c根本看不懂,看到一个运算符或函数,都要谷歌一下,目前来说,我是参照你的2008的分析文档在看,你那个2009 pre 4的文档你说是错的,我也不知道在哪里去找文档。
    如果你有2009的文档,不胜赐教。。。

    回复
  74. xy

    我的c#代码也登陆不上,我自己的QQ就是好友非常多,超过500

    myqq的日志文件中记录不知道是什么意思,我贴上。。

    00 63 01 3d 00 00 01 18 00 00 00 00 00 57 e6 82 a8 e7 9a 84 e7 bd 91 e7 bb 9c e7 8e af e5 a2 83 e5 8f af e8 83 bd e5 8f 91 e7 94 9f e4 ba 86 e5 8f 98 e5 8c 96 ef bc 8c e4 b8 ba e4 ba 86 e6 82 a8 e7 9a 84 e5 b8 90 e5 8f b7 e5 ae 89 e5 85 a8 ef bc 8c e8 af b7 e9 87 8d e6 96 b0 e7 99 bb e5 bd 95 e3 80 82 00 00
    23:13:47 [src/qqpacket.c]get_data(125): packet p->pos(46)+58554 > p->len(103)
    23:13:47 [src/qqpacket.c]get_data(125): packet p->pos(51)+229 > p->len(103)
    23:13:47 [src/prot_login.c]prot_login_get_info_reply(370): Hello, 88014334
    23:13:47 [src/protocol.c]post_packet(39): [88014334] send packet cmd: a4 seq: 55
    01 01 00 00 20 8f fa a1 ed c1 62 08 d4 33 2a 7d 08 09 52 ed 3f 14 b8 23 0d 4d 77 49 11 c7 72 68 d3 77 ea 2a e5 10 03 c8 ec c8 96 8b f2 b3 6b 4d 0c 5c e0 6a 51 ce
    23:13:47 [src/protocol.c]process_packet(199): [88014334] recv packet ver:1663 cmd: a4 seqno: 55
    01 00 01 03 3c 01 03 00 00 87 db 01 a9 77 b5 da 40 21 42 d3 8d cc 3d 05 54 86 dd 10 6c f6 93 e7 c9 77 e1 7f cb bd 88 14 18 2e 42 02 5e 6b ec 06 c7 a7 d6 9e 25 ae ba 19 2e 37 50 f2 fe 11 3b 6a 10

    回复
  75. Xiaoxia

    可能是协议问题吧,协议有误帮不了你啦。协议没可能完美,毕竟是黑匣子分析出来的东西。

    回复
  76. xy

    没有,我用的c#做的,我不会c

    那个问题,我通过不同的号码登陆进行测试,原因可能是QQ号码在TX申请了密保(防止异地登陆的那个)
    我增加的这个动作,就是在收到的包中取得了一个令牌数据,其它都丢掉,反正也不知道是什么意思。。哈哈

    回复
  77. abba

    请问带有图像的消息,如何获取其中的图像?
    你源码里get_token( buf, &tok_pic ); tok_pic并没有被进一步处理。
    另外,我身边的人不论老少都在用qq,或者手机或者电脑上,希望你能把myqq继续下去。
    谢谢!

    回复
  78. abba

    请问带有图像的消息,如何获取其中的图像?
    你源码里get_token( buf, &tok_pic ); tok_pic并没有被进一步处理。
    另外,我身边的人不论老少都在用qq,或者手机或者电脑上,希望你能把myqq继续下去。
    谢谢!

    回复
  79. 小卢

    用了您的软件,感觉很强大,嘿嘿,请问myqq可以加上删除QQ的命令吗?因为原版的现在删QQ实在是太恶心了,没法批量删,期待您的回复….

    回复
  80. cqwty

    我也在搞这个东西,也是看了他们的分析的,不过最新的版本的协议又有所改动了,而且10位的qq号也马上就要耗尽了,估计腾讯也在准备11位的qq号了,我用2008版本的协议已经写了个登陆,然后可以聊天的出来了。目前正在分析2010版本的协议。希望和大家一起交流。

    回复
  81. burn

    请问MyQQ的源码可以在ARM系列CPU(主要是一些嵌入设备,比如路由器)的Linux上编译吗? 要是可以,拿个路由器也可以挂QQ了,哈哈

    回复
  82. Rothsdad

    编译出错!!
    [rothsdad@Joshua src]$ make
    gcc -c -Wall -O -Werror -o qqsocket.o qqsocket.c
    gcc -c -Wall -O -Werror -o qqcrypt.o qqcrypt.c
    gcc -c -Wall -O -Werror -o md5.o md5.c
    gcc -c -Wall -O -Werror -o debug.o debug.c
    gcc -c -Wall -O -Werror -o qqclient.o qqclient.c
    gcc -c -Wall -O -Werror -o memory.o memory.c
    gcc -c -Wall -O -Werror -o config.o config.c
    gcc -c -Wall -O -Werror -o packetmgr.o packetmgr.c
    cc1: warnings being treated as errors
    packetmgr.c: In function ‘packetmgr_recv’:
    packetmgr.c:266:6: error: pointer targets in passing argument 1 of ‘strstr’ differ in signedness
    /usr/include/string.h:340:14: note: expected ‘const char *’ but argument is of type ‘uchar *’
    packetmgr.c:279:7: error: pointer targets in passing argument 4 of ‘print_error’ differ in signedness
    debug.h:18:6: note: expected ‘const char *’ but argument is of type ‘uchar *’
    make: *** [packetmgr.o] Error 1

    回复
  83. Rothsdad

    我的编译环境:
    Linux Joshua 2.6.33-ARCH #1 SMP PREEMPT Thu May 13 12:06:25 CEST 2010 i686 Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz GenuineIntel GNU/Linux
    gcc (GCC) 4.5.0

    回复
  84. Xiaoxia

    这些都不是很严重的问题吧,尝试把强制类型转换关掉。或者,把出错的那几行添加一个类型转换。

    回复
  85. xiaodong

    小虾你好,请问怎么判断qq的连接断开呀?我想在qq掉线的时候打印到窗口上,要怎么做呀?想的头都大了!给个办法吧,谢谢

    回复
  86. silent

    exit/x在linux下好像不能退出程序,
    我修改了一下: packetmgr.c , 不知道有没有什么问题.
    void packetmgr_end( qqclient* qq )
    {
    qqpacketmgr *mgr = &qq->packetmgr;
    qq->process = P_INIT; /* break the loop */
    pthread_join( mgr->thread_recv, NULL );

    另外, 运行的时候偶尔出现
    Failed to send the packet. command: 58

    回复
  87. Xiaoxia

    @silent, 你说的这个问题存在。你的修改应该没问题:)
    出现发送失败,可能是协议有问题了。不知道能不能把那个发送禁用掉。

    回复
  88. Xiaoxia

    @xiaodong, 可以看一下UNIX Socket的开发资料。对于阻塞式的socket,在send或者recv的时候会返回0或者-1,0表示收到对方断开的消息,-1表示出错,一般是本地强制断开了。

    回复
  89. xiaodong

    小虾,你好。关于连接断开的问题还是不明白。我在循环中加入printf("%s","aaaaaaa"); 在登陆的时候会打印字母 aaaaaaa ,但是当我断开连接或者是 用qq重新登陆强迫他下线的时候程序不打印 字母 aaaaaaa。这样怎么判断他断开呢? 谢谢。

    void* packetmgr_recv( void* data )
    {

    。。。。。。。。。。。。。。。。

    while( qq->process != P_INIT ){
    ret = qqsocket_recv( qq->socket, recv_buf, PACKET_SIZE-pos );
    if( ret <= 0 ){

    printf("%s","aaaaaaa");

    if( qq->process != P_INIT ){
    // DBG("ret=%d", ret );
    SLEEP(1);
    continue;
    }else{
    break;
    }
    }

    。。。。。。。。。。。。。。。。。。。。。。。。

    DEL( recv_buf );
    packetmgr_del_packet( mgr, p );
    DBG("end.");
    return NULL;
    }

    回复
  90. Xiaoxia

    @xiaodong,因为socket还没有断开,下线了可能只是收到一个状态改变的通知。你可以检查一下是否收到系统消息的。

    回复
  91. webdi

    Xiaoxia,有接收陌生人信息的相关分析么?
    我测试了一下,陌生人的信息的信息类别,打印出来是8d
    可惜我是菜鸟,想继续分析,暂时无从入手。
    比如,我发一个1的信息,收到的应该是如下:
    02 16 63 00 17 00 9E 3C 75 8A 6E
    B8 6C B4 06 2A 41 B8 EE 2E A7 7C 55 5E 18 56 8E 信息?
    73 A0 00 27 DA DE 50 8C F7 1D 98 39 73 F6 40 70
    03
    请教,是如何解密哈?
    您是否已有分析哈?mail一下?

    回复
  92. Xiaoxia

    没有。。。不感兴趣!
    分析比较麻烦,你要用session key来解密,得到这个东东很麻烦。。。

    回复
  93. ONLINE

    我想问下
    1 QQ ONLINE是小虾你的作品不 里面的DLL可以多线程调用不
    2 QQ的cl1entkey你已经找到了没 没的话我可以M我 我知道
    当然回报是 给一份可以调用KEY的DLL
    QQ 335653350

    回复
  94. Xiaoxia

    @227F, 是多线程的。 软件是开源的,你可以自己更新。我已经不再研究这个协议, 所以也没啥好回报的说。

    回复
  95. xiaodong

    小虾你好,上面你说qq下线了可能只是收到一个状态改变的系统通知。对方关闭连接后是不会给发送信息的把,那是在什么情况下触发系统给程序发送通知信息的呢。实现代码在myqq中有吗?

    回复
  96. Xiaoxia

    @xiaodong, 通知先在protocol.c得到,然后交给prot_im.c里作为系统消息处理吧。对方关闭连接时知道的,就是在recv中返回0值。

    回复
  97. xiaodong

    小虾你好。请问你写的qqonline软件,选中多行登陆上线的时候,怎么实现多帐号同时登陆的呀,我用myqq稍微改了下,想自己做个山寨版qqonline。但是我选中多行登陆上线的时候,只能一个一个登陆(我用的是发送notify消息),怎么实现多帐号同时登陆的呢?谢谢。

    回复
  98. Lana

    小虾你好,我用你的3.19版稍微做了修改,就是将群聊天记录保存为文本文件,用另一个程序进行分析整理,一直很好用,对我的工作帮助太大了,可是最近发现登录老是提示网络错误,而且用的那个QQ号码,用tx的登录也提示限制登录,到底怎么回事啊?

    回复
  99. Xiaoxia

    @Lana:我很就没有更新过协议了,而且估计以后也不不会更新。所以什么时候不能使用了,也算是正常情况吧!

    回复
  100. xiaodong

    你好,Xiaoxia,我用myqq模仿 qq2010协议登陆,登陆成功后qq的在线状态怎么不改变呀?还是灰色的,我发送 0A命令服务器也不响应,是什么原因呀?我用它登陆一个正常登陆的qq号,那个qq号也会显示你的qq在另一地点登陆,你已经被迫下线,但是myqq的登陆状态怎么还是灰色的呢?

    回复
  101. 呜呼哀哉

    请问一下为什么我编译后的MYQQ怎么样都无法给群里发信息 只能收信息 不知道各位高手有没有遇到过, 希望小虾大师有好的解决办法么?让MYQQ再次完美啊

    回复
  102. ck

    噢,谢谢回复,给你EMAIL发过信,可是没见有回音,终于这里看到你答复了,呵呵,,好像现在腾迅改了什么,myqq3.21登陆上去没一会,就掉了。

    回复
  103. John

    在使用 prot_login_logout(qq); 下线的时候,再次上线,还会收到上次的消息,这是为什么呢? 谢谢!

    回复
    1. Xiaoxia 文章作者

      上次没有完成消息的接收过程吧。或者上次接收的时候发送的答应消息服务器没有收到。

      回复
        1. Xiaoxia 文章作者

          这个myqq的源代码里有收到消息后发送ack包的。出现你说的情况要么是没有成功发送,要么协议失效了。

          回复
        1. Xiaoxia 文章作者

          暂时没有时间。为了搞兴趣上的一些东西,我课堂的所有课程都落下来了。还未有时间补。

          回复
  104. 方片

    现在很多人在网上卖QQ机器人,看了下,应该是在你的源码基础上做的,尤其是im.jecat.cn那个。

    回复
  105. byNai

    用VPS挂上该软件,打开的是乱码、还有个问题就是,输入帐号输入密码之后,在是否隐身这一行上,怎么敲回车都不行、

    回复
  106. wqwork

    能不能给它加个简单的界面,这样用起来就方便了很多,现在QQ不停的升级对电脑要求越来越高,像咱们这种人实际的要求并不是那么高,就算拿0825版的QQ也一样可以用起来而且速度很快,或者能不能做个可以使用旧版QQ的简单教程。谢谢!

    回复
  107. 石仔

    如果我没记错的话,我第一次看到MyQQ-0.1的源代码是在2008年CSDN的一个帖子上。那时我还看到你的主页上有QQ协议分析。但现在主页和邮箱地址都变了。QQ协议分析还有存档吗?

    回复
  108. 石仔

    从分类目录里找不到,在搜索栏以“QQ协议”为关键词也搜索不到。在google里以:
    QQ协议 site:xiaoxia.org
    搜索,倒是搜索到一些,但不知全否,先看着,谢谢。
    (顺便提一句,不要骂我哦:MyQQ代码里很多神奇数字,很多功能不是很紧凑的代码放在同一个函数,很眼花 @.@)

    回复
  109. 黑孩子

    为何放到VPS 里面编译出来的是 乱码啊。。。。消息没法阅读。。。

    额。这个是用的什么 编码格式的啊。。。。囧

    回复
    1. Xiaoxia 文章作者

      使用的是utf8编码。
      如果你的linux终端不是utf8的话,会有乱码的。基本上linux默认的编码都是utf8,windows是ansi或unicode

      回复
  110. 菜鸟

    [Linker error] undefined reference to `qqconn_connect’
    [Linker error] undefined reference to `qqconn_establish’
    [Linker error] undefined reference to `qqconn_connect’
    [Linker error] undefined reference to `qqconn_load_serverlist’
    [Linker error] undefined reference to `qqconn_get_server’
    [Linker error] undefined reference to `qqconn_connect’
    [Linker error] undefined reference to `qqconn_establish’
    windows下dev-c++4.9.2编译衔接myqq3.17出错了,请问这是怎么回事呢?多谢指教

    回复
  111. stone

    请问小虾:如何调整pthread库里的最大线程数?我修改了PTHREAD_THREADS_MAX和stack_size后,还是不能提高最大线程数。我是用mingw在windows下编译的

    回复
      1. stone

        我直接调用的myqq的动态库,但是最多只能登陆900个多一点,再多就提示无法创建线程了,我想可以做到登陆3000个

        回复
  112. stone

    是否每个qq占用2个线程?所以最多只能登陆900个左右?pthead.h里PTHREAD_THREADS_MAX默认设置的是2000多,我改成8000多以后还是没用

    回复
    1. Xiaoxia 文章作者

      啊!这个我没研究过了。。。既然你需求那么大,你干脆就直接放弃线程,使用异步socket或者使用进程算了。

      回复
        1. Xiaoxia 文章作者

          没关系~希望能解决你的问题。
          从myqq获益的人可多了,但是用了我的代码跟我说声的,少之又少唉!中国开源的道路不好走。

          回复
  113. jack_fong

    你好 我在使用调试你的代码的时候 只有我自己的号码可以登录 其他号码都无法登录

    我的号码是会员 与这个有关系吗?

    服务器返回了Denied 51 提示貌似是 没有权限登录

    回复
  114. X

    把myqq3.19放进了VPS
    装了进去
    我的显示也是乱码
    用的捷克免费VPS
    请问怎么解决这个问题
    是字体问题还是编码问题?
    百度、Google也没有找到答案
    打扰了
    请闲时为我解答下
    谢谢

    回复
  115. Wyane

    小虾,请教下,我用vps挂
    登录后然后关闭(重启vps或重装vps后),然后重新登录登不上
    第三行成了下面这个,输入no 回车也不行。。一直停在这里,请问要如何解决呢?谢谢

    QQ璐??123456
    QQ瀵?:

    回复
    1. 一零八八

      起初我也不知道,发现是第一步帐号,第二部密码,第三步是隐身y,第四步我在vps上是出的验证码,输入验证码,回车就ok,验证码图片在文件夹里

      回复
    1. Xiaoxia 文章作者

      都什么时候的东西了,一年前没有出现问题,那套协议已经算走运的了。现在才出现问题还是迟了点。我都那么久没有碰过了。

      回复
        1. fwnl

          用dev-c++ 4.9.9.2 编译成功了,myqq3.21版可以正常使用, 对我这种外行来说还是这个用这个编译简单,MinGW痛苦不堪

          回复
          1. 冰冰

            各位哥哥 能够给妹妹一份新版本的批量挂Q吗 我在公司现在使用小虾哥哥的09版本 提示 “网络错误” 非常感谢 我我QQ48874887

            回复
  116. wuddy

    小虾,你好!QQ2011版本的协议变化很大,DD包里120个字节的key,不再是密码的两次的MD5!我想加入新版的支持,但是就是卡在这里了。智商有限,小虾帮忙分析下吧。

    回复
      1. wuddy

        NND,腾讯怎么老是换协议啊。能对腾讯客户端反汇编,分析下它是怎么做的吗,我在这方面没经验啊,小虾有空分析下吧!

        回复
  117. 往昔

    小虾老师,我已经编译好了myqq3.21 for windows. 但是一个问题还是没解决.
    就是向QQ群发信息的时候,还是用的内部群ID ,不是用的QQ群号.这个能帮忙解决下吗? 在获取群列表里,能正常获取群内部ID和群号码. 在指向QQ群发信息的时候,只能指向群内部ID, 指向QQ群号码无效….

    回复
  118. leeyu

    你好,想问下你的程序中thread+loop event的设计框架是自己创造的还是借鉴的?能给个原型例子吗

    回复
    1. Xiaoxia 文章作者

      我不太明白你的意思。myqq在编写的时候没有使用到任何框架,因为对于当时来说只是一个研究协议的实验品,所以只需要满足测试即可。它最初的代码结构是在2008年初写的,跟我现在写的代码风格应该有些许差别。

      回复
      1. leeyu

        很惊讶以及很高兴能这么快看到你的回复
        我想知道的是你写这个的时候用到了一个什么样的程序结构?要换做是我,肯定想不到使用事件啊,环啊。。。想问下你是看过什么其它的代码才有此灵感的?

        回复
        1. Xiaoxia 文章作者

          我想你可能没有深入去阅读代码吧。只是用了pthread的线程库而已。loop.c是一个数据结构来的,一个用链表实现的环形队列。
          平常写些程序都会用到很多数据结构方面的东西啊,写多了,就到处copy来用了(当然,是copy自己的:-) )

          回复
          1. leeyu

            平常确实很少去阅读代码
            很想去写一个很简单的实现应用层协议的程序,但是不清楚从何下手去组织整个程序的结构。。。所以来看myqq源码,发现有很多东西都值得我们学习,所以在此说声感谢!
            能不能推荐一些典型的例子让我看看?这个myqq还没有看完,但是不明白这其中的事件是用来干啥的?想问问你写的时候的思路。

            回复
  119. guanlelennon

    请问大侠qq的加密算法叫什么 看了源代码 似乎非主流 也不是很强啊 密码分析难度大否?

    回复
    1. Xiaoxia 文章作者

      这个不了解。它的随机密钥似乎可以随便起,固定为0都可以通过,没有什么那么要求吧。

      回复
  120. YD

    编译到最后出错了

    gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqconn.o qqconn.c
    windres -i ..\myqq_private.rc -o myqq_private.o
    gcc qqsocket.o qqcrypt.o md5.o debug.o qqclient.o memory.o config.o packetmgr.o
    qqpacket.o prot_login.o protocol.o prot_misc.o prot_im.o prot_user.o list.o budd
    y.o group.o qun.o prot_group.o prot_qun.o prot_buddy.o loop.o utf8.o myqq.o util
    .o crc32.o qqconn.o myqq_private.o myqq_private.o -L”../lib/pthread” -lpthreadGC
    2 -lws2_32 -o ..\myqq.exe
    d:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot fin
    d -lpthreadGC2
    collect2: ld returned 1 exit status
    mingw32-make: *** [..\myqq.exe] Error 1
    mingw32-make: Leaving directory `H:/myqq3/src’

    回复
    1. Xiaoxia 文章作者

      你好,你用的mingw版本没有携带pthread库,你需要安装一个pthread库或者下载一个包含pthread库的编译环境(例如codelite)

      回复
      1. Walter

        你好,我想请教下windows下怎么加载这个库文件?想用codelite,但是没找到workspace
        我下载了pthreads-w32-2-7-0-release.exe,不知道怎么用
        下面是我的报错

        C:\Code_G>make -C src clean all
        make: Entering directory `C:/Code_G/src’
        del *.o
        del ..\myqq.exe
        找不到 C:\Code_G\myqq.exe
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqsocket.o qqsocket.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqcrypt.o qqcrypt.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o md5.o md5.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o debug.o debug.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqclient.o qqclient.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o memory.o memory.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o config.o config.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o packetmgr.o packetmgr.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqpacket.o qqpacket.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_login.o prot_login.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o protocol.o protocol.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_misc.o prot_misc.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_im.o prot_im.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_user.o prot_user.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o list.o list.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o buddy.o buddy.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o group.o group.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qun.o qun.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_group.o prot_group.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_qun.o prot_qun.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o prot_buddy.o prot_buddy.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o loop.o loop.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o utf8.o utf8.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o myqq.o myqq.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o util.o util.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o crc32.o crc32.c
        gcc -c -Wall -O -Werror -I”../lib/pthread” -o qqconn.o qqconn.c
        windres -i ..\myqq_private.rc -o myqq_private.o
        gcc qqsocket.o qqcrypt.o md5.o debug.o qqclient.o memory.o config.o packetmgr.o
        qqpacket.o prot_login.o protocol.o prot_misc.o prot_im.o prot_user.o list.o budd
        y.o group.o qun.o prot_group.o prot_qun.o prot_buddy.o loop.o utf8.o myqq.o util
        .o crc32.o qqconn.o myqq_private.o myqq_private.o -L”../lib/pthread” -lpthreadGC
        2 -lws2_32 -o ..\myqq.exe
        c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/bin/ld.exe: cannot f
        ind -lpthreadGC2
        collect2: ld returned 1 exit status
        make: *** [..\myqq.exe] Error 1
        make: Leaving directory `C:/Code_G/src’

        C:\Code_G>

        回复
    1. Xiaoxia 文章作者

      你好!你的问题应该是,你没有安装pthread运行库,你可以从3.19的版本里提取或者从pthread官网下载。Linux下系统自带这个库。

      回复
      1. zhw

        谢谢!myqq.exe编译成功
        解决了 :)
        如果我要编译l这些文件:ibqq.dll,webqq.dll,simple_libqq.dll,需要怎么做呢?
        用dev

        回复
  121. 往昔

    发送群信息必须是内部ID的问题能否解决下?
    q->ext_number //这个是实际的群号
    q->number //这个就是群内部ID

    我胡乱改了下,在控制台能正确显示,就是发送信息还是只能”e 群内部id” .不懂C ,希望老师们能解决下.万分感谢.

    回复
    1. Xiaoxia 文章作者

      有也没有那么容易被你发现的。这是涉及隐私的问题,不会赤裸裸的传输吧。至少也会编码好几次,直接分析协议不可行,可以从Hook API入手吧。我没研究过,不大清楚。

      回复
  122. icelove

    如果一个QQ好友很多,在运行prot_login.c中的第665行要循环多次,buddy_update_list( qq );
    发现遍历个2-3次TX就给发警告,接着就不行了。
    不知道朋友有没有发现这个问题?

    回复
  123. 果果

    偶尔在一个群里知道了myqq,今天在我的vps上编译,但不成功,不知道是什么问题,希望指导一下,在linux下怎么编译运行

    回复
      1. sos

        prot_login_touch_reply(113): redirecting to 119.147.45.192
        qqconn_connect(192): connecting to 119.147.45.192:8000
        prot_login_request_reply(211): process verify password
        prot_login_get_info_reply(370): Hello, 失败者
        packetmgr_check_packet(376): [2506515223] resend packet cmd: 30
        prot_login_send_info_reply(527): login result = 44
        网络错误.
        qqclient_detach(199): process = 4
        qqclient_logout(216): joining keepalive
        qqclient_keepalive(151): end.

        回复
  124. 出错

    root@home:~/q# make -C src -flinux.mak clean all
    make: Entering directory `/root/q/src’
    rm -f *.o
    rm -f ../myqq
    gcc -c -Wall -o qqsocket.o qqsocket.c
    gcc -c -Wall -o qqcrypt.o qqcrypt.c
    gcc -c -Wall -o md5.o md5.c
    gcc -c -Wall -o debug.o debug.c
    gcc -c -Wall -o qqclient.o qqclient.c
    gcc -c -Wall -o memory.o memory.c
    gcc -c -Wall -o config.o config.c
    gcc -c -Wall -o packetmgr.o packetmgr.c
    packetmgr.c: In function ‘packetmgr_recv’:
    packetmgr.c:266: warning: pointer targets in passing argument 1 of ‘strstr’ differ in signedness
    /usr/include/string.h:340: note: expected ‘const char *’ but argument is of type ‘uchar *’
    packetmgr.c:279: warning: pointer targets in passing argument 4 of ‘print_error’ differ in signedness
    debug.h:18: note: expected ‘const char *’ but argument is of type ‘uchar *’
    gcc -c -Wall -o qqpacket.o qqpacket.c
    gcc -c -Wall -o prot_login.o prot_login.c
    gcc -c -Wall -o protocol.o protocol.c
    gcc -c -Wall -o prot_misc.o prot_misc.c
    gcc -c -Wall -o prot_im.o prot_im.c
    gcc -c -Wall -o prot_user.o prot_user.c
    gcc -c -Wall -o list.o list.c
    gcc -c -Wall -o buddy.o buddy.c
    gcc -c -Wall -o group.o group.c
    gcc -c -Wall -o qun.o qun.c
    gcc -c -Wall -o prot_group.o prot_group.c
    gcc -c -Wall -o prot_qun.o prot_qun.c
    gcc -c -Wall -o prot_buddy.o prot_buddy.c
    prot_buddy.c: In function ‘prot_buddy_get_info_reply’:
    prot_buddy.c:572: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:576: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:580: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:584: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:588: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:592: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:596: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:600: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:604: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:608: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:612: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:616: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:620: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    prot_buddy.c:624: warning: pointer targets in passing argument 2 of ‘get_data’ differ in signedness
    qqpacket.h:43: note: expected ‘uchar *’ but argument is of type ‘char *’
    gcc -c -Wall -o loop.o loop.c
    gcc -c -Wall -o utf8.o utf8.c
    gcc -c -Wall -o myqq.o myqq.c
    myqq.c: In function ‘setcolor’:
    myqq.c:173: warning: format not a string literal and no format arguments
    myqq.c: At top level:
    myqq.c:214: error: conflicting types for ‘getline’
    /usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here
    myqq.c: In function ‘buddy_msg_callback’:
    myqq.c:503: warning: format not a string literal and no format arguments
    myqq.c:511: warning: format not a string literal and no format arguments
    myqq.c: In function ‘qun_msg_callback’:
    myqq.c:544: warning: format not a string literal and no format arguments
    myqq.c:554: warning: format not a string literal and no format arguments
    myqq.c: In function ‘main’:
    myqq.c:682: warning: format not a string literal and no format arguments
    myqq.c:720: warning: format not a string literal and no format arguments
    myqq.c:726: warning: format not a string literal and no format arguments
    myqq.c:730: warning: format not a string literal and no format arguments
    myqq.c:765: warning: format not a string literal and no format arguments
    myqq.c:798: warning: format not a string literal and no format arguments
    myqq.c:805: warning: format not a string literal and no format arguments
    myqq.c:810: warning: format not a string literal and no format arguments
    myqq.c:823: warning: format not a string literal and no format arguments
    myqq.c:829: warning: format not a string literal and no format arguments
    myqq.c:859: warning: format not a string literal and no format arguments
    myqq.c:861: warning: format not a string literal and no format arguments
    myqq.c:869: warning: format not a string literal and no format arguments
    myqq.c:871: warning: format not a string literal and no format arguments
    myqq.c:883: warning: format not a string literal and no format arguments
    myqq.c:886: warning: format not a string literal and no format arguments
    myqq.c:895: warning: format not a string literal and no format arguments
    myqq.c:898: warning: format not a string literal and no format arguments
    myqq.c:915: warning: format not a string literal and no format arguments
    make: *** [myqq.o] Error 1
    make: Leaving directory `/root/q/src’

    回复
    1. Xiaoxia 文章作者

      这是我在博客看过最长的评论了……

      出错是getline的声明问题,你可以改一下名字,叫做getline2,可能是名字跟系统库的冲突了。
      你可以试试获取myqq3.googlecode.com的SVN上的最新代码进行编译,兼容性问题可能会少些。

      回复
      1. 3ku

        马上试下,刚发现出现网络错误,原因在于QQUdpServerList 的ip地址已经失效,直接用sz.tencent.com-sz9.tencent.com的即可。。。把是ip的全删掉

        回复
  125. cwy

    马上试下,刚发现出现网络错误,原因在于QQUdpServerList 的ip地址已经失效,直接用sz.tencent.com-sz9.tencent.com的即可。。。把是ip的全删掉

    按楼上的也还是提示错误,我是局哉网。

    回复
      1. zhang

        虽然你比我大 但我还是要喊你声 哥 。。 你太牛了 哈哈
        前两年无意中发现了这个dos qq 挺新鲜的 感觉还不错。 但是用了一段时间 发现用不了了 老是提示网络错误 网上也找过其他的 但是都不能用 今天闲着没事 就又百度了一下 居然让我找到了 。太感谢了

        回复
  126. 大雄

    小虾。。貌似是2012年的沙发,嘿。。我下了你的源码,可是不知道用什么工具编译啊,我用VS VC6.0编译都出错,都是没有pthread.h的原因,弱弱求指教编译成功win32上能用的.exe。的编译工具 : )

    回复
    1. Xiaoxia 文章作者

      我是在gcc环境下编译的。您可能不能直接在vc里编译,但是做少许改动的话,应该是能编译通过的。这应该是编译器差异!

      回复
  127. 大雄

    我尝试看懂你对加好友协议的解释,但始终不知道怎么解码一个8A包,可以帮我下么,怎么用TEA加密的密钥解码后面的数据呢,从哪里到哪里是密钥,。我尝试了好多次,但最终还是得来问你。:)

    回复
  128. 莱恩

    [myqq]# make -C src -flinux.mak
    make: Entering directory `/home/tmp/myqq/src’
    rm -rf obj
    mkdir -p obj
    gcc -c -Wall -O2 -s -o obj/qqsocket.o qqsocket.c
    gcc -c -Wall -O2 -s -o obj/qqcrypt.o qqcrypt.c
    gcc -c -Wall -O2 -s -o obj/md5.o md5.c
    gcc -c -Wall -O2 -s -o obj/debug.o debug.c
    gcc -c -Wall -O2 -s -o obj/qqclient.o qqclient.c
    gcc -c -Wall -O2 -s -o obj/memory.o memory.c
    gcc -c -Wall -O2 -s -o obj/config.o config.c
    gcc -c -Wall -O2 -s -o obj/packetmgr.o packetmgr.c
    gcc -c -Wall -O2 -s -o obj/qqpacket.o qqpacket.c
    gcc -c -Wall -O2 -s -o obj/prot_login.o prot_login.c
    gcc -c -Wall -O2 -s -o obj/protocol.o protocol.c
    gcc -c -Wall -O2 -s -o obj/prot_misc.o prot_misc.c
    gcc -c -Wall -O2 -s -o obj/prot_im.o prot_im.c
    gcc -c -Wall -O2 -s -o obj/prot_user.o prot_user.c
    gcc -c -Wall -O2 -s -o obj/list.o list.c
    gcc -c -Wall -O2 -s -o obj/buddy.o buddy.c
    gcc -c -Wall -O2 -s -o obj/group.o group.c
    gcc -c -Wall -O2 -s -o obj/qun.o qun.c
    gcc -c -Wall -O2 -s -o obj/prot_group.o prot_group.c
    gcc -c -Wall -O2 -s -o obj/prot_qun.o prot_qun.c
    gcc -c -Wall -O2 -s -o obj/prot_buddy.o prot_buddy.c
    gcc -c -Wall -O2 -s -o obj/loop.o loop.c
    gcc -c -Wall -O2 -s -o obj/utf8.o utf8.c
    gcc -c -Wall -O2 -s -o obj/myqq.o myqq.c
    gcc -c -Wall -O2 -s -o obj/util.o util.c
    gcc -c -Wall -O2 -s -o obj/crc32.o crc32.c
    gcc -c -Wall -O2 -s -o obj/qqconn.o qqconn.c
    gcc -lpthread -s -o obj/myqq obj/qqsocket.o obj/qqcrypt.o obj/md5.o obj/debug.o obj/qqclient.o obj/memory.o obj/config.o obj/packetmgr.o obj/qqpacket.o obj/prot_login.o obj/protocol.o obj/prot_misc.o obj/prot_im.o obj/prot_user.o obj/list.o obj/buddy.o obj/group.o obj/qun.o obj/prot_group.o obj/prot_qun.o obj/prot_buddy.o obj/loop.o obj/utf8.o obj/myqq.o obj/util.o obj/crc32.o obj/qqconn.o
    obj/utf8.o: In function `gb_to_utf8′:
    utf8.c:(.text+0x49): undefined reference to `libiconv_open’
    utf8.c:(.text+0x74): undefined reference to `libiconv’
    utf8.c:(.text+0x9b): undefined reference to `libiconv_close’
    obj/utf8.o: In function `utf8_to_gb’:
    utf8.c:(.text+0x137): undefined reference to `libiconv_open’
    utf8.c:(.text+0x162): undefined reference to `libiconv’
    utf8.c:(.text+0x16e): undefined reference to `libiconv_close’
    collect2: ld returned 1 exit status
    make: *** [obj/myqq] Error 1
    make: Leaving directory `/home/tmp/myqq/src’

    怎么解决,大侠?

    回复

回复 scofield 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据