



skype形成私钥与共钥的程序部分及分析[RAS]
;;;=====================创建自己账户的公共密钥部分====================
007643A0 6AFF |PUSH FF
007643A2 68DBCD9E00 |PUSH 009ECDDB
007643A7 64A100000000 |MOV EAX,FS:[00000000]
007643AD 50 |PUSH EAX
007643AE 64892500000000 |MOV FS:[00000000],ESP
007643B5 81EC84020000 |SUB ESP,00000284
007643BB 55 |PUSH EBP
007643BC 56 |PUSH ESI
007643BD 57 |PUSH EDI
007643BE 8BE9 |MOV EBP,ECX
007643C0 C784249802000000000|MOV DWORD PTR [ESP+00000298],00000000
007643CB 8D74240C |LEA ESI,[ESP+0C]
007643CF BF05000000 |MOV EDI,00000005
007643D4 E8F73F0700 |CALL 007D83D0 ;特征码MD5校验返回D0-7
007643D9 8906 |MOV [ESI],EAX
007643DB 895604 |MOV [ESI+04],EDX
007643DE 83C608 |ADD ESI,08
007643E1 4F |DEC EDI
007643E2 75F0 |JNZ 007643D4
007643E4 C684248C01000000 |MOV BYTE PTR [ESP+0000018C],00
007643EC C684248D01000000 |MOV BYTE PTR [ESP+0000018D],00
007643F4 33C0 |XOR EAX,EAX
007643F6 8884048C000000 |MOV [EAX+ESP+0000008C],AL
007643FD 40 |INC EAX
007643FE 3D00010000 |CMP EAX,00000100 ;清256数据
00764403 72F1 |JB 007643F6
00764405 33C9 |XOR ECX,ECX
00764407 33F6 |XOR ESI,ESI
00764409 33FF |XOR EDI,EDI
0076440B 8A540C0C |MOV DL,[ECX+ESP+0C]
0076440F 33C0 |XOR EAX,EAX
00764411 8A843C8C000000 |MOV AL,[EDI+ESP+0000008C]
00764418 03D0 |ADD EDX,EAX
0076441A 03D6 |ADD EDX,ESI
0076441C 81E2FF000000 |AND EDX,000000FF
00764422 41 |INC ECX
00764423 8BF2 |MOV ESI,EDX
00764425 83F928 |CMP ECX,28
00764428 8A94348C000000 |MOV DL,[ESI+ESP+0000008C]
0076442F 88943C8C000000 |MOV [EDI+ESP+0000008C],DL
00764436 8884348C000000 |MOV [ESI+ESP+0000008C],AL
0076443D 7202 |JB 00764441
0076443F 33C9 |XOR ECX,ECX ;形成数据
00764441 47 |INC EDI ;随机的256B
00764442 81FF00010000 |CMP EDI,00000100
00764448 72C1 |JB 0076440B
0076444A 6A05 |PUSH 05
0076444C 8D842490000000 |LEA EAX,[ESP+00000090]
00764453 6801000100 |PUSH 00010001
00764458 50 |PUSH EAX
00764459 6830427600 |PUSH 00764230 ;256密码表取数部分
0076445E 8D4C245C |LEA ECX,[ESP+5C]
00764462 E879D00000 |CALL 007714E0 ;算私钥的部分
00764467 6A05 |PUSH 05
00764469 8D8C2490000000 |LEA ECX,[ESP+00000090]
00764470 6801000100 |PUSH 00010001
00764475 51 |PUSH ECX
00764476 6830427600 |PUSH 00764230 ;256密码表取数部分
0076447B 8D4C241C |LEA ECX,[ESP+1C]
0076447F E85CD00000 |CALL 007714E0 ;算私钥的部分
00764484 8D54240C |LEA EDX,[ESP+0C]
00764488 8D44244C |LEA EAX,[ESP+4C]
0076448C 52 |PUSH EDX
0076448D 8D8C2494010000 |LEA ECX,[ESP+00000194]
00764494 50 |PUSH EAX
00764495 51 |PUSH ECX
00764496 6A10 |PUSH 10
00764498 E8E3000000 |CALL 00764580 ;C_ A1=A2*A3
0076449D 83C410 |ADD ESP,10
007644A0 8D4C244C |LEA ECX,[ESP+4C]
007644A4 6A01 |PUSH 01
007644A6 E805D00000 |CALL 007714B0 ;ECX[64B] -1
007644AB 6A01 |PUSH 01
007644AD 8D4C2410 |LEA ECX,[ESP+10]
007644B1 E8FACF0000 |CALL 007714B0 ;ECX[64B] -1
007644B6 8D54240C |LEA EDX,[ESP+0C]
007644BA 8D44244C |LEA EAX,[ESP+4C]
007644BE 52 |PUSH EDX
007644BF 8D8C2414020000 |LEA ECX,[ESP+00000214]
007644C6 50 |PUSH EAX
007644C7 51 |PUSH ECX
007644C8 6A10 |PUSH 10
007644CA E8B1000000 |CALL 00764580 ;C_ A1=A2*A3
007644CF 83EC70 |SUB ESP,70
007644D2 8BCC |MOV ECX,ESP
007644D4 6801000100 |PUSH 00010001
007644D9 E8C2B40000 |CALL 0076F9A0 ;初始化80H字节10001->ECX
007644DE 8D8C2490020000 |LEA ECX,[ESP+00000290]
007644E5 E8D6C40000 |CALL 007709C0
007644EA 85C0 |TEST EAX,EAX
007644EC 0F8458FFFFFF |JZ 0076444A
007644F2 8DB561040000 |LEA ESI,[EBP+00000461] ;128
007644F8 33C0 |XOR EAX,EAX ;Byte
007644FA 8BD0 |MOV EDX,EAX ;解密
007644FC 8BC8 |MOV ECX,EAX ;数据
007644FE C1EA02 |SHR EDX,02 ;
00764501 83E103 |AND ECX,03 ;可以
00764504 8B949410020000 |MOV EDX,[EDX*4+ESP+00000210] ;看作
0076450B C1E103 |SHL ECX,03 ;私钥
0076450E D3EA |SHR EDX,CL ;的
00764510 40 |INC EAX ;生成
00764511 4E |DEC ESI ;过程
00764512 3D80000000 |CMP EAX,00000080 ;
00764517 885601 |MOV [ESI+01],DL ;
0076451A 72DE |JB 007644FA
0076451C 8B8424A0020000 |MOV EAX,[ESP+000002A0]
00764523 8D707F |LEA ESI,[EAX+7F] ;128
00764526 33C0 |XOR EAX,EAX ;Byte
00764528 8BD0 |MOV EDX,EAX ;解密
0076452A 8BC8 |MOV ECX,EAX ;数据
0076452C C1EA02 |SHR EDX,02 ;
0076452F 83E103 |AND ECX,03 ;可以
00764532 8B949490010000 |MOV EDX,[EDX*4+ESP+00000190] ;看作
00764539 C1E103 |SHL ECX,03 ;私钥
0076453C D3EA |SHR EDX,CL ;的
0076453E 40 |INC EAX ;生成
0076453F 4E |DEC ESI ;过程
00764540 3D80000000 |CMP EAX,00000080 ;
00764545 885601 |MOV [ESI+01],DL ;
00764548 72DE |JB 00764528 ;account_manager_t: key
0076454A 68A4E1AD00 |PUSH 00ADE1A4 ; generation complete
0076454F E87C96FCFF |CALL 0072DBD0 ;显示提示信息
00764554 8B8C2494020000 |MOV ECX,[ESP+00000294]
0076455B 83C404 |ADD ESP,04
0076455E 64890D00000000 |MOV FS:[00000000],ECX
00764565 5F |POP EDI
00764566 5E |POP ESI
00764567 5D |POP EBP
00764568 81C490020000 |ADD ESP,00000290
0076456E C20400 |RET 0004
;;;===================利用机器自身的特征码生成MD5校验码的D0-D7返回=======
007D83D0 81ECC0040000 |SUB ESP,000004C0
007D83D6 6A14 |PUSH 14
007D83D8 8D442460 |LEA EAX,[ESP+60]
007D83DC 685843B200 |PUSH 00B24358
007D83E1 50 |PUSH EAX
007D83E2 E899222000 |CALL 009DA680 ;复制数据
007D83E7 83C40C |ADD ESP,0C
007D83EA 8D4C2470 |LEA ECX,[ESP+70]
007D83EE 51 |PUSH ECX
007D83EF FF15E8AEA000 |CALL [KERNEL32!GlobalMemoryStatus]
007D83F5 8D942490000000 |LEA EDX,[ESP+00000090]
007D83FC 52 |PUSH EDX
007D83FD FF15C4AFA000 |CALL [00A0AFC4]
007D8403 8D8424A0000000 |LEA EAX,[ESP+000000A0]
007D840A 50 |PUSH EAX
007D840B FF1518B0A000 |CALL [USER32!GetCursorPos]
007D8411 FF15B0ADA000 |CALL [KERNEL32!GetTickCount]
007D8417 898424A8000000 |MOV [ESP+000000A8],EAX
007D841E FF1514B0A000 |CALL [USER32!GetMessageTime]
007D8424 898424AC000000 |MOV [ESP+000000AC],EAX
007D842B FF15A0ADA000 |CALL [KERNEL32!GetCurrentThreadId]
007D8431 898424B0000000 |MOV [ESP+000000B0],EAX
007D8438 FF15E4AEA000 |CALL [KERNEL32!GetCurrentProcessId]
007D843E 8D8C24B8000000 |LEA ECX,[ESP+000000B8]
007D8445 898424B4000000 |MOV [ESP+000000B4],EAX
007D844C 51 |PUSH ECX
007D844D FF15E0AEA000 |CALL [KERNEL32!QueryPerformanceCounter]
007D8453 8D4C2400 |LEA ECX,[ESP+00]
007D8457 E834420C00 |CALL 0089C690 ;MD5的初始化
007D845C 8D54245C |LEA EDX,[ESP+5C]
007D8460 6864040000 |PUSH 00000464
007D8465 52 |PUSH EDX
007D8466 8D4C2408 |LEA ECX,[ESP+08]
007D846A E851420C00 |CALL 0089C6C0 ;计算数据的MD5校验
007D846F 6A13 |PUSH 13
007D8471 68186FAE00 |PUSH 00AE6F18
007D8476 8D4C2408 |LEA ECX,[ESP+08]
007D847A E841420C00 |CALL 0089C6C0 ;计算数据的MD5校验
007D847F 685843B200 |PUSH 00B24358
007D8484 8D4C2404 |LEA ECX,[ESP+04]
007D8488 E813430C00 |CALL 0089C7A0 ;生成MD5校验码
007D848D 8D44245C |LEA EAX,[ESP+5C]
007D8491 6864040000 |PUSH 00000464
007D8496 50 |PUSH EAX
007D8497 E834FCFFFF |CALL 007D80D0 ;生成MD5校验码
007D849C 81C4C8040000 |ADD ESP,000004C8 ;返回d0--d7
007D84A2 C3 |RET
;;;=====================随机算出私钥的数据=================================
007714E0 81ECCC050000 |SUB ESP,000005CC
007714E6 53 |PUSH EBX
007714E7 8B9C24D8050000 |MOV EBX,[ESP+000005D8]
007714EE 55 |PUSH EBP
007714EF 8BAC24D8050000 |MOV EBP,[ESP+000005D8]
007714F6 56 |PUSH ESI
007714F7 33C0 |XOR EAX,EAX
007714F9 57 |PUSH EDI
007714FA 894C2410 |MOV [ESP+10],ECX
007714FE 89442418 |MOV [ESP+18],EAX
00771502 8BF9 |MOV EDI,ECX
00771504 83F810 |CMP EAX,10
00771507 C70700000000 |MOV DWORD PTR [EDI],00000000
0077150D 7327 |JAE 00771536
0077150F 33F6 |XOR ESI,ESI
00771511 53 |PUSH EBX
00771512 FFD5 |CALL EBP ;取256密码表中的随机数
00771514 8B17 |MOV EDX,[EDI]
00771516 25FF000000 |AND EAX,000000FF
0077151B 8BCE |MOV ECX,ESI
0077151D 83C608 |ADD ESI,08
00771520 D3E0 |SHL EAX,CL
00771522 83C404 |ADD ESP,04
00771525 0BD0 |OR EDX,EAX
00771527 83FE20 |CMP ESI,20
0077152A 8917 |MOV [EDI],EDX
0077152C 72E3 |JB 00771511
0077152E 8B4C2410 |MOV ECX,[ESP+10]
00771532 8B442418 |MOV EAX,[ESP+18]
00771536 40 |INC EAX
00771537 83C704 |ADD EDI,04
0077153A 83F810 |CMP EAX,10
0077153D 89442418 |MOV [ESP+18],EAX
00771541 72C1 |JB 00771504
00771543 8B513C |MOV EDX,[ECX+3C]
00771546 81CA000000C0 |OR EDX,C0000000
0077154C 89513C |MOV [ECX+3C],EDX
0077154F 8B01 |MOV EAX,[ECX]
00771551 0C03 |OR AL,03
00771553 8901 |MOV [ECX],EAX
00771555 B810000000 |MOV EAX,00000010
0077155A 83C124 |ADD ECX,24
0077155D 8B5118 |MOV EDX,[ECX+18]
00771560 8B5914 |MOV EBX,[ECX+14]
00771563 8B7910 |MOV EDI,[ECX+10]
00771566 8B710C |MOV ESI,[ECX+0C]
00771569 8B6908 |MOV EBP,[ECX+08]
0077156C 0BD3 |OR EDX,EBX
0077156E 8B59FC |MOV EBX,[ECX-04]
00771571 0BD7 |OR EDX,EDI
00771573 8B7904 |MOV EDI,[ECX+04]
00771576 0BD6 |OR EDX,ESI
00771578 8B31 |MOV ESI,[ECX]
0077157A 0BD5 |OR EDX,EBP
0077157C 0BD3 |OR EDX,EBX
0077157E 0BD7 |OR EDX,EDI
00771580 0BD6 |OR EDX,ESI
00771582 750B |JNZ 0077158F
00771584 83E808 |SUB EAX,08
00771587 83E920 |SUB ECX,20
0077158A 83F808 |CMP EAX,08
0077158D 73CE |JAE 0077155D
0077158F 33C9 |XOR ECX,ECX
00771591 8BD0 |MOV EDX,EAX
00771593 48 |DEC EAX
00771594 85D2 |TEST EDX,EDX
00771596 7435 |JZ 007715CD
00771598 8B542410 |MOV EDX,[ESP+10]
0077159C 8D7001 |LEA ESI,[EAX+01]
0077159F 8D3C82 |LEA EDI,[EAX*4+EDX]
007715A2 6A01 |PUSH 01
007715A4 6A00 |PUSH 00
007715A6 6A00 |PUSH 00
007715A8 51 |PUSH ECX
007715A9 E8B2A42600 |CALL 009DBA60 ;算两64bit数的积EDX:EAX返回
007715AE 8B0F |MOV ECX,[EDI]
007715B0 33DB |XOR EBX,EBX
007715B2 03C1 |ADD EAX,ECX
007715B4 53 |PUSH EBX
007715B5 13D3 |ADC EDX,EBX
007715B7 68A73A0000 |PUSH 00003AA7
007715BC 52 |PUSH EDX
007715BD 50 |PUSH EAX
007715BE E89DA72600 |CALL 009DBD60 ;A1:A2/A3:A4的余数
007715C3 4E |DEC ESI
007715C4 83EF04 |SUB EDI,04
007715C7 85F6 |TEST ESI,ESI
007715C9 8BC8 |MOV ECX,EAX
007715CB 77D5 |JA 007715A2
007715CD 8BC1 |MOV EAX,ECX
007715CF 33D2 |XOR EDX,EDX
007715D1 BE03000000 |MOV ESI,00000003
007715D6 F7F6 |DIV ESI
007715D8 85D2 |TEST EDX,EDX
007715DA 0F84E4040000 |JZ 00771AC4
007715E0 8BC1 |MOV EAX,ECX
007715E2 33D2 |XOR EDX,EDX
007715E4 BE05000000 |MOV ESI,00000005
007715E9 F7F6 |DIV ESI
007715EB 85D2 |TEST EDX,EDX
007715ED 0F84D1040000 |JZ 00771AC4
007715F3 8BC1 |MOV EAX,ECX
007715F5 33D2 |XOR EDX,EDX
007715F7 BE07000000 |MOV ESI,00000007
007715FC F7F6 |DIV ESI
007715FE 85D2 |TEST EDX,EDX
00771600 0F84BE040000 |JZ 00771AC4
00771606 8BC1 |MOV EAX,ECX
00771608 33D2 |XOR EDX,EDX
0077160A BE0B000000 |MOV ESI,0000000B
0077160F F7F6 |DIV ESI
00771611 85D2 |TEST EDX,EDX
00771613 0F84AB040000 |JZ 00771AC4
00771619 8BC1 |MOV EAX,ECX
0077161B 33D2 |XOR EDX,EDX
0077161D B90D000000 |MOV ECX,0000000D
00771622 F7F1 |DIV ECX
00771624 85D2 |TEST EDX,EDX
00771626 0F8498040000 |JZ 00771AC4
0077162C 33ED |XOR EBP,EBP
0077162E BE01000000 |MOV ESI,00000001
00771633 BF11000000 |MOV EDI,00000011
00771638 896C241C |MOV [ESP+1C],EBP
0077163C 89742418 |MOV [ESP+18],ESI
00771640 897C2414 |MOV [ESP+14],EDI
00771644 B8ABAAAAAA |MOV EAX,AAAAAAAB
00771649 B903000000 |MOV ECX,00000003
0077164E F7E7 |MUL EDI
00771650 8BC2 |MOV EAX,EDX
00771652 D1E8 |SHR EAX,1
00771654 3BC1 |CMP EAX,ECX
00771656 7218 |JB 00771670
00771658 0FAFC1 |IMUL EAX,ECX
0077165B 3BF8 |CMP EDI,EAX
0077165D 0F86EE000000 |JBE 00771751
00771663 83C102 |ADD ECX,02
00771666 8BC7 |MOV EAX,EDI
00771668 33D2 |XOR EDX,EDX
0077166A F7F1 |DIV ECX
0077166C 3BC1 |CMP EAX,ECX
0077166E 73E8 |JAE 00771658
00771670 33DB |XOR EBX,EBX
00771672 53 |PUSH EBX
00771673 56 |PUSH ESI
00771674 53 |PUSH EBX
00771675 57 |PUSH EDI
00771676 E8E5A32600 |CALL 009DBA60 ;算两64bit数的积EDX:EAX返回
0077167B 85D2 |TEST EDX,EDX
0077167D 7717 |JA 00771696
0077167F 7205 |JB 00771686
00771681 83F8FF |CMP EAX,-01
00771684 7710 |JA 00771696
00771686 83FD0F |CMP EBP,0F
00771689 730B |JAE 00771696
0077168B 8BF0 |MOV ESI,EAX
0077168D 89742418 |MOV [ESP+18],ESI
00771691 E9AF000000 |JMP 00771745
00771696 8B542410 |MOV EDX,[ESP+10]
0077169A B810000000 |MOV EAX,00000010
0077169F 8D4A24 |LEA ECX,[EDX+24]
007716A2 8B5118 |MOV EDX,[ECX+18]
007716A5 8B7114 |MOV ESI,[ECX+14]
007716A8 0BD6 |OR EDX,ESI
007716AA 8B7110 |MOV ESI,[ECX+10]
007716AD 0BD6 |OR EDX,ESI
007716AF 8B710C |MOV ESI,[ECX+0C]
007716B2 0BD6 |OR EDX,ESI
007716B4 8B7108 |MOV ESI,[ECX+08]
007716B7 0BD6 |OR EDX,ESI
007716B9 8B71FC |MOV ESI,[ECX-04]
007716BC 0BD6 |OR EDX,ESI
007716BE 8B7104 |MOV ESI,[ECX+04]
007716C1 0BD6 |OR EDX,ESI
007716C3 8B31 |MOV ESI,[ECX]
007716C5 0BD6 |OR EDX,ESI
007716C7 750B |JNZ 007716D4
007716C9 83E808 |SUB EAX,08
007716CC 83E920 |SUB ECX,20
007716CF 83F808 |CMP EAX,08
007716D2 73CE |JAE 007716A2
007716D4 33C9 |XOR ECX,ECX
007716D6 8BD0 |MOV EDX,EAX
007716D8 48 |DEC EAX
007716D9 85D2 |TEST EDX,EDX
007716DB 743D |JZ 0077171A
007716DD 8B542410 |MOV EDX,[ESP+10]
007716E1 8D7001 |LEA ESI,[EAX+01]
007716E4 8D3C82 |LEA EDI,[EAX*4+EDX]
007716E7 6A01 |PUSH 01
007716E9 6A00 |PUSH 00
007716EB 6A00 |PUSH 00
007716ED 51 |PUSH ECX
007716EE E86DA32600 |CALL 009DBA60 ;算两64bit数的积EDX:EAX返回
007716F3 8B0F |MOV ECX,[EDI]
007716F5 33ED |XOR EBP,EBP
007716F7 03C1 |ADD EAX,ECX
007716F9 8B4C2418 |MOV ECX,[ESP+18]
007716FD 13D5 |ADC EDX,EBP
007716FF 53 |PUSH EBX
00771700 51 |PUSH ECX
00771701 52 |PUSH EDX
00771702 50 |PUSH EAX
00771703 E858A62600 |CALL 009DBD60 ;A1:A2/A3:A4的余数
00771708 4E |DEC ESI
00771709 83EF04 |SUB EDI,04
0077170C 85F6 |TEST ESI,ESI
0077170E 8BC8 |MOV ECX,EAX
00771710 77D5 |JA 007716E7
00771712 8B6C241C |MOV EBP,[ESP+1C]
00771716 8B7C2414 |MOV EDI,[ESP+14]
0077171A 33F6 |XOR ESI,ESI
0077171C 85ED |TEST EBP,EBP
0077171E 761D |JBE 0077173D
00771720 8D9C2460010000 |LEA EBX,[ESP+00000160]
00771727 8BC1 |MOV EAX,ECX
00771729 33D2 |XOR EDX,EDX
0077172B F733 |DIV DWORD PTR [EBX]
0077172D 85D2 |TEST EDX,EDX
0077172F 0F848F030000 |JZ 00771AC4
00771735 46 |INC ESI
00771736 83C304 |ADD EBX,04
00771739 3BF5 |CMP ESI,EBP
0077173B 72EA |JB 00771727
0077173D 8BF7 |MOV ESI,EDI
0077173F 33ED |XOR EBP,EBP
00771741 89742418 |MOV [ESP+18],ESI
00771745 89BCAC60010000 |MOV [EBP*4+ESP+00000160],EDI
0077174C 45 |INC EBP
0077174D 896C241C |MOV [ESP+1C],EBP
00771751 83C702 |ADD EDI,02
00771754 81FF20030000 |CMP EDI,00000320
0077175A 897C2414 |MOV [ESP+14],EDI
0077175E 0F82E0FEFFFF |JB 00771644
00771764 8B742410 |MOV ESI,[ESP+10]
00771768 8B9424E8050000 |MOV EDX,[ESP+000005E8]
0077176F B910000000 |MOV ECX,00000010
00771774 8D7C2460 |LEA EDI,[ESP+60]
00771778 F3A5 |REPZ MOVSD
0077177A 8B7C2460 |MOV EDI,[ESP+60]
0077177E 52 |PUSH EDX
0077177F 4F |DEC EDI
00771780 8D4C2464 |LEA ECX,[ESP+64]
00771784 897C2464 |MOV [ESP+64],EDI
00771788 E8B3040000 |CALL 00771C40 ;ECX[64B]/EDX[4B]的余数
0077178D 85C0 |TEST EAX,EAX
0077178F 0F842F030000 |JZ 00771AC4 ;余数为零转移
00771795 B910000000 |MOV ECX,00000010
0077179A 33C0 |XOR EAX,EAX
0077179C 8D7C2420 |LEA EDI,[ESP+20]
007717A0 BD00020000 |MOV EBP,00000200
007717A5 F3AB |REPZ STOSD
007717A7 C7442420D2000000 |MOV DWORD PTR [ESP+20],000000D2
007717AF 8D45FF |LEA EAX,[EBP-01]
007717B2 8BD0 |MOV EDX,EAX
007717B4 8BC8 |MOV ECX,EAX
007717B6 C1EA05 |SHR EDX,05
007717B9 83E11F |AND ECX,1F
007717BC 8B549460 |MOV EDX,[EDX*4+ESP+60]
007717C0 D3EA |SHR EDX,CL
007717C2 F6C201 |TEST DL,01
007717C5 7506 |JNZ 007717CD
007717C7 8BE8 |MOV EBP,EAX
007717C9 85ED |TEST EBP,EBP
007717CB 75E2 |JNZ 007717AF
007717CD 6800F58700 |PUSH 0087F500 ; ECX-->EAX
007717D2 6A10 |PUSH 10
007717D4 8D8424E4010000 |LEA EAX,[ESP+000001E4]
007717DB 6A40 |PUSH 40
007717DD 50 |PUSH EAX
007717DE E89DE9FFFF |CALL 00770180 ;计算地址-->EAX
007717E3 B910000000 |MOV ECX,00000010
007717E8 8D742420 |LEA ESI,[ESP+20]
007717EC 8DBC24DC010000 |LEA EDI,[ESP+000001DC]
007717F3 83FD3C |CMP EBP,3C
007717F6 F3A5 |REPZ MOVSD
007717F8 736D |JAE 00771867
007717FA 85ED |TEST EBP,EBP
007717FC 7520 |JNZ 0077181E
007717FE 6A01 |PUSH 01
00771800 8D8C24A0010000 |LEA ECX,[ESP+000001A0]
00771807 E8F4030000 |CALL 00771C00 ;初始化数据64B
0077180C B910000000 |MOV ECX,00000010
00771811 8BF0 |MOV ESI,EAX
00771813 8D7C2420 |LEA EDI,[ESP+20]
00771817 F3A5 |REPZ MOVSD
00771819 E96E010000 |JMP 0077198C
0077181E 8D75FF |LEA ESI,[EBP-01]
00771821 85F6 |TEST ESI,ESI
00771823 0F8463010000 |JZ 0077198C
00771829 8B7C2410 |MOV EDI,[ESP+10]
0077182D 57 |PUSH EDI
0077182E 8D4C2424 |LEA ECX,[ESP+24]
00771832 E8090C0000 |CALL 00772440 ; 计算的东西与积相关
00771837 4E |DEC ESI
00771838 8BD6 |MOV EDX,ESI
0077183A 8BCE |MOV ECX,ESI
0077183C C1EA05 |SHR EDX,05
0077183F 83E11F |AND ECX,1F
00771842 8B449460 |MOV EAX,[EDX*4+ESP+60]
00771846 D3E8 |SHR EAX,CL
00771848 A801 |TEST AL,01
0077184A 7412 |JZ 0077185E
0077184C 8D8C24DC010000 |LEA ECX,[ESP+000001DC]
00771853 57 |PUSH EDI
00771854 51 |PUSH ECX
00771855 8D4C2428 |LEA ECX,[ESP+28]
00771859 E8B2090000 |CALL 00772210 ; 相乘后再除
0077185E 85F6 |TEST ESI,ESI
00771860 75CB |JNZ 0077182D
00771862 E925010000 |JMP 0077198C
00771867 8B542410 |MOV EDX,[ESP+10]
0077186B B910000000 |MOV ECX,00000010
00771870 8D742420 |LEA ESI,[ESP+20]
00771874 8DBC24E0000000 |LEA EDI,[ESP+000000E0]
0077187B F3A5 |REPZ MOVSD
0077187D 52 |PUSH EDX
0077187E 8D8C24E4000000 |LEA ECX,[ESP+000000E4]
00771885 E8B60B0000 |CALL 00772440 ; 计算的东西与积相关
0077188A 8D9C241C020000 |LEA EBX,[ESP+0000021C]
00771891 C74424140F000000 |MOV DWORD PTR [ESP+14],0000000F
00771899 8B442410 |MOV EAX,[ESP+10]
0077189D 8D73C0 |LEA ESI,[EBX-40]
007718A0 B910000000 |MOV ECX,00000010
007718A5 8BFB |MOV EDI,EBX
007718A7 F3A5 |REPZ MOVSD
007718A9 8D8C24E0000000 |LEA ECX,[ESP+000000E0]
007718B0 50 |PUSH EAX
007718B1 51 |PUSH ECX
007718B2 8BCB |MOV ECX,EBX
007718B4 E857090000 |CALL 00772210 ; 相乘后再除
007718B9 8B442414 |MOV EAX,[ESP+14]
007718BD 83C340 |ADD EBX,40
007718C0 48 |DEC EAX
007718C1 89442414 |MOV [ESP+14],EAX
007718C5 75D2 |JNZ 00771899
007718C7 8D75FF |LEA ESI,[EBP-01]
007718CA 85F6 |TEST ESI,ESI
007718CC 0F84BA000000 |JZ 0077198C
007718D2 8B542410 |MOV EDX,[ESP+10]
007718D6 8D4C2420 |LEA ECX,[ESP+20]
007718DA 52 |PUSH EDX
007718DB E8600B0000 |CALL 00772440 ; 计算的东西与积相关
007718E0 4E |DEC ESI
007718E1 8BC6 |MOV EAX,ESI
007718E3 8BCE |MOV ECX,ESI
007718E5 C1E805 |SHR EAX,05
007718E8 83E11F |AND ECX,1F
007718EB 8B548460 |MOV EDX,[EAX*4+ESP+60]
007718EF D3EA |SHR EDX,CL
007718F1 F6C201 |TEST DL,01
007718F4 0F848A000000 |JZ 00771984
007718FA BB01000000 |MOV EBX,00000001
007718FF 8BC3 |MOV EAX,EBX
00771901 85F6 |TEST ESI,ESI
00771903 741D |JZ 00771922
00771905 4E |DEC ESI
00771906 8BD6 |MOV EDX,ESI
00771908 8BCE |MOV ECX,ESI
0077190A C1EA05 |SHR EDX,05
0077190D 83E11F |AND ECX,1F
00771910 8B549460 |MOV EDX,[EDX*4+ESP+60]
00771914 D3EA |SHR EDX,CL
00771916 83E201 |AND EDX,01
00771919 40 |INC EAX
0077191A 83F805 |CMP EAX,05
0077191D 8D1C5A |LEA EBX,[EBX*2+EDX]
00771920 72DF |JB 00771901
00771922 33FF |XOR EDI,EDI
00771924 F6C301 |TEST BL,01
00771927 7509 |JNZ 00771932
00771929 D1EB |SHR EBX,1
0077192B 47 |INC EDI
0077192C 48 |DEC EAX
0077192D F6C301 |TEST BL,01
00771930 74F7 |JZ 00771929
00771932 48 |DEC EAX
00771933 741F |JZ 00771954
00771935 8B6C2410 |MOV EBP,[ESP+10]
00771939 89442414 |MOV [ESP+14],EAX
0077193D 55 |PUSH EBP
0077193E 8D4C2424 |LEA ECX,[ESP+24]
00771942 E8F90A0000 |CALL 00772440 ; 计算的东西与积相关
00771947 8B442414 |MOV EAX,[ESP+14]
0077194B 48 |DEC EAX
0077194C 89442414 |MOV [ESP+14],EAX
00771950 75EB |JNZ 0077193D
00771952 EB04 |JMP 00771958
00771954 8B6C2410 |MOV EBP,[ESP+10]
00771958 D1EB |SHR EBX,1
0077195A C1E306 |SHL EBX,06
0077195D 55 |PUSH EBP
0077195E 8D4C2424 |LEA ECX,[ESP+24]
00771962 8D841CE0010000 |LEA EAX,[EBX+ESP+000001E0]
00771969 50 |PUSH EAX
0077196A E8A1080000 |CALL 00772210 ; 相乘后再除
0077196F 8BCF |MOV ECX,EDI
00771971 4F |DEC EDI
00771972 85C9 |TEST ECX,ECX
00771974 740E |JZ 00771984
00771976 47 |INC EDI
00771977 55 |PUSH EBP
00771978 8D4C2424 |LEA ECX,[ESP+24]
0077197C E8BF0A0000 |CALL 00772440 ; 计算的东西与积相关
00771981 4F |DEC EDI
00771982 75F3 |JNZ 00771977
00771984 85F6 |TEST ESI,ESI
00771986 0F8546FFFFFF |JNZ 007718D2
0077198C B810000000 |MOV EAX,00000010
00771991 8D4C245C |LEA ECX,[ESP+5C]
00771995 833900 |CMP DWORD PTR [ECX],00
00771998 7508 |JNZ 007719A2
0077199A 48 |DEC EAX
0077199B 83E904 |SUB ECX,04
0077199E 85C0 |TEST EAX,EAX
007719A0 75F3 |JNZ 00771995
007719A2 83F801 |CMP EAX,01
007719A5 0F8519010000 |JNZ 00771AC4
007719AB 837C242001 |CMP DWORD PTR [ESP+20],01
007719B0 0F850E010000 |JNZ 00771AC4
007719B6 B910000000 |MOV ECX,00000010
007719BB 8D742460 |LEA ESI,[ESP+60]
007719BF 8DBC2420010000 |LEA EDI,[ESP+00000120]
007719C6 33D2 |XOR EDX,EDX
007719C8 F3A5 |REPZ MOVSD
007719CA 8D842420010000 |LEA EAX,[ESP+00000120]
007719D1 8B08 |MOV ECX,[EAX]
007719D3 D1E9 |SHR ECX,1
007719D5 83FA0F |CMP EDX,0F
007719D8 8908 |MOV [EAX],ECX
007719DA 730C |JAE 007719E8
007719DC 8B7004 |MOV ESI,[EAX+04]
007719DF F7DE |NEG ESI
007719E1 C1E61F |SHL ESI,1F
007719E4 03F1 |ADD ESI,ECX
007719E6 8930 |MOV [EAX],ESI
007719E8 42 |INC EDX
007719E9 83C004 |ADD EAX,04
007719EC 83FA10 |CMP EDX,10
007719EF 72E0 |JB 007719D1
007719F1 8BB424E4050000 |MOV ESI,[ESP+000005E4]
007719F8 8BBC24E0050000 |MOV EDI,[ESP+000005E0]
007719FF 33ED |XOR EBP,EBP
00771A01 BB01000000 |MOV EBX,00000001
00771A06 3BAC24EC050000 |CMP EBP,[ESP+000005EC]
00771A0D 0F83C5000000 |JAE 00771AD8
00771A13 56 |PUSH ESI
00771A14 57 |PUSH EDI
00771A15 6A10 |PUSH 10
00771A17 8D8C24AC000000 |LEA ECX,[ESP+000000AC]
00771A1E E8ED060000 |CALL 00772110 ;取64个随机数
00771A23 8D542460 |LEA EDX,[ESP+60]
00771A27 8D8424A0000000 |LEA EAX,[ESP+000000A0]
00771A2E 52 |PUSH EDX
00771A2F 50 |PUSH EAX
00771A30 6A10 |PUSH 10 ;两数的大小
00771A32 E8B9000000 |CALL 00771AF0 ;比较数据合法否?
00771A37 83C40C |ADD ESP,0C
00771A3A 85C0 |TEST EAX,EAX
00771A3C 74D5 |JZ 00771A13
00771A3E B810000000 |MOV EAX,00000010
00771A43 8D8C24DC000000 |LEA ECX,[ESP+000000DC]
00771A4A 833900 |CMP DWORD PTR [ECX],00
00771A4D 7508 |JNZ 00771A57
00771A4F 48 |DEC EAX
00771A50 83E904 |SUB ECX,04
00771A53 85C0 |TEST EAX,EAX
00771A55 75F3 |JNZ 00771A4A
00771A57 3BC3 |CMP EAX,EBX
00771A59 7709 |JA 00771A64
00771A5B 399C24A0000000 |CMP [ESP+000000A0],EBX
00771A62 76AF |JBE 00771A13
00771A64 8B4C2410 |MOV ECX,[ESP+10]
00771A68 8D942420010000 |LEA EDX,[ESP+00000120]
00771A6F 51 |PUSH ECX
00771A70 52 |PUSH EDX
00771A71 8D8C24A8000000 |LEA ECX,[ESP+000000A8]
00771A78 E853020000 |CALL 00771CD0 ;两大数乘除运算
00771A7D 8D8C24A0000000 |LEA ECX,[ESP+000000A0]
00771A84 E897010000 |CALL 00771C20 ;64B数据的有效位数
00771A89 3BC3 |CMP EAX,EBX
00771A8B 7509 |JNZ 00771A96
00771A8D 399C24A0000000 |CMP [ESP+000000A0],EBX
00771A94 7428 |JZ 00771ABE
00771A96 8D442460 |LEA EAX,[ESP+60]
00771A9A 8D8C24A0000000 |LEA ECX,[ESP+000000A0]
00771AA1 50 |PUSH EAX
00771AA2 E839060000 |CALL 007720E0 ;64B数据相等否 1:否,0:是
00771AA7 85C0 |TEST EAX,EAX
00771AA9 7519 |JNZ 00771AC4
00771AAB 8BB424E4050000 |MOV ESI,[ESP+000005E4]
00771AB2 8BBC24E0050000 |MOV EDI,[ESP+000005E0]
00771AB9 BB01000000 |MOV EBX,00000001
00771ABE 45 |INC EBP
00771ABF E942FFFFFF |JMP 00771A06
00771AC4 8B4C2410 |MOV ECX,[ESP+10]
00771AC8 6A04 |PUSH 04
00771ACA E8E1050000 |CALL 007720B0 ;ECX[64B]+4[4B]-->ECX[64B]
00771ACF 8B4C2410 |MOV ECX,[ESP+10]
00771AD3 E96BFAFFFF |JMP 00771543
00771AD8 5F |POP EDI
00771AD9 5E |POP ESI
00771ADA 5D |POP EBP
00771ADB 5B |POP EBX
00771ADC 81C4CC050000 |ADD ESP,000005CC
00771AE2 C21000 |RET 0010
;;;=====================计算两大数的乘积=A1=A2*A3========================
入口参数:数据长度,A1,A2,A3 -----> A1=A2*A3
00764580 55 |PUSH EBP
00764581 8BEC |MOV EBP,ESP
00764583 83EC0C |SUB ESP,0C
00764586 8B550C |MOV EDX,[EBP+0C]
00764589 53 |PUSH EBX
0076458A 56 |PUSH ESI
0076458B 8B7508 |MOV ESI,[EBP+08]
0076458E 57 |PUSH EDI
0076458F 33C0 |XOR EAX,EAX
00764591 8D0CF500000000 |LEA ECX,[ESI*8+00000000]
00764598 8BFA |MOV EDI,EDX
0076459A 8BD9 |MOV EBX,ECX
0076459C C1E902 |SHR ECX,02
0076459F F3AB |REPZ STOSD
007645A1 8BCB |MOV ECX,EBX
007645A3 83E103 |AND ECX,03
007645A6 85F6 |TEST ESI,ESI
007645A8 F3AA |REPZ STOSB
007645AA 0F8684000000 |JBE 00764634
007645B0 8B4D10 |MOV ECX,[EBP+10]
007645B3 8BC2 |MOV EAX,EDX
007645B5 2BCA |SUB ECX,EDX
007645B7 89450C |MOV [EBP+0C],EAX
007645BA 894DF4 |MOV [EBP-0C],ECX
007645BD 8975F8 |MOV [EBP-08],ESI
007645C0 EB06 |JMP 007645C8
007645C2 8B450C |MOV EAX,[EBP+0C]
007645C5 8B4DF4 |MOV ECX,[EBP-0C]
007645C8 8B0C01 |MOV ECX,[EAX+ECX]
007645CB 8945FC |MOV [EBP-04],EAX
007645CE 894D10 |MOV [EBP+10],ECX
007645D1 8B7514 |MOV ESI,[EBP+14]
007645D4 33DB |XOR EBX,EBX
007645D6 8B7DFC |MOV EDI,[EBP-04]
007645D9 33D2 |XOR EDX,EDX
007645DB F7450801000000 |TEST DWORD PTR [EBP+08],00000001
007645E2 740B |JZ 007645EF
007645E4 8B06 |MOV EAX,[ESI]
007645E6 BB01000000 |MOV EBX,00000001
007645EB 33C9 |XOR ECX,ECX
007645ED EB1C |JMP 0076460B
007645EF 8B049E |MOV EAX,[EBX*4+ESI]
007645F2 8BCA |MOV ECX,EDX
007645F4 F76510 |MUL DWORD PTR [EBP+10]
007645F7 03C8 |ADD ECX,EAX
007645F9 8B449E04 |MOV EAX,[EBX*4+ESI+04]
007645FD 83D200 |ADC EDX,00
00764600 010C9F |ADD [EBX*4+EDI],ECX
00764603 8BCA |MOV ECX,EDX
00764605 83D100 |ADC ECX,00
00764608 83C302 |ADD EBX,02
0076460B F76510 |MUL DWORD PTR [EBP+10]
0076460E 03C8 |ADD ECX,EAX
00764610 83D200 |ADC EDX,00
00764613 014C9FFC |ADD [EBX*4+EDI-04],ECX
00764617 83D200 |ADC EDX,00
0076461A 3B5D08 |CMP EBX,[EBP+08]
0076461D 72D0 |JB 007645EF
0076461F 89149F |MOV [EBX*4+EDI],EDX
00764622 8B4D0C |MOV ECX,[EBP+0C]
00764625 8B45F8 |MOV EAX,[EBP-08]
00764628 83C104 |ADD ECX,04
0076462B 48 |DEC EAX
0076462C 894D0C |MOV [EBP+0C],ECX
0076462F 8945F8 |MOV [EBP-08],EAX
00764632 758E |JNZ 007645C2
00764634 5F |POP EDI
00764635 5E |POP ESI
00764636 5B |POP EBX
00764637 8BE5 |MOV ESP,EBP
00764639 5D |POP EBP
0076463A C3 |RET
;;;==================ECX[64B]减去一个4B的数据====================
入口:减数4B[DWORD],ECX:被减数[64B] ECX[64B]-A1[4B]-->ECX[64B]
007714B0 53 |PUSH EBX
007714B1 55 |PUSH EBP
007714B2 8B6C240C |MOV EBP,[ESP+0C]
007714B6 8BC1 |MOV EAX,ECX
007714B8 56 |PUSH ESI
007714B9 57 |PUSH EDI
007714BA 33DB |XOR EBX,EBX
007714BC 8BF0 |MOV ESI,EAX
007714BE 8B3E |MOV EDI,[ESI]
007714C0 8BD7 |MOV EDX,EDI
007714C2 2BD5 |SUB EDX,EBP
007714C4 3BD7 |CMP EDX,EDI
007714C6 8916 |MOV [ESI],EDX
007714C8 760E |JBE 007714D8
007714CA 43 |INC EBX
007714CB 83C604 |ADD ESI,04
007714CE 83FB10 |CMP EBX,10
007714D1 BD01000000 |MOV EBP,00000001
007714D6 72E6 |JB 007714BE
007714D8 5F |POP EDI
007714D9 5E |POP ESI
007714DA 5D |POP EBP
007714DB 5B |POP EBX
007714DC C20400 |RET 0004
[ 本帖最后由 softice_debug 于 2006-10-24 21:58 编辑 ]