能力值:
( LV2,RANK:10 )
|
-
-
9 楼
0043E760 55 push ebp
0043E761 8BEC mov ebp,esp
0043E763 6A FF push -1
0043E765 68 739C4400 push FamFinan.00449C73
0043E76A 64:A1 00000000 mov eax,dword ptr fs:[0]
0043E770 50 push eax
0043E771 64:8925 00000000 mov dword ptr fs:[0],esp
0043E778 81EC B4050000 sub esp,5B4
0043E77E 53 push ebx
0043E77F 56 push esi
0043E780 57 push edi
0043E781 8BF9 mov edi,ecx
0043E783 8965 F0 mov dword ptr ss:[ebp-10],esp
0043E786 897D D4 mov dword ptr ss:[ebp-2C],edi
0043E789 8B87 AC040000 mov eax,dword ptr ds:[edi+4AC]
0043E78F 8B40 F8 mov eax,dword ptr ds:[eax-8]
0043E792 85C0 test eax,eax
0043E794 0F84 08060000 je FamFinan.0043EDA2
0043E79A E8 DF3E0000 call <jmp.&MFC42.#1168_AfxGetModuleState>
0043E79F 8B70 04 mov esi,dword ptr ds:[eax+4]
0043E7A2 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E7A5 8975 DC mov dword ptr ss:[ebp-24],esi
0043E7A8 E8 E1400000 call <jmp.&MFC42.#354_CFile::CFile>
0043E7AD 8D86 E8000000 lea eax,dword ptr ds:[esi+E8]
0043E7B3 68 708D4500 push FamFinan.00458D70 ; ASCII "\FamFinan.bik"
0043E7B8 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0043E7BB 50 push eax
0043E7BC 51 push ecx
0043E7BD C745 FC 00000000 mov dword ptr ss:[ebp-4],0
0043E7C4 E8 553E0000 call <jmp.&MFC42.#924_operator+>
0043E7C9 8B00 mov eax,dword ptr ds:[eax]
0043E7CB 6A 00 push 0
0043E7CD 6A 00 push 0
0043E7CF 50 push eax
0043E7D0 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E7D3 C645 FC 01 mov byte ptr ss:[ebp-4],1
0043E7D7 E8 A6400000 call <jmp.&MFC42.#5186_CFile::Open> ; 打开FamFinan.bik文件
0043E7DC 85C0 test eax,eax
0043E7DE 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0043E7E1 C645 FC 00 mov byte ptr ss:[ebp-4],0
0043E7E5 0F94C3 sete bl
0043E7E8 E8 CB3D0000 call <jmp.&MFC42.#800_CString::~CString>
0043E7ED 84DB test bl,bl
0043E7EF 74 18 je short FamFinan.0043E809
0043E7F1 8B57 20 mov edx,dword ptr ds:[edi+20]
0043E7F4 6A 00 push 0
0043E7F6 6A 01 push 1
0043E7F8 6A 02 push 2
0043E7FA 66:C787 B2040000 >mov word ptr ds:[edi+4B2],1
0043E803 52 push edx
0043E804 E9 84050000 jmp FamFinan.0043ED8D
0043E809 8D45 E4 lea eax,dword ptr ss:[ebp-1C]
0043E80C 6A 04 push 4
0043E80E 50 push eax
0043E80F 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E812 E8 5F400000 call <jmp.&MFC42.#5442_CFile::Read> ; 读入四个字节去缓冲区 1a 00 00 00
0043E817 8B4D E4 mov ecx,dword ptr ss:[ebp-1C]
0043E81A 8D95 40FBFFFF lea edx,dword ptr ss:[ebp-4C0]
0043E820 51 push ecx
0043E821 52 push edx
0043E822 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E825 E8 4C400000 call <jmp.&MFC42.#5442_CFile::Read> ; 再次读入:长度(第一次读入的数值)
0043E82A 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
0043E82D 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
0043E830 6A 04 push 4
0043E832 51 push ecx
0043E833 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E836 C68405 40FBFFFF 0>mov byte ptr ss:[ebp+eax-4C0],0
0043E83E E8 33400000 call <jmp.&MFC42.#5442_CFile::Read> ; 读入长度值:0c 00 00 00
0043E843 8B55 E4 mov edx,dword ptr ss:[ebp-1C]
0043E846 8D85 40FDFFFF lea eax,dword ptr ss:[ebp-2C0]
0043E84C 52 push edx
0043E84D 50 push eax
0043E84E 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E851 E8 20400000 call <jmp.&MFC42.#5442_CFile::Read>
0043E856 8B4D E4 mov ecx,dword ptr ss:[ebp-1C]
0043E859 8D55 E4 lea edx,dword ptr ss:[ebp-1C]
0043E85C 6A 04 push 4
0043E85E 52 push edx
0043E85F C6840D 40FDFFFF 0>mov byte ptr ss:[ebp+ecx-2C0],0
0043E867 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E86A E8 07400000 call <jmp.&MFC42.#5442_CFile::Read>
0043E86F 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
0043E872 8D8D 40FCFFFF lea ecx,dword ptr ss:[ebp-3C0]
0043E878 50 push eax
0043E879 51 push ecx
0043E87A 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E87D E8 F43F0000 call <jmp.&MFC42.#5442_CFile::Read>
0043E882 8B55 E4 mov edx,dword ptr ss:[ebp-1C]
0043E885 BE 3C8D4500 mov esi,FamFinan.00458D3C ; ASCII "k blueice e use y file 1.0"
0043E88A 8D85 40FBFFFF lea eax,dword ptr ss:[ebp-4C0]
0043E890 C68415 40FCFFFF 0>mov byte ptr ss:[ebp+edx-3C0],0
0043E898 8A10 mov dl,byte ptr ds:[eax]
0043E89A 8A1E mov bl,byte ptr ds:[esi]
0043E89C 8ACA mov cl,dl
0043E89E 3AD3 cmp dl,bl
0043E8A0 75 1E jnz short FamFinan.0043E8C0
0043E8A2 84C9 test cl,cl
0043E8A4 74 16 je short FamFinan.0043E8BC
0043E8A6 8A50 01 mov dl,byte ptr ds:[eax+1]
0043E8A9 8A5E 01 mov bl,byte ptr ds:[esi+1]
0043E8AC 8ACA mov cl,dl
0043E8AE 3AD3 cmp dl,bl
0043E8B0 75 0E jnz short FamFinan.0043E8C0
0043E8B2 83C0 02 add eax,2
0043E8B5 83C6 02 add esi,2
0043E8B8 84C9 test cl,cl
0043E8BA ^ 75 DC jnz short FamFinan.0043E898 ; 比较读入了版本号和文件的版本号
0043E8BC 33C0 xor eax,eax ; 也就是对第一次读入的1a个字符进行比较
0043E8BE EB 05 jmp short FamFinan.0043E8C5
0043E8C0 1BC0 sbb eax,eax
0043E8C2 83D8 FF sbb eax,-1
0043E8C5 85C0 test eax,eax
0043E8C7 0F85 AD040000 jnz FamFinan.0043ED7A
0043E8CD BE 888D4500 mov esi,FamFinan.00458D88
0043E8D2 8D85 40FDFFFF lea eax,dword ptr ss:[ebp-2C0]
0043E8D8 8A10 mov dl,byte ptr ds:[eax]
0043E8DA 8A1E mov bl,byte ptr ds:[esi]
0043E8DC 8ACA mov cl,dl
0043E8DE 3AD3 cmp dl,bl
0043E8E0 75 1E jnz short FamFinan.0043E900
0043E8E2 84C9 test cl,cl
0043E8E4 74 16 je short FamFinan.0043E8FC
0043E8E6 8A50 01 mov dl,byte ptr ds:[eax+1]
0043E8E9 8A5E 01 mov bl,byte ptr ds:[esi+1]
0043E8EC 8ACA mov cl,dl
0043E8EE 3AD3 cmp dl,bl
0043E8F0 75 0E jnz short FamFinan.0043E900
0043E8F2 83C0 02 add eax,2
0043E8F5 83C6 02 add esi,2
0043E8F8 84C9 test cl,cl
0043E8FA ^ 75 DC jnz short FamFinan.0043E8D8 ; 对第二次读入的0c个字符进行比较
0043E8FC 33C0 xor eax,eax
0043E8FE EB 05 jmp short FamFinan.0043E905
0043E900 1BC0 sbb eax,eax
0043E902 83D8 FF sbb eax,-1
0043E905 85C0 test eax,eax
0043E907 0F85 6D040000 jnz FamFinan.0043ED7A
0043E90D BE 808D4500 mov esi,FamFinan.00458D80 ; ASCII "V1.00"
0043E912 8D85 40FCFFFF lea eax,dword ptr ss:[ebp-3C0]
0043E918 8A10 mov dl,byte ptr ds:[eax]
0043E91A 8A1E mov bl,byte ptr ds:[esi]
0043E91C 8ACA mov cl,dl
0043E91E 3AD3 cmp dl,bl
0043E920 75 1E jnz short FamFinan.0043E940
0043E922 84C9 test cl,cl
0043E924 74 16 je short FamFinan.0043E93C
0043E926 8A50 01 mov dl,byte ptr ds:[eax+1]
0043E929 8A5E 01 mov bl,byte ptr ds:[esi+1]
0043E92C 8ACA mov cl,dl
0043E92E 3AD3 cmp dl,bl
0043E930 75 0E jnz short FamFinan.0043E940
0043E932 83C0 02 add eax,2
0043E935 83C6 02 add esi,2
0043E938 84C9 test cl,cl
0043E93A ^ 75 DC jnz short FamFinan.0043E918 ; 对第二次读入的05个字符进行比较
0043E93C 33C0 xor eax,eax
0043E93E EB 05 jmp short FamFinan.0043E945
0043E940 1BC0 sbb eax,eax
0043E942 83D8 FF sbb eax,-1
0043E945 85C0 test eax,eax
0043E947 0F85 2D040000 jnz FamFinan.0043ED7A
0043E94D 8D45 B8 lea eax,dword ptr ss:[ebp-48]
0043E950 6A 04 push 4
0043E952 50 push eax
0043E953 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E956 E8 1B3F0000 call <jmp.&MFC42.#5442_CFile::Read>
0043E95B 8D4D BC lea ecx,dword ptr ss:[ebp-44]
0043E95E 6A 04 push 4
0043E960 51 push ecx
0043E961 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043E964 E8 0D3F0000 call <jmp.&MFC42.#5442_CFile::Read>
0043E969 8B97 AC040000 mov edx,dword ptr ds:[edi+4AC] ; edx=假码
0043E96F 8B45 BC mov eax,dword ptr ss:[ebp-44] ; eax=读入的四个字节 17 00 00 00
0043E972 8DB7 AC040000 lea esi,dword ptr ds:[edi+4AC] ; esi=假码指针
0043E978 8B4A F8 mov ecx,dword ptr ds:[edx-8] ; ecx=假码长度
0043E97B 3BC1 cmp eax,ecx
0043E97D 74 0E je short FamFinan.0043E98D ; 如果假码长度 != 0x17,则跳
0043E97F 66:C787 B2040000 >mov word ptr ds:[edi+4B2],2
0043E988 E9 F6030000 jmp FamFinan.0043ED83
0043E98D 83C0 10 add eax,10
0043E990 99 cdq ; 符号扩展(edx=00)
0043E991 83E2 0F and edx,0F
0043E994 03C2 add eax,edx
0043E996 C1F8 04 sar eax,4 ; 符号扩展右移4位
0043E999 8BD8 mov ebx,eax
0043E99B 8945 E8 mov dword ptr ss:[ebp-18],eax
0043E99E C1E3 04 shl ebx,4
0043E9A1 53 push ebx
0043E9A2 E8 653C0000 call <jmp.&MFC42.#823_operator new> ; 分配内存
0043E9A7 53 push ebx
0043E9A8 8945 EC mov dword ptr ss:[ebp-14],eax ; [ebp-14]指向新分配的内存 AcMem1=new byte[32]
0043E9AB E8 5C3C0000 call <jmp.&MFC42.#823_operator new>
0043E9B0 8BF8 mov edi,eax
0043E9B2 53 push ebx
0043E9B3 897D D8 mov dword ptr ss:[ebp-28],edi ; [ebp-28]指向新分配的内存 AcMem2=new byte[32]
0043E9B6 E8 513C0000 call <jmp.&MFC42.#823_operator new>
0043E9BB 83C4 0C add esp,0C
0043E9BE 8945 E0 mov dword ptr ss:[ebp-20],eax ; [ebp-20]指向新分配的内存 AcMem3=new byte[32]
0043E9C1 85DB test ebx,ebx
0043E9C3 7E 12 jle short FamFinan.0043E9D7
0043E9C5 8BCB mov ecx,ebx
0043E9C7 33C0 xor eax,eax
0043E9C9 8BD1 mov edx,ecx
0043E9CB C1E9 02 shr ecx,2 ; 初使化第二次分配的内存
0043E9CE F3:AB rep stos dword ptr es:[edi] ; edi=[ebp-28]=第二次分配的内存
0043E9D0 8BCA mov ecx,edx
0043E9D2 83E1 03 and ecx,3
0043E9D5 F3:AA rep stos byte ptr es:[edi] ; AcMem2={NUll};
0043E9D7 8B3E mov edi,dword ptr ds:[esi] ; edi=指向假码
0043E9D9 83C9 FF or ecx,FFFFFFFF
0043E9DC 33C0 xor eax,eax
0043E9DE F2:AE repne scas byte ptr es:[edi]
0043E9E0 F7D1 not ecx
0043E9E2 2BF9 sub edi,ecx
0043E9E4 8BC1 mov eax,ecx
0043E9E6 8BF7 mov esi,edi
0043E9E8 8B7D D8 mov edi,dword ptr ss:[ebp-28] ; edi=第二次分配的内存
0043E9EB C1E9 02 shr ecx,2
0043E9EE F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi]
0043E9F0 8BC8 mov ecx,eax
0043E9F2 83E1 03 and ecx,3
0043E9F5 33C0 xor eax,eax
0043E9F7 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi] ; strcpy(AcMem2,假码)
0043E9F9 C785 C0FEFFFF 04B>mov dword ptr ss:[ebp-140],FamFinan.0044BD04 ; [ebp-140]=0044bd04
0043EA03 888405 40FEFFFF mov byte ptr ss:[ebp+eax-1C0],al
0043EA0A 40 inc eax
0043EA0B 3D 80000000 cmp eax,80
0043EA10 ^ 7C F1 jl short FamFinan.0043EA03 ; [ebp-1c0][80]={0...7F}
0043EA12 8D8D 40FEFFFF lea ecx,dword ptr ss:[ebp-1C0] ; ecx=数组[ebp-1c0]
0043EA18 68 80000000 push 80 ; 长度
0043EA1D 51 push ecx ; 数组指针
0043EA1E 8D8D C0FEFFFF lea ecx,dword ptr ss:[ebp-140] ; ecx=某个类的指针
0043EA24 E8 37250000 call FamFinan.00440F60 ; 生成key表
0043EA29 8B45 E8 mov eax,dword ptr ss:[ebp-18]
0043EA2C 85C0 test eax,eax
0043EA2E 7E 27 jle short FamFinan.0043EA57
0043EA30 8B75 D8 mov esi,dword ptr ss:[ebp-28] ; esi=假码
0043EA33 8B7D E0 mov edi,dword ptr ss:[ebp-20] ; edi=AcMem3 第三次分配的内存
0043EA36 2BFE sub edi,esi
0043EA38 8945 E8 mov dword ptr ss:[ebp-18],eax
0043EA3B 8D1437 lea edx,dword ptr ds:[edi+esi] ; edx=AcMem3 第三次分配的内存
0043EA3E 8D8D C0FEFFFF lea ecx,dword ptr ss:[ebp-140]
0043EA44 52 push edx ; AcMem3入栈 (临时分配的缓冲区)
0043EA45 56 push esi ; 假码入栈
0043EA46 E8 95260000 call FamFinan.004410E0 ; 加密运算,结果存入2参AcMem3
0043EA4B 8B45 E8 mov eax,dword ptr ss:[ebp-18]
0043EA4E 83C6 10 add esi,10
0043EA51 48 dec eax
0043EA52 8945 E8 mov dword ptr ss:[ebp-18],eax
0043EA55 ^ 75 E4 jnz short FamFinan.0043EA3B
0043EA57 8B45 D8 mov eax,dword ptr ss:[ebp-28]
0043EA5A 50 push eax
0043EA5B E8 883B0000 call <jmp.&MFC42.#825_operator delete> ; delete AcMem2 释放第二次分配的内存
0043EA60 8B45 B8 mov eax,dword ptr ss:[ebp-48]
0043EA63 83C4 04 add esp,4
0043EA66 85C0 test eax,eax
0043EA68 C745 E8 00000000 mov dword ptr ss:[ebp-18],0
0043EA6F 7E 27 jle short FamFinan.0043EA98
0043EA71 8B7D EC mov edi,dword ptr ss:[ebp-14]
0043EA74 53 push ebx
0043EA75 57 push edi
0043EA76 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
0043EA79 E8 F83D0000 call <jmp.&MFC42.#5442_CFile::Read> ; 读入0x20个字节到第一次申请的内存中 AcMme1
0043EA7E 8B4D BC mov ecx,dword ptr ss:[ebp-44]
0043EA81 8B75 E0 mov esi,dword ptr ss:[ebp-20]
0043EA84 33D2 xor edx,edx
0043EA86 F3:A6 repe cmps byte ptr es:[edi],byte ptr ds:[esi] ; strcmp(AcMem1,AcMem3)
0043EA88 74 28 je short FamFinan.0043EAB2 ; 如果读入数据与[ebp-20]相等相等,则跳
0043EA8A 8B45 E8 mov eax,dword ptr ss:[ebp-18]
0043EA8D 8B4D B8 mov ecx,dword ptr ss:[ebp-48]
0043EA90 40 inc eax
0043EA91 3BC1 cmp eax,ecx
0043EA93 8945 E8 mov dword ptr ss:[ebp-18],eax
0043EA96 ^ 7C D9 jl short FamFinan.0043EA71 ; 比较0xc8次
0043EA98 8B45 D4 mov eax,dword ptr ss:[ebp-2C]
0043EA9B 6A 00 push 0
0043EA9D 6A 01 push 1
0043EA9F 6A 02 push 2
0043EAA1 66:C780 B2040000 >mov word ptr ds:[eax+4B2],2
0043EAAA 8B40 20 mov eax,dword ptr ds:[eax+20]
0043EAAD E9 DA020000 jmp FamFinan.0043ED8C
0043EAB2 8B4D EC mov ecx,dword ptr ss:[ebp-14]
0043EAB5 51 push ecx
0043EAB6 E8 2D3B0000 call <jmp.&MFC42.#825_operator delete> ; delete AcMem1
0043EABB 8B55 E0 mov edx,dword ptr ss:[ebp-20]
0043EABE 52 push edx
0043EABF E8 243B0000 call <jmp.&MFC42.#825_operator delete> ; delete AcMem3
0043EAC4 83C4 08 add esp,8
0043EAC7 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0043EACA E8 BF3D0000 call <jmp.&MFC42.#354_CFile::CFile>
0043EACF 8B45 DC mov eax,dword ptr ss:[ebp-24]
0043EAD2 68 AC8D4500 push FamFinan.00458DAC ; ASCII "\FamFinan.biu"
0043EAD7 05 E8000000 add eax,0E8
0043EADC 8D4D EC lea ecx,dword ptr ss:[ebp-14]
0043EADF 50 push eax
0043EAE0 51 push ecx
0043EAE1 C645 FC 02 mov byte ptr ss:[ebp-4],2
0043EAE5 E8 343B0000 call <jmp.&MFC42.#924_operator+>
0043EAEA 8B00 mov eax,dword ptr ds:[eax]
0043EAEC 6A 00 push 0
0043EAEE 68 01100000 push 1001
0043EAF3 50 push eax
0043EAF4 8D4D A8 lea ecx,dword ptr ss:[ebp-58]
0043EAF7 C645 FC 03 mov byte ptr ss:[ebp-4],3
0043EAFB E8 823D0000 call <jmp.&MFC42.#5186_CFile::Open> ; 打开 FamFinan.biu文件
0043EB00 85C0 test eax,eax
0043EB02 8D4D EC lea ecx,dword ptr ss:[ebp-14]
|