QQ登录口令加密算法及其源代码(6)
中华网科技 http://tech.china.com
2005-08-25 14:33:44
|
|
|
1000B949 50 push eax EAX存放强制类型转换以后的数据指针 1000B94A 8D45 E8 lea eax,dword ptr ss:[ebp-18] 局部变量[ebp-18]存放强制类型转换以后的数据指针的指针,例如AST 1000B94D FF75 E4 push dword ptr ss:[ebp-1C] 局部变量[ebp-1C]中的第一个字节保存本段的类型,4或者7 1000B950 8BCB mov ecx,ebx 1000B952 50 push eax 1000B953 E8 B4FCFFFF call BasicCtr.1000B60C call 1000B60C(CString,Flag,CString) 1000B958 85FF test edi,edi 1000B95A 74 18 je short BasicCtr.1000B974 1000B95C 8B45 E0 mov eax,dword ptr ss:[ebp-20] 局部变量[ebp-28]第一次为0,为一个计数器 1000B95F 8B4B 64 mov ecx,dword ptr ds:[ebx+64] 存在于标志结构中,为一个全局地址 1000B962 8B55 F0 mov edx,dword ptr ss:[ebp-10] 局部变量[ebp-10]保存拷贝后的数据,即没有经过处理的。例如040300BDAF...... 1000B965 C1E0 02 shl eax,2 EAX=EAX*2 1000B968 891401 mov dword ptr ds:[ecx+eax],edx 将未做解调的原始数据放到全局结构中某个指针指示的内存中 1000B96B 8B4B 78 mov ecx,dword ptr ds:[ebx+78] 存在于标志结构中,为一个全局地址 1000B96E 8B55 CC mov edx,dword ptr ss:[ebp-34] 局部变量[ebp-34]保存本数据段的总长度 1000B971 891401 mov dword ptr ds:[ecx+eax],edx 将数据长度放到全局结构中某个指针指示的内存中 1000B974 8065 FC 00 and byte ptr ss:[ebp-4],0 局部布尔型变量[ebp-4]=0 1000B978 8D4D EC lea ecx,dword ptr ss:[ebp-14] 1000B97B E8 1C400000 call 清除数据段中的数据部分CString 1000B980 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF 局部布尔型变量[ebp-4]=-1,为True 1000B984 8D4D E8 lea ecx,dword ptr ss:[ebp-18] 1000B987 E8 10400000 call 清除数据段中的标志部分CString,例如AST 1000B98C FF45 E0 inc dword ptr ss:[ebp-20] 局部变量[ebp-28]计数器加一 1000B98F 8B45 E0 mov eax,dword ptr ss:[ebp-20] 1000B992 3B45 B8 cmp eax,dword ptr ss:[ebp-48] 局部变量[ebp-48]保存数据的段数 1000B995 0F8C DFFDFFFF jl BasicCtr.1000B77A 循环解调每个数据段 1000B99B 8B45 08 mov eax,dword ptr ss:[ebp+8] 最后剩余的长度 1000B99E F7D8 neg eax 1000B9A0 1BC0 sbb eax,eax 1000B9A2 83E0 04 and eax,4 1000B9A5 EB 1E jmp short BasicCtr.1000B9C5 1000B9A7 837D F0 00 cmp dword ptr ss:[ebp-10],0 1000B9AB 74 09 je short BasicCtr.1000B9B6 1000B9AD FF75 F0 push dword ptr ss:[ebp-10] 1000B9B0 E8 FF3F0000 call 1000B9B5 59 pop ecx 1000B9B6 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF 1000B9BA 8D4D E8 lea ecx,dword ptr ss:[ebp-18] 1000B9BD E8 DA3F0000 call 1000B9C2 6A 04 push 4 1000B9C4 58 pop eax 1000B9C5 8B4D F4 mov ecx,dword ptr ss:[ebp-C] 1000B9C8 5F pop edi 1000B9C9 5E pop esi 1000B9CA 5B pop ebx 1000B9CB 64:890D 000000 mov dword ptr fs:[0],ecx 1000B9D2 C9 leave 1000B9D3 C2 0400 retn 4 1000B9D6 837D F0 00 cmp dword ptr ss:[ebp-10],0 1000B9DA 74 09 je short BasicCtr.1000B9E5 1000B9DC FF75 F0 push dword ptr ss:[ebp-10] 1000B9DF E8 D03F0000 call 1000B9E4 59 pop ecx 1000B9E5 8B45 D4 mov eax,dword ptr ss:[ebp-2C] 1000B9E8 EB 12 jmp short BasicCtr.1000B9FC 1000B9EA 837D F0 00 cmp dword ptr ss:[ebp-10],0 1000B9EE 74 09 je short BasicCtr.1000B9F9 1000B9F0 FF75 F0 push dword ptr ss:[ebp-10] 1000B9F3 E8 BC3F0000 call 1000B9F8 59 pop ecx 1000B9F9 8B45 D0 mov eax,dword ptr ss:[ebp-30] 1000B9FC 8B08 mov ecx,dword ptr ds:[eax] 1000B9FE 50 push eax 1000B9FF FF51 08 call dword ptr ds:[ecx+8] 1000BA02 8BF3 mov esi,ebx 1000BA04 EB 03 jmp short BasicCtr.1000BA09 1000BA06 6A 04 push 4 1000BA08 5E pop esi 1000BA09 8065 FC 00 and byte ptr ss:[ebp-4],0 1000BA0D 8D4D EC lea ecx,dword ptr ss:[ebp-14] 1000BA10 E8 873F0000 call 1000BA15 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF 1000BA19 8D4D E8 lea ecx,dword ptr ss:[ebp-18] 1000BA1C E8 7B3F0000 call 1000BA21 8BC6 mov eax,esi 1000BA23 EB A0 jmp short BasicCtr.1000B9C5 1000BA25 8065 FC 00 and byte ptr ss:[ebp-4],0 1000BA29 8D4D EC lea ecx,dword ptr ss:[ebp-14] 1000BA2C E8 6B3F0000 call 1000BA31 EB 83 jmp short BasicCtr.1000B9B6
以上代码看不懂没关系,在压缩包中的VB代码 LoAnalysisQD (fbyt() As Byte) 函数概括了上述的思想,不过,对于4和7以外的数据类型,由于与本文内容无关,因此,不深入分析。
首页 上页 | ...3| 4 | 5 | 6 | 7 | 8 | 下页 尾页 共 8 页
|