高价求购---QQ最新通讯协议 参考 LumaQQ 的方式进行黑盒引用,不一定要获知协议 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 QQ 2005贺岁版下面为动态库BasicCtrlDll.dll中反汇编的代码以及代码分析,主要用于分析EWH.DB中数据结构以及QQ数据解调算法的问题。另外,这个算法也可以将User.db中的数据提取出来。1000B71D B8 AC160110 mov eax,BasicCtr.100116AC 1000B722 E8 89460000 call BasicCtr.1000FDB0 1000B727 83EC 3C sub esp,3C 1000B72A 8B45 08 mov eax,dword ptr ss:[ebp+8] 将数据的开始地址赋给EAX,实际数据为**Data,EAX=*Data1000B72D 53 push ebx 1000B72E 56 push esi 1000B72F 57 push edi 1000B730 8B30 mov esi,dword ptr ds:[eax] 需要转换的字符串,EAX指示一个结构,第一个成员为实际的数据指针1000B732 894D D8 mov dword ptr ss:[ebp-28],ecx 局部变量[ebp-28]保存全局的标志结构,ECX为全局参数地址,在调用本函数时跟入1000B735 8B46 F8 mov eax,dword ptr ds:[esi-8] 为CString结构中长度的成员,表示总共多少个字节1000B738 83F8 06 cmp eax,6 如果长度小于6,则为无效的数据1000B73B 0F82 81020000 jb BasicCtr.1000B9C2 如果比6小则跳转退出,说明数据量不够解调的1000B741 803E 51 cmp byte ptr ds:[esi],51 是否为 QQ Data 的数据,QD为QQ数据标志1000B744 0F85 78020000 jnz BasicCtr.1000B9C2 1000B74A 807E 01 44 cmp byte ptr ds:[esi+1],44 1000B74E 0F85 6E020000 jnz BasicCtr.1000B9C2 1000B754 66:8B7E 04 mov di,word ptr ds:[esi+4] 对于EWH来说,为第4+1个字节,为00031000B758 83C6 04 add esi,4 指向数据段(Sections)的个数1000B75B 46 inc esi 1000B75C 83C0 FA add eax,-6 EAX去掉6个字节,对于EWH来说,剩下36H个字节1000B75F 46 inc esi 1000B760 8945 08 mov dword ptr ss:[ebp+8],eax 指向第一个数据段1000B763 E8 CE050000 call BasicCtr.1000BD36 在内存(ECX+9C)处开辟一个(100H)字节的空间,空间地址返回到EAX1000B768 8365 E0 00 and dword ptr ss:[ebp-20],0 局部变量[ebp-20]清零1000B76C 0FB7C7 movzx eax,di 转换到EAX,对于EWH,di=3。表示有3段数据1000B76F 85C0 test eax,eax 1000B771 8945 B8 mov dword ptr ss:[ebp-48],eax 局部变量[ebp-48]保存数据的段数1000B774 0F8E 21020000 jle BasicCtr.1000B99B 1000B77A 837D 08 07 cmp dword ptr ss:[ebp+8],7 如果整个长度小于7,则剩下的应该是QQ号了。.......有意请联系[email protected] DLL作为资源添加到MFC后,怎么释放,怎么删除,跪求大大 vc6中,size_type这个类型是在哪里定义的呀,我找不到呀? 十万火急,请兄弟们过来帮帮忙! 如何去掉dll文件中的版本信息??? 为何CreatePen,LineTo等函数会失效? 做个简单的登录窗口 怎样响应AfxMessageBox消息 关于Visual C++ 6中的.运算符自动显示成员方法和成员变量的问题??? 初学vc,应该用vc++6.0 还是 .net 或者什么 能修改宏定义FD_SETSIZE吗? 网络监控msn、qq等即时聊天软件 如何设计一个图象,打印后用特殊滤光镜,可看到隐藏的文字或图片
1000B71D B8 AC160110 mov eax,BasicCtr.100116AC
1000B722 E8 89460000 call BasicCtr.1000FDB0
1000B727 83EC 3C sub esp,3C
1000B72A 8B45 08 mov eax,dword ptr ss:[ebp+8] 将数据的开始地址赋给EAX,实际数据为**Data,EAX=*Data
1000B72D 53 push ebx
1000B72E 56 push esi
1000B72F 57 push edi
1000B730 8B30 mov esi,dword ptr ds:[eax] 需要转换的字符串,EAX指示一个结构,第一个成员为实际的数据指针
1000B732 894D D8 mov dword ptr ss:[ebp-28],ecx 局部变量[ebp-28]保存全局的标志结构,ECX为全局参数地址,在调用本函数时跟入
1000B735 8B46 F8 mov eax,dword ptr ds:[esi-8] 为CString结构中长度的成员,表示总共多少个字节
1000B738 83F8 06 cmp eax,6 如果长度小于6,则为无效的数据
1000B73B 0F82 81020000 jb BasicCtr.1000B9C2 如果比6小则跳转退出,说明数据量不够解调的
1000B741 803E 51 cmp byte ptr ds:[esi],51 是否为 QQ Data 的数据,QD为QQ数据标志
1000B744 0F85 78020000 jnz BasicCtr.1000B9C2
1000B74A 807E 01 44 cmp byte ptr ds:[esi+1],44
1000B74E 0F85 6E020000 jnz BasicCtr.1000B9C2
1000B754 66:8B7E 04 mov di,word ptr ds:[esi+4] 对于EWH来说,为第4+1个字节,为0003
1000B758 83C6 04 add esi,4 指向数据段(Sections)的个数
1000B75B 46 inc esi
1000B75C 83C0 FA add eax,-6 EAX去掉6个字节,对于EWH来说,剩下36H个字节
1000B75F 46 inc esi
1000B760 8945 08 mov dword ptr ss:[ebp+8],eax 指向第一个数据段
1000B763 E8 CE050000 call BasicCtr.1000BD36 在内存(ECX+9C)处开辟一个(100H)字节的空间,空间地址返回到EAX
1000B768 8365 E0 00 and dword ptr ss:[ebp-20],0 局部变量[ebp-20]清零
1000B76C 0FB7C7 movzx eax,di 转换到EAX,对于EWH,di=3。表示有3段数据
1000B76F 85C0 test eax,eax
1000B771 8945 B8 mov dword ptr ss:[ebp-48],eax 局部变量[ebp-48]保存数据的段数
1000B774 0F8E 21020000 jle BasicCtr.1000B99B
1000B77A 837D 08 07 cmp dword ptr ss:[ebp+8],7 如果整个长度小于7,则剩下的应该是QQ号了。
.......
有意请联系[email protected]