首页
社区
课程
招聘
[旧帖] [原创]新手菜鸟关于Foxit pdf eidtor破解,及注册机附上 0.00雪花
发表于: 2011-4-19 12:56 5861

[旧帖] [原创]新手菜鸟关于Foxit pdf eidtor破解,及注册机附上 0.00雪花

2011-4-19 12:56
5861

在家闲着没事,升级了下Foxit PDF,发现下了个FoxitPDFEditor,打开发现不注册创建有标签,逆一下看有没有戏,呵呵……

PEID查壳,没有壳(好事,还不咋会……)
od载入
打开 install license key
胡乱输入一个KEY提示错误后,暂停,查看调用堆栈,来到
00422D58    .  50              push eax                                             ; /输入的注册码
00422D59    .  E8 D259FEFF     call PDFEdit.00408730                  ;单步进入

00408730   /$  64:A1 00000000  mov eax,dword ptr fs:[0]  ;
00408736   |.  6A FF           push -1
00408738   |.  68 EBE96800     push PDFEdit.0068E9EB
0040873D   |.  50              push eax
0040873E   |.  64:8925 0000000>mov dword ptr fs:[0],esp
00408745   |.  81EC 88000000   sub esp,88
0040874B   |.  55              push ebp
0040874C   |.  8BAC24 9C000000 mov ebp,dword ptr ss:[esp+9C]
00408753   |.  56              push esi
00408754   |.  81FD 18258000   cmp ebp,PDFEdit.00802518
0040875A   |.  57              push edi
0040875B   |.  8BF1            mov esi,ecx
0040875D   |.  0F84 95000000   je PDFEdit.004087F8
00408763   |.  68 18277D00     push PDFEdit.007D2718                                ;  ASCII "pedkey.txt"
00408768   |.  8D4424 10       lea eax,dword ptr ss:[esp+10]
0040876C   |.  6A 00           push 0
0040876E   |.  50              push eax
0040876F   |.  E8 EC100E00     call PDFEdit.004E9860
00408774   |.  8BC8            mov ecx,eax                                          ; |
00408776   |.  E8 F5130E00     call PDFEdit.004E9B70                                ; \PDFEdit.004E9B70
0040877B   |.  8B4424 0C       mov eax,dword ptr ss:[esp+C]
0040877F   |.  C78424 9C000000>mov dword ptr ss:[esp+9C],0
0040878A   |.  85C0            test eax,eax
0040878C   |.  74 05           je short PDFEdit.00408793
0040878E   |.  8B40 04         mov eax,dword ptr ds:[eax+4]
00408791   |.  EB 02           jmp short PDFEdit.00408795
00408793   |>  33C0            xor eax,eax
00408795   |>  53              push ebx
00408796   |.  50              push eax
00408797   |.  8D4C24 14       lea ecx,dword ptr ss:[esp+14]
0040879B   |.  E8 D0491D00     call PDFEdit.005DD170       ;  计算pedkey.txt路径
004087A0   |.  50              push eax
004087A1   |.  8D4C24 18       lea ecx,dword ptr ss:[esp+18]
004087A5   |.  E8 03BF2600     call PDFEdit.006746AD
004087AA   |.  8B4C24 14       mov ecx,dword ptr ss:[esp+14]
004087AE   |.  68 24277D00     push PDFEdit.007D2724        ;  ASCII "wb"
004087B3   |.  51              push ecx
004087B4   |.  E8 040B0D00     call PDFEdit.004D92BD ;以写二进制文件的形式打开pedkey.txt
004087B9   |.  8BD8            mov ebx,eax
004087BB   |.  8BFD            mov edi,ebp
004087BD   |.  83C9 FF         or ecx,FFFFFFFF
004087C0   |.  33C0            xor eax,eax
004087C2   |.  F2:AE           repne scas byte ptr es:[edi]
004087C4   |.  F7D1            not ecx
004087C6   |.  49              dec ecx
004087C7   |.  53              push ebx
004087C8   |.  51              push ecx
004087C9   |.  6A 01           push 1
004087CB   |.  55              push ebp
004087CC   |.  E8 82090D00     call PDFEdit.004D9153
004087D1   |.  53              push ebx
004087D2   |.  E8 FF080D00     call PDFEdit.004D90D6      ;把注册码信息写入pedkey.txt
004087D7   |.  83C4 1C         add esp,1C
004087DA   |.  8D4C24 14       lea ecx,dword ptr ss:[esp+14]
004087DE   |.  E8 5CBE2600     call PDFEdit.0067463F
004087E3   |.  8D4C24 10       lea ecx,dword ptr ss:[esp+10]
004087E7   |.  C78424 A0000000>mov dword ptr ss:[esp+A0],-1
004087F2   |.  E8 398C1D00     call PDFEdit.005E1430
004087F7   |.  5B              pop ebx
004087F8   |>  8D5424 14       lea edx,dword ptr ss:[esp+14]
004087FC   |.  8D4424 54       lea eax,dword ptr ss:[esp+54]
00408800   |.  52              push edx
00408801   |.  8D8E 14070000   lea ecx,dword ptr ds:[esi+714]
00408807   |.  50              push eax
00408808   |.  A1 90258000     mov eax,dword ptr ds:[802590]
0040880D   |.  8D96 14080000   lea edx,dword ptr ds:[esi+814]
00408813   |.  51              push ecx
00408814   |.  8DBE 14060000   lea edi,dword ptr ds:[esi+614]
0040881A   |.  52              push edx
0040881B   |.  6A 00           push 0
0040881D   |.  57              push edi
0040881E   |.  68 D4267D00     push PDFEdit.007D26D4      ;  ASCII "2009/02/05"
00408823   |.  68 D0267D00     push PDFEdit.007D26D0               ;  ASCII "PED"
00408828   |.  50              push eax
00408829   |.  E8 E2EE2300     call PDFEdit.00647710       ;  从文件读取KEY信息
0040882E   |.  83C4 24         add esp,24
00408831   |.  8986 10060000   mov dword ptr ds:[esi+610],eax
00408837   |.  85C0            test eax,eax                    ;  eax中的值决定注册码是否正确
00408839   |.  75 13           jnz short PDFEdit.0040884E
0040883B   |.  803F 00         cmp byte ptr ds:[edi],0
0040883E   |.  74 0E           je short PDFEdit.0040884E
00408840   |.  6A FF           push -1
00408842   |.  6A 00           push 0
00408844   |.  68 92130000     push 1392
00408849   |.  E8 C55B2700     call PDFEdit.0067E413
0040884E   |>  8B86 10060000   mov eax,dword ptr ds:[esi+610]
00408854   |.  85C0            test eax,eax
00408856   |.  75 0B           jnz short PDFEdit.00408863
00408858   |.  6A FF           push -1
0040885A   |.  6A 00           push 0
0040885C   |.  68 11140000     push 1411
00408861   |.  EB 22           jmp short PDFEdit.00408885
00408863   |>  68 E0267D00     push PDFEdit.007D26E0                                ;  ASCII "PEDTEMP"
00408868   |.  57              push edi
00408869   |.  E8 A2640D00     call PDFEdit.004DED10
0040886E   |.  83C4 08         add esp,8
00408871   |.  85C0            test eax,eax
00408873   |.  6A FF           push -1
00408875   |.  6A 00           push 0
00408877   |.  75 07           jnz short PDFEdit.00408880
00408879   |.  68 0F140000     push 140F
0040887E   |.  EB 05           jmp short PDFEdit.00408885
00408880   |>  68 10140000     push 1410
00408885   |>  E8 895B2700     call PDFEdit.0067E413                                ;  提示错误
0040888A   |.  8B8C24 94000000 mov ecx,dword ptr ss:[esp+94]
00408891   |.  5F              pop edi
00408892   |.  5E              pop esi
00408893   |.  5D              pop ebp
00408894   |.  64:890D 0000000>mov dword ptr fs:[0],ecx
0040889B   |.  81C4 94000000   add esp,94
004088A1   \.  C2 0400         retn 4

在乱输入注册码修改eax值后显示



至此软件破解,about显示

但注册机的话,还差远啦

分析到这里说明关键call 是
call PDFEdit.00647710       ;  从文件读取KEY信息

跟进

00647710   /$  8B4C24 04       mov ecx,dword ptr ss:[esp+4]
00647714   |.  81EC 04010000   sub esp,104
0064771A   |.  8D4424 00       lea eax,dword ptr ss:[esp]
0064771E   |.  53              push ebx
0064771F   |.  55              push ebp
00647720   |.  56              push esi
00647721   |.  57              push edi
00647722   |.  68 04010000     push 104            ; /BufSize = 104 (260.)
00647727   |.  50              push eax                   ; |PathBuffer
00647728   |.  51              push ecx                         ; |hModule
00647729   |.  FF15 5CBD8100   call dword ptr ds:[<&KERNEL32.GetModuleFileNameA>]   ; \GetModuleFileNameA
0064772F   |.  8D7C24 10       lea edi,dword ptr ss:[esp+10]
00647733   |.  83C9 FF         or ecx,FFFFFFFF
00647736   |.  33C0            xor eax,eax
00647738   |.  F2:AE           repne scas byte ptr es:[edi]
0064773A   |.  F7D1            not ecx
0064773C   |.  49              dec ecx
0064773D   |.  83F9 01         cmp ecx,1
00647740   |.  7E 15           jle short PDFEdit.00647757
00647742   |.  B0 5C           mov al,5C             ;
00647744   |>  38440C 10       /cmp byte ptr ss:[esp+ecx+10],al
00647748   |.  74 08           |je short PDFEdit.00647752
0064774A   |.  49              |dec ecx
0064774B   |.  83F9 01         |cmp ecx,1
0064774E   |.^ 7F F4           \jg short PDFEdit.00647744
00647750   |.  EB 05           jmp short PDFEdit.00647757
00647752   |>  C6440C 10 00    mov byte ptr ss:[esp+ecx+10],0
00647757   |>  83C9 FF         or ecx,FFFFFFFF
0064775A   |.  BF EC397D00     mov edi,PDFEdit.007D39EC
0064775F   |.  33C0            xor eax,eax
00647761   |.  8D5424 10       lea edx,dword ptr ss:[esp+10]
00647765   |.  F2:AE           repne scas byte ptr es:[edi]
00647767   |.  F7D1            not ecx
00647769   |.  2BF9            sub edi,ecx
0064776B   |.  8BD9            mov ebx,ecx
0064776D   |.  8BF7            mov esi,edi
0064776F   |.  83C9 FF         or ecx,FFFFFFFF
00647772   |.  8BFA            mov edi,edx
00647774   |.  F2:AE           repne scas byte ptr es:[edi]
00647776   |.  8BCB            mov ecx,ebx
00647778   |.  4F              dec edi
00647779   |.  C1E9 02         shr ecx,2
0064777C   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
0064777E   |.  8BCB            mov ecx,ebx
00647780   |.  8B9424 1C010000 mov edx,dword ptr ss:[esp+11C]
00647787   |.  83E1 03         and ecx,3
0064778A   |.  8D5C24 10       lea ebx,dword ptr ss:[esp+10]
0064778E   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
00647790   |.  8BFA            mov edi,edx
00647792   |.  83C9 FF         or ecx,FFFFFFFF
00647795   |.  F2:AE           repne scas byte ptr es:[edi]
00647797   |.  F7D1            not ecx
00647799   |.  2BF9            sub edi,ecx
0064779B   |.  8BF7            mov esi,edi
0064779D   |.  8BE9            mov ebp,ecx
0064779F   |.  8BFB            mov edi,ebx
006477A1   |.  83C9 FF         or ecx,FFFFFFFF
006477A4   |.  F2:AE           repne scas byte ptr es:[edi]
006477A6   |.  8BCD            mov ecx,ebp
006477A8   |.  4F              dec edi
006477A9   |.  C1E9 02         shr ecx,2
006477AC   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
006477AE   |.  8BCD            mov ecx,ebp
006477B0   |.  8D5C24 10       lea ebx,dword ptr ss:[esp+10]
006477B4   |.  83E1 03         and ecx,3
006477B7   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
006477B9   |.  BF CCA47F00     mov edi,PDFEdit.007FA4CC                             ;  ASCII "key.txt"
006477BE   |.  83C9 FF         or ecx,FFFFFFFF
006477C1   |.  F2:AE           repne scas byte ptr es:[edi]
006477C3   |.  F7D1            not ecx
006477C5   |.  2BF9            sub edi,ecx
006477C7   |.  8BF7            mov esi,edi
006477C9   |.  8BE9            mov ebp,ecx
006477CB   |.  8BFB            mov edi,ebx
006477CD   |.  83C9 FF         or ecx,FFFFFFFF
006477D0   |.  F2:AE           repne scas byte ptr es:[edi]
006477D2   |.  8BCD            mov ecx,ebp
006477D4   |.  4F              dec edi
006477D5   |.  C1E9 02         shr ecx,2
006477D8   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
006477DA   |.  8B8424 38010000 mov eax,dword ptr ss:[esp+138]
006477E1   |.  8BCD            mov ecx,ebp
006477E3   |.  83E1 03         and ecx,3
006477E6   |.  50              push eax
006477E7   |.  8B8424 34010000 mov eax,dword ptr ss:[esp+134]
006477EE   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
006477F0   |.  8B8C24 38010000 mov ecx,dword ptr ss:[esp+138]
006477F7   |.  51              push ecx
006477F8   |.  8B8C24 34010000 mov ecx,dword ptr ss:[esp+134]
006477FF   |.  50              push eax
00647800   |.  8B8424 34010000 mov eax,dword ptr ss:[esp+134]
00647807   |.  51              push ecx
00647808   |.  8B8C24 34010000 mov ecx,dword ptr ss:[esp+134]
0064780F   |.  50              push eax
00647810   |.  8B8424 34010000 mov eax,dword ptr ss:[esp+134]
00647817   |.  51              push ecx
00647818   |.  50              push eax
00647819   |.  8D4C24 2C       lea ecx,dword ptr ss:[esp+2C]
0064781D   |.  52              push edx
0064781E   |.  51              push ecx
0064781F   |.  E8 4CF7FFFF     call PDFEdit.00646F70                                ;  关键调用
00647824   |.  83C4 24         add esp,24
00647827   |.  5F              pop edi
00647828   |.  5E              pop esi
00647829   |.  5D              pop ebp
0064782A   |.  5B              pop ebx
0064782B   |.  81C4 04010000   add esp,104
00647831   \.  C3              retn

跟进
0064781D   |.  52              push edx                    ;  串常量"PED"
0064781E   |.  51              push ecx                    ;  pedkey.txt文件路径
0064781F   |.  E8 4CF7FFFF     call PDFEdit.00646F70        ;  关键调用

00646F70   /$  B8 F8130000     mov eax,13F8
00646F75   |.  E8 E642E9FF     call PDFEdit.004DB260
00646F7A   |.  53              push ebx
00646F7B   |.  55              push ebp                                             ;  写入第一值
00646F7C   |.  8BAC24 08140000 mov ebp,dword ptr ss:[esp+1408]
00646F83   |.  56              push esi
00646F84   |.  57              push edi
00646F85   |.  68 C8A47F00     push PDFEdit.007FA4C8                                ; /Arg2 = 007FA4C8 ASCII "FSL"
00646F8A   |.  55              push ebp                                             ; |Arg1
00646F8B   |.  E8 9720E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00646F90   |.  83C4 08         add esp,8
00646F93   |.  85C0            test eax,eax
00646F95   |.  75 0A           jnz short PDFEdit.00646FA1
00646F97   |.  BE B8A47F00     mov esi,PDFEdit.007FA4B8                             ;  ASCII "Foxit SSH Link"
00646F9C   |.  E9 B8000000     jmp PDFEdit.00647059
00646FA1   |>  68 B4A47F00     push PDFEdit.007FA4B4                                ; /Arg2 = 007FA4B4 ASCII "PTC"
00646FA6   |.  55              push ebp                                             ; |Arg1
00646FA7   |.  E8 7B20E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00646FAC   |.  83C4 08         add esp,8
00646FAF   |.  85C0            test eax,eax
00646FB1   |.  75 0A           jnz short PDFEdit.00646FBD
00646FB3   |.  BE A0A47F00     mov esi,PDFEdit.007FA4A0                             ;  ASCII "PDF Text Converter"
00646FB8   |.  E9 9C000000     jmp PDFEdit.00647059
00646FBD   |>  68 9CA47F00     push PDFEdit.007FA49C                                ; /Arg2 = 007FA49C ASCII "PTV"
00646FC2   |.  55              push ebp                                             ; |Arg1
00646FC3   |.  E8 5F20E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00646FC8   |.  83C4 08         add esp,8
00646FCB   |.  85C0            test eax,eax
00646FCD   |.  75 0A           jnz short PDFEdit.00646FD9
00646FCF   |.  BE 8CA47F00     mov esi,PDFEdit.007FA48C                             ;  ASCII "PDF Text Viewer"
00646FD4   |.  E9 80000000     jmp PDFEdit.00647059
00646FD9   |>  68 88A47F00     push PDFEdit.007FA488                                ; /Arg2 = 007FA488 ASCII "WAC"
00646FDE   |.  55              push ebp                                             ; |Arg1
00646FDF   |.  E8 4320E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00646FE4   |.  83C4 08         add esp,8
00646FE7   |.  85C0            test eax,eax
00646FE9   |.  75 07           jnz short PDFEdit.00646FF2
00646FEB   |.  BE 7CA47F00     mov esi,PDFEdit.007FA47C                             ;  ASCII "WAC Server"
00646FF0   |.  EB 67           jmp short PDFEdit.00647059
00646FF2   |>  68 78A47F00     push PDFEdit.007FA478                                ; /Arg2 = 007FA478 ASCII "PPO"
00646FF7   |.  55              push ebp                                             ; |Arg1
00646FF8   |.  E8 2A20E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00646FFD   |.  83C4 08         add esp,8
00647000   |.  85C0            test eax,eax
00647002   |.  75 07           jnz short PDFEdit.0064700B
00647004   |.  BE 64A47F00     mov esi,PDFEdit.007FA464                             ;  ASCII "PDF Page Organizer"
00647009   |.  EB 4E           jmp short PDFEdit.00647059
0064700B   |>  68 60A47F00     push PDFEdit.007FA460                                ; /Arg2 = 007FA460 ASCII "PPP"
00647010   |.  55              push ebp                                             ; |Arg1
00647011   |.  E8 1120E9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00647016   |.  83C4 08         add esp,8
00647019   |.  85C0            test eax,eax
0064701B   |.  75 07           jnz short PDFEdit.00647024
0064701D   |.  BE 48A47F00     mov esi,PDFEdit.007FA448                             ;  ASCII "PDF Page Organizer Pro"
00647022   |.  EB 35           jmp short PDFEdit.00647059
00647024   |>  68 D0267D00     push PDFEdit.007D26D0                                ; /Arg2 = 007D26D0 ASCII "PED"
00647029   |.  55              push ebp                                             ; |Arg1
0064702A   |.  E8 F81FE9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
0064702F   |.  83C4 08         add esp,8
00647032   |.  85C0            test eax,eax
00647034   |.  75 07           jnz short PDFEdit.0064703D
00647036   |.  BE 00277D00     mov esi,PDFEdit.007D2700                             ;  ASCII "PDF Editor"
0064703B   |.  EB 1C           jmp short PDFEdit.00647059
0064703D   |>  68 44A47F00     push PDFEdit.007FA444                                ; /Arg2 = 007FA444 ASCII "FRP"
00647042   |.  55              push ebp                                             ; |Arg1
00647043   |.  E8 DF1FE9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
00647048   |.  83C4 08         add esp,8
0064704B   |.  BE 30A47F00     mov esi,PDFEdit.007FA430                             ;  ASCII "Foxit Reader Pro"
00647050   |.  85C0            test eax,eax
00647052   |.  74 05           je short PDFEdit.00647059
00647054   |.  BE 20A47F00     mov esi,PDFEdit.007FA420                             ;  ASCII "Foxit License"
00647059   |>  8BBC24 0C140000 mov edi,dword ptr ss:[esp+140C]
00647060   |.  8B1D 54BD8100   mov ebx,dword ptr ds:[<&KERNEL32.GetPrivateProfileSt>;  kernel32.GetPrivateProfileStringA
00647066   |.  57              push edi                                             ; /IniFileName
00647067   |.  8D8424 0C010000 lea eax,dword ptr ss:[esp+10C]                       ; |
0064706E   |.  68 00010000     push 100                                             ; |BufSize = 100 (256.)
00647073   |.  50              push eax                                             ; |ReturnBuffer
00647074   |.  68 18258000     push PDFEdit.00802518                                ; |Default = ""
00647079   |.  68 1CA47F00     push PDFEdit.007FA41C                                ; |Key = "SN"
0064707E   |.  56              push esi                                             ; |Section
0064707F   |.  FFD3            call ebx                                             ; \GetPrivateProfileStringA
00647081   |.  8A8424 08010000 mov al,byte ptr ss:[esp+108]
00647088   |.  84C0            test al,al
0064708A   |.  75 20           jnz short PDFEdit.006470AC
0064708C   |.  57              push edi                                             ; /IniFileName
0064708D   |.  8D8C24 0C010000 lea ecx,dword ptr ss:[esp+10C]                       ; |
00647094   |.  68 00010000     push 100                                             ; |BufSize = 100 (256.)
00647099   |.  51              push ecx                                             ; |ReturnBuffer
0064709A   |.  BE 20A47F00     mov esi,PDFEdit.007FA420                             ; |ASCII "Foxit License"
0064709F   |.  68 18258000     push PDFEdit.00802518                                ; |Default = ""
006470A4   |.  68 1CA47F00     push PDFEdit.007FA41C                                ; |Key = "SN"
006470A9   |.  56              push esi                                             ; |Section => "Foxit License"
006470AA   |.  FFD3            call ebx                                             ; \GetPrivateProfileStringA
006470AC   |>  57              push edi
006470AD   |.  8D9424 0C100000 lea edx,dword ptr ss:[esp+100C]
006470B4   |.  68 00040000     push 400
006470B9   |.  52              push edx
006470BA   |.  68 18258000     push PDFEdit.00802518
006470BF   |.  68 14A47F00     push PDFEdit.007FA414                                ;  ASCII "Modules"
006470C4   |.  56              push esi
006470C5   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
006470C7   |.  57              push edi
006470C8   |.  8D8424 0C060000 lea eax,dword ptr ss:[esp+60C]
006470CF   |.  68 00010000     push 100
006470D4   |.  50              push eax
006470D5   |.  68 18258000     push PDFEdit.00802518
006470DA   |.  68 0CA47F00     push PDFEdit.007FA40C                                ;  ASCII "Users"
006470DF   |.  56              push esi
006470E0   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
006470E2   |.  57              push edi
006470E3   |.  8D8C24 0C050000 lea ecx,dword ptr ss:[esp+50C]
006470EA   |.  68 00010000     push 100
006470EF   |.  51              push ecx
006470F0   |.  68 18258000     push PDFEdit.00802518
006470F5   |.  68 00A47F00     push PDFEdit.007FA400                                ;  ASCII "Licensee"
006470FA   |.  56              push esi
006470FB   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
006470FD   |.  57              push edi
006470FE   |.  8D9424 0C030000 lea edx,dword ptr ss:[esp+30C]
00647105   |.  68 00010000     push 100
0064710A   |.  52              push edx
0064710B   |.  68 18258000     push PDFEdit.00802518
00647110   |.  68 F4A37F00     push PDFEdit.007FA3F4                                ;  ASCII "ExpireDate"
00647115   |.  56              push esi
00647116   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
00647118   |.  57              push edi
00647119   |.  8D8424 0C070000 lea eax,dword ptr ss:[esp+70C]
00647120   |.  68 00010000     push 100
00647125   |.  50              push eax
00647126   |.  68 18258000     push PDFEdit.00802518
0064712B   |.  68 ECA37F00     push PDFEdit.007FA3EC                                ;  ASCII "Sign"
00647130   |.  56              push esi
00647131   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
00647133   |.  57              push edi
00647134   |.  8D8C24 0C040000 lea ecx,dword ptr ss:[esp+40C]
0064713B   |.  68 00010000     push 100
00647140   |.  51              push ecx
00647141   |.  68 18258000     push PDFEdit.00802518
00647146   |.  68 E0A37F00     push PDFEdit.007FA3E0                                ;  ASCII "LicenseDate"
0064714B   |.  56              push esi
0064714C   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
0064714E   |.  57              push edi
0064714F   |.  8D9424 0C020000 lea edx,dword ptr ss:[esp+20C]
00647156   |.  68 00040000     push 400
0064715B   |.  52              push edx
0064715C   |.  68 18258000     push PDFEdit.00802518
00647161   |.  68 0C277D00     push PDFEdit.007D270C                                ;  ASCII "CDKey"
00647166   |.  56              push esi
00647167   |.  FFD3            call ebx  ; \GetPrivateProfileStringA
00647169   |.  6A 03           push 3                                               ; /Arg3 = 00000003
0064716B   |.  8D8424 0C010000 lea eax,dword ptr ss:[esp+10C]                       ; |
00647172   |.  55              push ebp                                             ; |Arg2
00647173   |.  50              push eax                                             ; |Arg1
00647174   |.  E8 C442E9FF     call PDFEdit.004DB43D                                ; \PDFEdit.004DB43D
00647179   |.  83C4 0C         add esp,0C
0064717C   |.  85C0            test eax,eax       ;必须跳,
0064717E   |.  74 0D           je short PDFEdit.0064718D
00647180   |.  5F              pop edi
00647181   |.  5E              pop esi
00647182   |.  5D              pop ebp
00647183   |.  33C0            xor eax,eax
00647185   |.  5B              pop ebx
00647186   |.  81C4 F8130000   add esp,13F8
0064718C   |.  C3              retn
0064718D   |>  8D8C24 08050000 lea ecx,dword ptr ss:[esp+508]
00647194   |.  68 B0267D00     push PDFEdit.007D26B0                                ; /Arg2 = 007D26B0 ASCII "Unregistered Retail Customer"
00647199   |.  51              push ecx                                             ; |Arg1
0064719A   |.  E8 881EE9FF     call PDFEdit.004D9027                                ; \PDFEdit.004D9027
0064719F   |.  83C4 08         add esp,8
006471A2   |.  85C0            test eax,eax        
006471A4   |.  0F85 ED010000   jnz PDFEdit.00647397                       ;此处调向错误处理
006471AA   |.  B9 20000000     mov ecx,20                                           ;  数据区buf大小
006471AF   |.  8DBC24 88000000 lea edi,dword ptr ss:[esp+88]
006471B6   |.  8D9424 08020000 lea edx,dword ptr ss:[esp+208]
006471BD   |.  F3:AB           rep stos dword ptr es:[edi]                          ;  数据区清零
006471BF   |.  52              push edx                                             ; /Arg1
006471C0   |.  E8 123AE9FF     call PDFEdit.004DABD7                                ; \小写转大写
006471C5   |.  8B8424 0C020000 mov eax,dword ptr ss:[esp+20C]
006471CC   |.  83C4 04         add esp,4
006471CF   |.  898424 88000000 mov dword ptr ss:[esp+88],eax                        ;  取注册码前四位送入数据区buf,buf大小128字节
006471D6   |.  33C0            xor eax,eax
006471D8   |>  83F8 02         /cmp eax,2                                           ;  算法第一处,对部分注册码进行计算
006471DB   |.  B9 05000000     |mov ecx,5                                           ;  取注册码的5,7,10,12位左移4位分别于6,8,11,13相加并减0x51
006471E0   |.  7C 05           |jl short PDFEdit.006471E7
006471E2   |.  B9 06000000     |mov ecx,6
006471E7   |>  8D0C41          |lea ecx,dword ptr ds:[ecx+eax*2]
006471EA   |.  8A940C 08020000 |mov dl,byte ptr ss:[esp+ecx+208]
006471F1   |.  8A9C0C 09020000 |mov bl,byte ptr ss:[esp+ecx+209]
006471F8   |.  C0E2 04         |shl dl,4
006471FB   |.  02D3            |add dl,bl
006471FD   |.  80EA 51         |sub dl,51
00647200   |.  889404 8C000000 |mov byte ptr ss:[esp+eax+8C],dl                     ;  计算结果append到数据区buf
00647207   |.  40              |inc eax
00647208   |.  83F8 04         |cmp eax,4
0064720B   |.^ 7C CB           \jl short PDFEdit.006471D8
0064720D   |.  BF A8A37F00     mov edi,PDFEdit.007FA3A8                             ;  ASCII "Write to sales@foxitsoftware.com for more information."
00647212   |.  83C9 FF         or ecx,FFFFFFFF
00647215   |.  33C0            xor eax,eax
00647217   |.  8D9424 90000000 lea edx,dword ptr ss:[esp+90]
0064721E   |.  F2:AE           repne scas byte ptr es:[edi]
00647220   |.  F7D1            not ecx                                              ;  取串长
00647222   |.  2BF9            sub edi,ecx
00647224   |.  68 80000000     push 80
00647229   |.  8BC1            mov eax,ecx
0064722B   |.  8BF7            mov esi,edi
0064722D   |.  8BFA            mov edi,edx
0064722F   |.  8D9424 8C000000 lea edx,dword ptr ss:[esp+8C]
00647236   |.  C1E9 02         shr ecx,2
00647239   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]       ;  串常量append到数据区
0064723B   |.  8BC8            mov ecx,eax
0064723D   |.  8D4424 18       lea eax,dword ptr ss:[esp+18]
00647241   |.  83E1 03         and ecx,3
00647244   |.  52              push edx                                             ;  压入计算处理的结果
00647245   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
00647247   |.  33C9            xor ecx,ecx
00647249   |.  50              push eax                                             ;  第二个参数
0064724A   |.  894C24 20       mov dword ptr ss:[esp+20],ecx
0064724E   |.  894C24 24       mov dword ptr ss:[esp+24],ecx
00647252   |.  894C24 28       mov dword ptr ss:[esp+28],ecx
00647256   |.  894C24 2C       mov dword ptr ss:[esp+2C],ecx
0064725A   |.  E8 213D0100     call PDFEdit.0065AF80                                ;  对数据区buf中的数据进行计算
0064725F   |.  8B9424 24140000 mov edx,dword ptr ss:[esp+1424]
00647266   |.  83C4 0C         add esp,0C
00647269   |.  85D2            test edx,edx
0064726B   |.  74 24           je short PDFEdit.00647291
0064726D   |.  8DBC24 08020000 lea edi,dword ptr ss:[esp+208]
00647274   |.  83C9 FF         or ecx,FFFFFFFF
00647277   |.  33C0            xor eax,eax
00647279   |.  F2:AE           repne scas byte ptr es:[edi]
0064727B   |.  F7D1            not ecx
0064727D   |.  2BF9            sub edi,ecx
0064727F   |.  8BC1            mov eax,ecx
00647281   |.  8BF7            mov esi,edi
00647283   |.  8BFA            mov edi,edx
00647285   |.  C1E9 02         shr ecx,2
00647288   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
0064728A   |.  8BC8            mov ecx,eax
0064728C   |.  83E1 03         and ecx,3
0064728F   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
00647291   |>  8B9424 24140000 mov edx,dword ptr ss:[esp+1424]
00647298   |.  85D2            test edx,edx
0064729A   |.  74 24           je short PDFEdit.006472C0
0064729C   |.  8DBC24 08050000 lea edi,dword ptr ss:[esp+508]
006472A3   |.  83C9 FF         or ecx,FFFFFFFF
006472A6   |.  33C0            xor eax,eax
006472A8   |.  F2:AE           repne scas byte ptr es:[edi]
006472AA   |.  F7D1            not ecx
006472AC   |.  2BF9            sub edi,ecx
006472AE   |.  8BC1            mov eax,ecx
006472B0   |.  8BF7            mov esi,edi
006472B2   |.  8BFA            mov edi,edx
006472B4   |.  C1E9 02         shr ecx,2
006472B7   |.  F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
006472B9   |.  8BC8            mov ecx,eax
006472BB   |.  83E1 03         and ecx,3
006472BE   |.  F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]
006472C0   |>  33C9            xor ecx,ecx
006472C2   |.  8D7424 14       lea esi,dword ptr ss:[esp+14]
006472C6   |>  8A16            /mov dl,byte ptr ds:[esi]                            ;  esi中为通过部分注册码计算的最后结果,长度为16个字节
006472C8   |.  83F9 04         |cmp ecx,4                                           ;  算法最后一部分
006472CB   |.  B8 0F000000     |mov eax,0F                                          ;  取注册码的15,17,20,22位左移4位分别于16,18,21,23相加并减0x51
006472D0   |.  7C 05           |jl short PDFEdit.006472D7                           ;  计算值分别于esi中第0,4,8,12位比较,如果都相等则注册码正确
006472D2   |.  B8 10000000     |mov eax,10
006472D7   |>  03C1            |add eax,ecx
006472D9   |.  8A9C04 08020000 |mov bl,byte ptr ss:[esp+eax+208]                    ;  取注册码a位值,
006472E0   |.  C0E3 04         |shl bl,4
006472E3   |.  029C04 09020000 |add bl,byte ptr ss:[esp+eax+209]                    ;  取注册码a+1位值
006472EA   |.  80EB 51         |sub bl,51
006472ED   |.  3AD3            |cmp dl,bl
006472EF   |.  0F85 06040000   |jnz PDFEdit.006476FB
006472F5   |.  83C1 02         |add ecx,2
006472F8   |.  83C6 04         |add esi,4
006472FB   |.  83F9 08         |cmp ecx,8
006472FE   |.^ 7C C6           \jl short PDFEdit.006472C6
00647300   |.  8B9424 20140000 mov edx,dword ptr ss:[esp+1420]

看到调用GetPrivateProfileStringA
原来pedkey.txt文件其实就是一个ini文件,保存注册信息的,
经单步跟踪构造合法pedkey文件

[PDF Editor]
SN="PED"
Modules="MyModules"
Users="qqjack"
Licensee="Unregistered Retail Customer"
ExpireDate="2012/12/12"
Sign="MySelf"
LicenseDate="2011/04/16"
CDKey="111111111111111111111111111"
跟踪发现SN必须为PED,Licensee="Unregistered Retail Customer"
其它随意
这样可以顺利到达注册码计算处。

跟入
0064725A   |.  E8 213D0100     call PDFEdit.0065AF80                                ;  对数据区buf中的数据进行计算

0065AF80   /$  6A FF           push -1
0065AF82   |.  68 687B6A00     push PDFEdit.006A7B68                                ;  SE 句柄安装
0065AF87   |.  64:A1 00000000  mov eax,dword ptr fs:[0]
0065AF8D   |.  50              push eax
0065AF8E   |.  64:8925 0000000>mov dword ptr fs:[0],esp
0065AF95   |.  83EC 2C         sub esp,2C
0065AF98   |.  56              push esi
0065AF99   |.  6A 01           push 1                                               ; /Arg1 = 00000001
0065AF9B   |.  8D4C24 08       lea ecx,dword ptr ss:[esp+8]                         ; |向地址ECX写入
0065AF9F   |.  E8 0CA20000     call PDFEdit.006651B0                                ; \算法预处理处,对变量buf2进行初始化
0065AFA4   |.  8B4424 08       mov eax,dword ptr ss:[esp+8]
0065AFA8   |.  C74424 38 00000>mov dword ptr ss:[esp+38],0
0065AFB0   |.  8B48 04         mov ecx,dword ptr ds:[eax+4]
0065AFB3   |.  8B4424 48       mov eax,dword ptr ss:[esp+48]
0065AFB7   |.  50              push eax
0065AFB8   |.  8B540C 0C       mov edx,dword ptr ss:[esp+ecx+C]
0065AFBC   |.  8D740C 0C       lea esi,dword ptr ss:[esp+ecx+C]
0065AFC0   |.  8B4C24 48       mov ecx,dword ptr ss:[esp+48]
0065AFC4   |.  51              push ecx                                             ;  数据区buf地址
0065AFC5   |.  8BCE            mov ecx,esi
0065AFC7   |.  FF52 04         call dword ptr ds:[edx+4]                            ;  对修改的部分注册码进行计算,结果存入buf2
0065AFCA   |.  8B4424 40       mov eax,dword ptr ss:[esp+40]
0065AFCE   |.  8B16            mov edx,dword ptr ds:[esi]
0065AFD0   |.  50              push eax
0065AFD1   |.  8BCE            mov ecx,esi                                          ;  计算结果
0065AFD3   |.  FF52 08         call dword ptr ds:[edx+8]                            ;  进行buf2二次计算,得出最后运算结果
0065AFD6   |.  8D4C24 2C       lea ecx,dword ptr ss:[esp+2C]
0065AFDA   |.  C74424 38 FFFFF>mov dword ptr ss:[esp+38],-1
0065AFE2   |.  E8 09880000     call PDFEdit.006637F0
0065AFE7   |.  8B4C24 30       mov ecx,dword ptr ss:[esp+30]
0065AFEB   |.  5E              pop esi
0065AFEC   |.  64:890D 0000000>mov dword ptr fs:[0],ecx
0065AFF3   |.  83C4 38         add esp,38
0065AFF6   \.  C3              retn

跟入
call PDFEdit.006651B0                                ; \算法预处理处,对变量buf2进行初始化

其调用函数
00665250   /$  33C0            xor eax,eax
00665252   |.  8941 10         mov dword ptr ds:[ecx+10],eax
00665255   |.  8941 0C         mov dword ptr ds:[ecx+C],eax
00665258   |.  8B41 20         mov eax,dword ptr ds:[ecx+20]
0066525B   |.  C700 01234567   mov dword ptr ds:[eax],67452301                      ;  保存常量到buf2[0]
00665261   |.  8B51 20         mov edx,dword ptr ds:[ecx+20]
00665264   |.  C742 04 89ABCDE>mov dword ptr ds:[edx+4],EFCDAB89                    ;  保存常量到buf2[1]
0066526B   |.  8B41 20         mov eax,dword ptr ds:[ecx+20]
0066526E   |.  C740 08 FEDCBA9>mov dword ptr ds:[eax+8],98BADCFE                    ;  保存常量到buf2[2]
00665275   |.  8B49 20         mov ecx,dword ptr ds:[ecx+20]
00665278   |.  C741 0C 7654321>mov dword ptr ds:[ecx+C],10325476                    ;  保存常量到buf2[3]
0066527F   \.  C3              retn

跟入
call dword ptr ds:[edx+4]                            ;  对修改的部分注册码进行计算,结果存入buf2
调用
实际这里调用了两次,第一次第二个参数为buf
                             第二次第二个参数为buf+sizeof(buf)/2
00665287    .  50              push eax                                             ;  数据区buf/buf+sizeof(buf)/2
00665288    .  51              push ecx                                             ;  buf2
00665289    .  E8 B2000000     call PDFEdit.00665340                                ;  计算核心函数

跟入
call dword ptr ds:[edx+8]                            ;  进行buf2二次计算,得出最后运算结果

006652A0    > /53              push ebx
006652A1    . |8BD9            mov ebx,ecx
006652A3    . |55              push ebp
006652A4    . |56              push esi
006652A5    . |8D6B D8         lea ebp,dword ptr ds:[ebx-28]
006652A8    . |68 80000000     push 80
006652AD    . |6A 38           push 38
006652AF    . |8BCD            mov ecx,ebp
006652B1    . |E8 DAE6FFFF     call PDFEdit.00663990                                ;  计算新的数据区buf3
006652B6    . |8B73 F0         mov esi,dword ptr ds:[ebx-10]
006652B9    . |3BF6            cmp esi,esi
006652BB    . |74 0B           je short PDFEdit.006652C8
006652BD    . |57              push edi
006652BE    . |B9 0E000000     mov ecx,0E
006652C3    . |8BFE            mov edi,esi
006652C5    . |F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]
006652C7    . |5F              pop edi
006652C8    > |8B43 F0         mov eax,dword ptr ds:[ebx-10]                        ;  地址
006652CB    . |8B4B E4         mov ecx,dword ptr ds:[ebx-1C]
006652CE    . |8948 38         mov dword ptr ds:[eax+38],ecx                        ;  将ecx值置入buf3的倒数第八字节后,经调试发现ecx值固定为0x400
006652D1    . |8B53 F0         mov edx,dword ptr ds:[ebx-10]
006652D4    . |8B43 E8         mov eax,dword ptr ds:[ebx-18]
006652D7    . |8942 3C         mov dword ptr ds:[edx+3C],eax                        ;  将eax值置入buf3的倒数第四字节后,经调试发现ecx值固定为0
006652DA    . |8B4B F0         mov ecx,dword ptr ds:[ebx-10]
006652DD    . |8B53 F8         mov edx,dword ptr ds:[ebx-8]
006652E0    . |51              push ecx                                             ;  新数据区buf3
006652E1    . |52              push edx                                             ;  buf2
006652E2    . |E8 59000000    call PDFEdit.00665340                           ; 核心函数 计算最终结果

跟入
call PDFEdit.00663990                                ;  计算新的数据区buf3

00663990   /$  53              push ebx
00663991   |.  56              push esi
00663992   |.  8BF1            mov esi,ecx
00663994   |.  8B5C24 0C       mov ebx,dword ptr ss:[esp+C]                         ;  第二参数固定为0x38
00663998   |.  57              push edi
00663999   |.  8B56 0C         mov edx,dword ptr ds:[esi+C]                         ;  此处值固定为0x400
0066399C   |.  8B46 08         mov eax,dword ptr ds:[esi+8]                         ;  此处值固定为0x40
0066399F   |.  8B4E 18         mov ecx,dword ptr ds:[esi+18]                        ;  新数据区buf3地址
006639A2   |.  C1EA 03         shr edx,3
006639A5   |.  48              dec eax
006639A6   |.  23D0            and edx,eax
006639A8   |.  8A4424 14       mov al,byte ptr ss:[esp+14]                          ;  第一参数固定为0x80
006639AC   |.  880411          mov byte ptr ds:[ecx+edx],al                         ;  buf3第一位填0x80
006639AF   |.  42              inc edx                                              ;  此值固定为1
006639B0   |.  3BD3            cmp edx,ebx
006639B2   |.  77 1F           ja short PDFEdit.006639D3                            ;  跳转始终不实现
006639B4   |.  8B7E 18         mov edi,dword ptr ds:[esi+18]                        ;  小于
006639B7   |.  8BCB            mov ecx,ebx                                          ;  0x38
006639B9   |.  2BCA            sub ecx,edx
006639BB   |.  03FA            add edi,edx
006639BD   |.  8BD1            mov edx,ecx
006639BF   |.  33C0            xor eax,eax
006639C1   |.  C1E9 02         shr ecx,2
006639C4   |.  F3:AB           rep stos dword ptr es:[edi]                          ;  buf3以后各位填0
006639C6   |.  8BCA            mov ecx,edx
006639C8   |.  83E1 03         and ecx,3
006639CB   |.  F3:AA           rep stos byte ptr es:[edi]
006639CD   |.  5F              pop edi
006639CE   |.  5E              pop esi
006639CF   |.  5B              pop ebx
006639D0   |.  C2 0800         retn 8

可见同样调用了核心计算函数 call PDFEdit.00665340  

00665340   /$  83EC 3C         sub esp,3C                                           ;  关键计算
00665343   |.  8B4424 40       mov eax,dword ptr ss:[esp+40]                        ;  取第二参数tempBuf
00665347   |.  53              push ebx
00665348   |.  55              push ebp
00665349   |.  56              push esi
0066534A   |.  8B50 0C         mov edx,dword ptr ds:[eax+C]
0066534D   |.  8B70 08         mov esi,dword ptr ds:[eax+8]
00665350   |.  8B08            mov ecx,dword ptr ds:[eax]
00665352   |.  8BEA            mov ebp,edx
00665354   |.  57              push edi
00665355   |.  8B78 04         mov edi,dword ptr ds:[eax+4]
00665358   |.  8B4424 54       mov eax,dword ptr ss:[esp+54]                        ;  取第二参数tempBuf
0066535C   |.  33EE            xor ebp,esi
0066535E   |.  23EF            and ebp,edi
00665360   |.  8B18            mov ebx,dword ptr ds:[eax]
00665362   |.  33EA            xor ebp,edx
00665364   |.  03EB            add ebp,ebx
00665366   |.  895C24 54       mov dword ptr ss:[esp+54],ebx
0066536A   |.  8B58 04         mov ebx,dword ptr ds:[eax+4]
0066536D   |.  8D8C29 78A46AD7 lea ecx,dword ptr ds:[ecx+ebp+D76AA478]
00665374   |.  8BEE            mov ebp,esi
00665376   |.  C1C1 07         rol ecx,7
00665379   |.  33EF            xor ebp,edi
0066537B   |.  03CF            add ecx,edi
0066537D   |.  23E9            and ebp,ecx
0066537F   |.  895C24 20       mov dword ptr ss:[esp+20],ebx
00665383   |.  33EE            xor ebp,esi
00665385   |.  03EB            add ebp,ebx
00665387   |.  8B58 08         mov ebx,dword ptr ds:[eax+8]
0066538A   |.  895C24 40       mov dword ptr ss:[esp+40],ebx
0066538E   |.  8D942A 56B7C7E8 lea edx,dword ptr ds:[edx+ebp+E8C7B756]
00665395   |.  8BEF            mov ebp,edi
00665397   |.  C1C2 0C         rol edx,0C
0066539A   |.  03D1            add edx,ecx
0066539C       33E9            xor ebp,ecx
0066539E   |.  23EA            and ebp,edx
006653A0   |.  33EF            xor ebp,edi
006653A2   |.  03EB            add ebp,ebx
006653A4   |.  8B58 0C         mov ebx,dword ptr ds:[eax+C]
006653A7   |.  895C24 18       mov dword ptr ss:[esp+18],ebx
006653AB   |.  8DB42E DB702024 lea esi,dword ptr ds:[esi+ebp+242070DB]
006653B2   |.  8BEA            mov ebp,edx
006653B4   |.  C1C6 11         rol esi,11
006653B7   |.  03F2            add esi,edx
006653B9   |.  33E9            xor ebp,ecx
006653BB   |.  23EE            and ebp,esi
006653BD   |.  33E9            xor ebp,ecx
006653BF   |.  03EB            add ebp,ebx
006653C1   |.  8B58 10         mov ebx,dword ptr ds:[eax+10]
006653C4   |.  895C24 30       mov dword ptr ss:[esp+30],ebx
006653C8   |.  8DBC2F EECEBDC1 lea edi,dword ptr ds:[edi+ebp+C1BDCEEE]
006653CF   |.  8BEA            mov ebp,edx
006653D1   |.  C1C7 16         rol edi,16
006653D4   |.  03FE            add edi,esi
006653D6   |.  33EE            xor ebp,esi
006653D8   |.  23EF            and ebp,edi
006653DA   |.  33EA            xor ebp,edx
006653DC   |.  03EB            add ebp,ebx
006653DE   |.  8B58 14         mov ebx,dword ptr ds:[eax+14]
006653E1   |.  895C24 14       mov dword ptr ss:[esp+14],ebx
006653E5   |.  8D8C29 AF0F7CF5 lea ecx,dword ptr ds:[ecx+ebp+F57C0FAF]
006653EC   |.  8BEE            mov ebp,esi
006653EE   |.  C1C1 07         rol ecx,7
006653F1   |.  03CF            add ecx,edi
006653F3   |.  33EF            xor ebp,edi
006653F5   |.  23E9            and ebp,ecx
006653F7   |.  33EE            xor ebp,esi
006653F9   |.  03EB            add ebp,ebx
006653FB   |.  8B58 18         mov ebx,dword ptr ds:[eax+18]
006653FE   |.  895C24 28       mov dword ptr ss:[esp+28],ebx
00665402   |.  8D942A 2AC68747 lea edx,dword ptr ds:[edx+ebp+4787C62A]
00665409   |.  8BEF            mov ebp,edi
0066540B   |.  C1C2 0C         rol edx,0C
0066540E   |.  03D1            add edx,ecx
00665410   |.  33E9            xor ebp,ecx
00665412   |.  23EA            and ebp,edx
00665414   |.  33EF            xor ebp,edi
00665416   |.  03EB            add ebp,ebx
00665418   |.  8B58 1C         mov ebx,dword ptr ds:[eax+1C]
0066541B   |.  8DB42E 134630A8 lea esi,dword ptr ds:[esi+ebp+A8304613]
00665422   |.  C1C6 11         rol esi,11
00665425   |.  03F2            add esi,edx
00665427   |.  8BEA            mov ebp,edx
00665429   |.  895C24 10       mov dword ptr ss:[esp+10],ebx
0066542D   |.  33E9            xor ebp,ecx
0066542F   |.  23EE            and ebp,esi
00665431   |.  33E9            xor ebp,ecx
00665433   |.  03EB            add ebp,ebx
00665435   |.  8B58 20         mov ebx,dword ptr ds:[eax+20]
00665438   |.  895C24 24       mov dword ptr ss:[esp+24],ebx
0066543C   |.  8DBC2F 019546FD lea edi,dword ptr ds:[edi+ebp+FD469501]
00665443   |.  8BEA            mov ebp,edx
00665445   |.  C1C7 16         rol edi,16
00665448   |.  33EE            xor ebp,esi
0066544A   |.  03FE            add edi,esi
0066544C   |.  23EF            and ebp,edi
0066544E   |.  33EA            xor ebp,edx
00665450   |.  03EB            add ebp,ebx
00665452   |.  8B58 24         mov ebx,dword ptr ds:[eax+24]
00665455   |.  895C24 38       mov dword ptr ss:[esp+38],ebx
00665459   |.  8D8C29 D8988069 lea ecx,dword ptr ds:[ecx+ebp+698098D8]
00665460   |.  8BEE            mov ebp,esi
00665462   |.  C1C1 07         rol ecx,7
00665465   |.  33EF            xor ebp,edi
00665467   |.  03CF            add ecx,edi
00665469   |.  23E9            and ebp,ecx
0066546B   |.  33EE            xor ebp,esi
0066546D   |.  03EB            add ebp,ebx
0066546F   |.  8B58 28         mov ebx,dword ptr ds:[eax+28]
00665472   |.  895C24 1C       mov dword ptr ss:[esp+1C],ebx
00665476   |.  8D942A AFF7448B lea edx,dword ptr ds:[edx+ebp+8B44F7AF]
0066547D   |.  8BEF            mov ebp,edi
0066547F   |.  C1C2 0C         rol edx,0C
00665482   |.  03D1            add edx,ecx
00665484   |.  33E9            xor ebp,ecx
00665486   |.  23EA            and ebp,edx
00665488   |.  33EF            xor ebp,edi
0066548A   |.  03EB            add ebp,ebx
0066548C   |.  8B58 2C         mov ebx,dword ptr ds:[eax+2C]
0066548F   |.  895C24 34       mov dword ptr ss:[esp+34],ebx
00665493   |.  8DB42E B15BFFFF lea esi,dword ptr ds:[esi+ebp+FFFF5BB1]
0066549A   |.  8BEA            mov ebp,edx
0066549C   |.  C1C6 11         rol esi,11
0066549F   |.  03F2            add esi,edx
006654A1   |.  33E9            xor ebp,ecx
006654A3   |.  23EE            and ebp,esi
006654A5   |.  33E9            xor ebp,ecx
006654A7   |.  03EB            add ebp,ebx
006654A9   |.  8B58 30         mov ebx,dword ptr ds:[eax+30]
006654AC   |.  895C24 3C       mov dword ptr ss:[esp+3C],ebx
006654B0   |.  8DBC2F BED75C89 lea edi,dword ptr ds:[edi+ebp+895CD7BE]
006654B7   |.  8BEA            mov ebp,edx
006654B9   |.  C1C7 16         rol edi,16
006654BC   |.  03FE            add edi,esi
006654BE   |.  33EE            xor ebp,esi
006654C0   |.  23EF            and ebp,edi
006654C2   |.  33EA            xor ebp,edx
006654C4   |.  03EB            add ebp,ebx
006654C6   |.  8B58 34         mov ebx,dword ptr ds:[eax+34]
006654C9   |.  895C24 2C       mov dword ptr ss:[esp+2C],ebx
006654CD   |.  8D8C29 2211906B lea ecx,dword ptr ds:[ecx+ebp+6B901122]
006654D4   |.  8BEE            mov ebp,esi
006654D6   |.  C1C1 07         rol ecx,7
006654D9   |.  03CF            add ecx,edi
006654DB   |.  33EF            xor ebp,edi
006654DD   |.  23E9            and ebp,ecx
006654DF   |.  33EE            xor ebp,esi
006654E1   |.  03EB            add ebp,ebx
006654E3   |.  8B58 38         mov ebx,dword ptr ds:[eax+38]
006654E6   |.  8B40 3C         mov eax,dword ptr ds:[eax+3C]
006654E9   |.  895C24 44       mov dword ptr ss:[esp+44],ebx
006654ED   |.  8D942A 937198FD lea edx,dword ptr ds:[edx+ebp+FD987193]
006654F4   |.  8BEF            mov ebp,edi
006654F6   |.  C1C2 0C         rol edx,0C
006654F9   |.  03D1            add edx,ecx
006654FB   |.  33E9            xor ebp,ecx
006654FD   |.  23EA            and ebp,edx
006654FF   |.  894424 48       mov dword ptr ss:[esp+48],eax
00665503   |.  33EF            xor ebp,edi
00665505   |.  03EB            add ebp,ebx
00665507   |.  8DB42E 8E4379A6 lea esi,dword ptr ds:[esi+ebp+A679438E]
0066550E   |.  C1C6 11         rol esi,11
00665511   |.  03F2            add esi,edx
00665513   |.  8BEA            mov ebp,edx
00665515   |.  33E9            xor ebp,ecx
00665517   |.  23EE            and ebp,esi
00665519   |.  33E9            xor ebp,ecx
0066551B   |.  03E8            add ebp,eax
0066551D   |.  8DBC2F 2108B449 lea edi,dword ptr ds:[edi+ebp+49B40821]
00665524   |.  8BEE            mov ebp,esi
00665526   |.  C1C7 16         rol edi,16
00665529   |.  03FE            add edi,esi
0066552B   |.  33EF            xor ebp,edi
0066552D   |.  23EA            and ebp,edx
0066552F   |.  33EE            xor ebp,esi
00665531   |.  036C24 20       add ebp,dword ptr ss:[esp+20]
00665535   |.  8D8C29 62251EF6 lea ecx,dword ptr ds:[ecx+ebp+F61E2562]
0066553C   |.  8BEF            mov ebp,edi
0066553E   |.  C1C1 05         rol ecx,5
00665541   |.  03CF            add ecx,edi
00665543   |.  33E9            xor ebp,ecx
00665545   |.  23EE            and ebp,esi
00665547   |.  33EF            xor ebp,edi
00665549   |.  036C24 28       add ebp,dword ptr ss:[esp+28]
0066554D   |.  8D942A 40B340C0 lea edx,dword ptr ds:[edx+ebp+C040B340]
00665554   |.  C1C2 09         rol edx,9
00665557   |.  03D1            add edx,ecx
00665559   |.  8BEA            mov ebp,edx
0066555B   |.  33E9            xor ebp,ecx
0066555D   |.  23EF            and ebp,edi
0066555F   |.  33E9            xor ebp,ecx
00665561   |.  036C24 34       add ebp,dword ptr ss:[esp+34]
00665565   |.  8DB42E 515A5E26 lea esi,dword ptr ds:[esi+ebp+265E5A51]
0066556C   |.  8BEA            mov ebp,edx
0066556E   |.  C1C6 0E         rol esi,0E
00665571   |.  03F2            add esi,edx
00665573   |.  33EE            xor ebp,esi
00665575   |.  23E9            and ebp,ecx
00665577   |.  33EA            xor ebp,edx
00665579   |.  036C24 54       add ebp,dword ptr ss:[esp+54]
0066557D   |.  8DBC2F AAC7B6E9 lea edi,dword ptr ds:[edi+ebp+E9B6C7AA]
00665584   |.  8BEE            mov ebp,esi
00665586   |.  C1C7 14         rol edi,14
00665589   |.  03FE            add edi,esi
0066558B   |.  33EF            xor ebp,edi
0066558D   |.  23EA            and ebp,edx
0066558F   |.  33EE            xor ebp,esi
00665591   |.  036C24 14       add ebp,dword ptr ss:[esp+14]
00665595   |.  8D8C29 5D102FD6 lea ecx,dword ptr ds:[ecx+ebp+D62F105D]
0066559C   |.  8BEF            mov ebp,edi
0066559E   |.  C1C1 05         rol ecx,5
006655A1   |.  03CF            add ecx,edi
006655A3   |.  33E9            xor ebp,ecx
006655A5   |.  23EE            and ebp,esi
006655A7   |.  33EF            xor ebp,edi
006655A9   |.  036C24 1C       add ebp,dword ptr ss:[esp+1C]
006655AD   |.  8D942A 53144402 lea edx,dword ptr ds:[edx+ebp+2441453]
006655B4   |.  C1C2 09         rol edx,9
006655B7   |.  03D1            add edx,ecx
006655B9   |.  8BEA            mov ebp,edx
006655BB   |.  33E9            xor ebp,ecx
006655BD   |.  23EF            and ebp,edi
006655BF   |.  33E9            xor ebp,ecx
006655C1   |.  03E8            add ebp,eax
006655C3   |.  8BC2            mov eax,edx
006655C5   |.  8DB42E 81E6A1D8 lea esi,dword ptr ds:[esi+ebp+D8A1E681]
006655CC   |.  8B6C24 30       mov ebp,dword ptr ss:[esp+30]
006655D0   |.  C1C6 0E         rol esi,0E
006655D3   |.  03F2            add esi,edx
006655D5   |.  33C6            xor eax,esi
006655D7   |.  23C1            and eax,ecx
006655D9   |.  33C2            xor eax,edx
006655DB   |.  03C5            add eax,ebp
006655DD   |.  8B6C24 38       mov ebp,dword ptr ss:[esp+38]
006655E1   |.  8DBC38 C8FBD3E7 lea edi,dword ptr ds:[eax+edi+E7D3FBC8]
006655E8   |.  8BC6            mov eax,esi
006655EA   |.  C1C7 14         rol edi,14
006655ED   |.  03FE            add edi,esi
006655EF   |.  33C7            xor eax,edi
006655F1   |.  23C2            and eax,edx
006655F3   |.  33C6            xor eax,esi
006655F5   |.  03C5            add eax,ebp
006655F7   |.  8D8C08 E6CDE121 lea ecx,dword ptr ds:[eax+ecx+21E1CDE6]
006655FE   |.  C1C1 05         rol ecx,5
00665601   |.  03CF            add ecx,edi
00665603   |.  8BC7            mov eax,edi
00665605   |.  33C1            xor eax,ecx
00665607   |.  8B6C24 24       mov ebp,dword ptr ss:[esp+24]
0066560B   |.  23C6            and eax,esi
0066560D   |.  33C7            xor eax,edi
0066560F   |.  03C3            add eax,ebx
00665611   |.  8B5C24 18       mov ebx,dword ptr ss:[esp+18]
00665615   |.  8D9410 D60737C3 lea edx,dword ptr ds:[eax+edx+C33707D6]
0066561C   |.  C1C2 09         rol edx,9
0066561F   |.  03D1            add edx,ecx
00665621   |.  8BC2            mov eax,edx
00665623   |.  33C1            xor eax,ecx
00665625   |.  23C7            and eax,edi
00665627   |.  33C1            xor eax,ecx
00665629   |.  03C3            add eax,ebx
0066562B   |.  8B5C24 2C       mov ebx,dword ptr ss:[esp+2C]
0066562F   |.  8DB430 870DD5F4 lea esi,dword ptr ds:[eax+esi+F4D50D87]
00665636   |.  8BC2            mov eax,edx
00665638   |.  C1C6 0E         rol esi,0E
0066563B   |.  03F2            add esi,edx
0066563D   |.  33C6            xor eax,esi
0066563F   |.  23C1            and eax,ecx
00665641   |.  33C2            xor eax,edx
00665643   |.  03C5            add eax,ebp
00665645   |.  8B6C24 40       mov ebp,dword ptr ss:[esp+40]
00665649   |.  8DBC38 ED145A45 lea edi,dword ptr ds:[eax+edi+455A14ED]
00665650   |.  8BC6            mov eax,esi
00665652   |.  C1C7 14         rol edi,14
00665655   |.  03FE            add edi,esi
00665657   |.  33C7            xor eax,edi
00665659   |.  23C2            and eax,edx
0066565B   |.  33C6            xor eax,esi
0066565D   |.  03C3            add eax,ebx
0066565F   |.  8B5C24 10       mov ebx,dword ptr ss:[esp+10]
00665663   |.  8D8C08 05E9E3A9 lea ecx,dword ptr ds:[eax+ecx+A9E3E905]
0066566A   |.  8BC7            mov eax,edi
0066566C   |.  C1C1 05         rol ecx,5
0066566F   |.  03CF            add ecx,edi
00665671   |.  33C1            xor eax,ecx
00665673   |.  23C6            and eax,esi
00665675   |.  33C7            xor eax,edi
00665677   |.  03C5            add eax,ebp
00665679   |.  8B6C24 3C       mov ebp,dword ptr ss:[esp+3C]
0066567D   |.  8D9410 F8A3EFFC lea edx,dword ptr ds:[eax+edx+FCEFA3F8]
00665684   |.  C1C2 09         rol edx,9
00665687   |.  03D1            add edx,ecx
00665689   |.  8BC2            mov eax,edx
0066568B   |.  33C1            xor eax,ecx
0066568D   |.  23C7            and eax,edi
0066568F   |.  33C1            xor eax,ecx
00665691   |.  03C3            add eax,ebx
00665693   |.  8BDA            mov ebx,edx
00665695   |.  8DB430 D9026F67 lea esi,dword ptr ds:[eax+esi+676F02D9]
0066569C   |.  C1C6 0E         rol esi,0E
0066569F   |.  03F2            add esi,edx
006656A1   |.  33DE            xor ebx,esi
006656A3   |.  8BC3            mov eax,ebx
006656A5   |.  23C1            and eax,ecx
006656A7   |.  33C2            xor eax,edx
006656A9   |.  03C5            add eax,ebp
006656AB   |.  8B6C24 14       mov ebp,dword ptr ss:[esp+14]
006656AF   |.  8DBC38 8A4C2A8D lea edi,dword ptr ds:[eax+edi+8D2A4C8A]
006656B6   |.  8BC6            mov eax,esi
006656B8   |.  C1C7 14         rol edi,14
006656BB   |.  03FE            add edi,esi
006656BD   |.  33DF            xor ebx,edi
006656BF   |.  33C7            xor eax,edi
006656C1   |.  03DD            add ebx,ebp
006656C3   |.  8D8C0B 4239FAFF lea ecx,dword ptr ds:[ebx+ecx+FFFA3942]
006656CA   |.  8B5C24 24       mov ebx,dword ptr ss:[esp+24]
006656CE   |.  C1C1 04         rol ecx,4
006656D1   |.  03CF            add ecx,edi
006656D3   |.  33C1            xor eax,ecx
006656D5   |.  03C3            add eax,ebx
006656D7   |.  8D9C10 81F67187 lea ebx,dword ptr ds:[eax+edx+8771F681]
006656DE   |.  C1C3 0B         rol ebx,0B
006656E1   |.  03D9            add ebx,ecx
006656E3   |.  8BD3            mov edx,ebx
006656E5   |.  33D7            xor edx,edi
006656E7   |.  33D1            xor edx,ecx
006656E9   |.  8B6C24 34       mov ebp,dword ptr ss:[esp+34]
006656ED   |.  8BC3            mov eax,ebx
006656EF   |.  03D5            add edx,ebp
006656F1   |.  8B6C24 44       mov ebp,dword ptr ss:[esp+44]
006656F5   |.  8DB432 22619D6D lea esi,dword ptr ds:[edx+esi+6D9D6122]
006656FC   |.  C1C6 10         rol esi,10
006656FF   |.  03F3            add esi,ebx
00665701   |.  33C6            xor eax,esi
00665703   |.  8BD0            mov edx,eax
00665705   |.  33D1            xor edx,ecx
00665707   |.  03D5            add edx,ebp
00665709   |.  8B6C24 1C       mov ebp,dword ptr ss:[esp+1C]
0066570D   |.  8D943A 0C38E5FD lea edx,dword ptr ds:[edx+edi+FDE5380C]
00665714   |.  8B7C24 20       mov edi,dword ptr ss:[esp+20]
00665718   |.  C1C2 17         rol edx,17
0066571B   |.  03D6            add edx,esi
0066571D   |.  33C2            xor eax,edx
0066571F   |.  03C7            add eax,edi
00665721   |.  8B7C24 30       mov edi,dword ptr ss:[esp+30]
00665725   |.  8D8C08 44EABEA4 lea ecx,dword ptr ds:[eax+ecx+A4BEEA44]
0066572C   |.  8BC6            mov eax,esi
0066572E   |.  C1C1 04         rol ecx,4
00665731   |.  33C2            xor eax,edx
00665733   |.  03CA            add ecx,edx
00665735   |.  33C1            xor eax,ecx
00665737   |.  03C7            add eax,edi
00665739   |.  8DBC18 A9CFDE4B lea edi,dword ptr ds:[eax+ebx+4BDECFA9]
00665740   |.  8B5C24 10       mov ebx,dword ptr ss:[esp+10]
00665744   |.  C1C7 0B         rol edi,0B
00665747   |.  03F9            add edi,ecx
00665749   |.  8BC7            mov eax,edi
0066574B   |.  33C2            xor eax,edx
0066574D   |.  33C1            xor eax,ecx
0066574F   |.  03C3            add eax,ebx
00665751   |.  8DB430 604BBBF6 lea esi,dword ptr ds:[eax+esi+F6BB4B60]
00665758   |.  8BC7            mov eax,edi
0066575A   |.  C1C6 10         rol esi,10
0066575D   |.  03F7            add esi,edi
0066575F   |.  33C6            xor eax,esi
00665761   |.  8BD8            mov ebx,eax
00665763   |.  33D9            xor ebx,ecx
00665765   |.  03DD            add ebx,ebp
00665767   |.  8B6C24 28       mov ebp,dword ptr ss:[esp+28]
0066576B   |.  8D9413 70BCBFBE lea edx,dword ptr ds:[ebx+edx+BEBFBC70]
00665772   |.  8B5C24 2C       mov ebx,dword ptr ss:[esp+2C]
00665776   |.  C1C2 17         rol edx,17
00665779   |.  03D6            add edx,esi
0066577B   |.  33C2            xor eax,edx
0066577D   |.  03C3            add eax,ebx
0066577F   |.  8B5C24 54       mov ebx,dword ptr ss:[esp+54]
00665783   |.  8D8C08 C67E9B28 lea ecx,dword ptr ds:[eax+ecx+289B7EC6]
0066578A   |.  8BC6            mov eax,esi
0066578C   |.  C1C1 04         rol ecx,4
0066578F   |.  03CA            add ecx,edx
00665791   |.  33C2            xor eax,edx
00665793   |.  33C1            xor eax,ecx
00665795   |.  03C3            add eax,ebx
00665797   |.  8B5C24 18       mov ebx,dword ptr ss:[esp+18]
0066579B   |.  8DBC38 FA27A1EA lea edi,dword ptr ds:[eax+edi+EAA127FA]
006657A2   |.  C1C7 0B         rol edi,0B
006657A5   |.  03F9            add edi,ecx
006657A7   |.  8BC7            mov eax,edi
006657A9   |.  33C2            xor eax,edx
006657AB   |.  33C1            xor eax,ecx
006657AD   |.  03C3            add eax,ebx
006657AF   |.  8D9C30 8530EFD4 lea ebx,dword ptr ds:[eax+esi+D4EF3085]
006657B6   |.  8BC7            mov eax,edi
006657B8   |.  C1C3 10         rol ebx,10
006657BB   |.  03DF            add ebx,edi
006657BD   |.  33C3            xor eax,ebx
006657BF   |.  8BF0            mov esi,eax
006657C1   |.  33F1            xor esi,ecx
006657C3   |.  03F5            add esi,ebp
006657C5   |.  8B6C24 38       mov ebp,dword ptr ss:[esp+38]
006657C9   |.  8D9416 051D8804 lea edx,dword ptr ds:[esi+edx+4881D05]
006657D0   |.  C1C2 17         rol edx,17
006657D3   |.  03D3            add edx,ebx
006657D5   |.  33C2            xor eax,edx
006657D7   |.  03C5            add eax,ebp
006657D9   |.  8D8C08 39D0D4D9 lea ecx,dword ptr ds:[eax+ecx+D9D4D039]
006657E0   |.  C1C1 04         rol ecx,4
006657E3   |.  8B4424 3C       mov eax,dword ptr ss:[esp+3C]
006657E7   |.  8BF3            mov esi,ebx
006657E9   |.  03CA            add ecx,edx
006657EB   |.  33F2            xor esi,edx
006657ED   |.  33F1            xor esi,ecx
006657EF   |.  8B6C24 48       mov ebp,dword ptr ss:[esp+48]
006657F3   |.  03F0            add esi,eax
006657F5   |.  8DB43E E599DBE6 lea esi,dword ptr ds:[esi+edi+E6DB99E5]
006657FC   |.  C1C6 0B         rol esi,0B
006657FF   |.  03F1            add esi,ecx
00665801   |.  8BFE            mov edi,esi
00665803   |.  33FA            xor edi,edx
00665805   |.  33F9            xor edi,ecx
00665807   |.  03FD            add edi,ebp
00665809   |.  8BEE            mov ebp,esi
0066580B   |.  8DBC1F F87CA21F lea edi,dword ptr ds:[edi+ebx+1FA27CF8]
00665812   |.  8B5C24 40       mov ebx,dword ptr ss:[esp+40]
00665816   |.  C1C7 10         rol edi,10
00665819   |.  03FE            add edi,esi
0066581B   |.  33EF            xor ebp,edi
0066581D   |.  33E9            xor ebp,ecx
0066581F   |.  03EB            add ebp,ebx
00665821   |.  8D942A 6556ACC4 lea edx,dword ptr ds:[edx+ebp+C4AC5665]
00665828   |.  8BEE            mov ebp,esi
0066582A   |.  C1C2 17         rol edx,17
0066582D   |.  03D7            add edx,edi
0066582F   |.  F7D5            not ebp
00665831   |.  0BEA            or ebp,edx
00665833   |.  33EF            xor ebp,edi
00665835   |.  036C24 54       add ebp,dword ptr ss:[esp+54]
00665839   |.  8D8C29 442229F4 lea ecx,dword ptr ds:[ecx+ebp+F4292244]
00665840   |.  8BEF            mov ebp,edi
00665842   |.  C1C1 06         rol ecx,6
00665845   |.  03CA            add ecx,edx
00665847   |.  F7D5            not ebp
00665849   |.  0BE9            or ebp,ecx
0066584B   |.  33EA            xor ebp,edx
0066584D   |.  036C24 10       add ebp,dword ptr ss:[esp+10]
00665851   |.  8DB42E 97FF2A43 lea esi,dword ptr ds:[esi+ebp+432AFF97]
00665858   |.  8BEA            mov ebp,edx
0066585A   |.  C1C6 0A         rol esi,0A
0066585D   |.  03F1            add esi,ecx
0066585F   |.  F7D5            not ebp
00665861   |.  0BEE            or ebp,esi
00665863   |.  33E9            xor ebp,ecx
00665865   |.  036C24 44       add ebp,dword ptr ss:[esp+44]
00665869   |.  8DBC2F A72394AB lea edi,dword ptr ds:[edi+ebp+AB9423A7]
00665870   |.  8BE9            mov ebp,ecx
00665872   |.  C1C7 0F         rol edi,0F
00665875   |.  03FE            add edi,esi
00665877   |.  F7D5            not ebp
00665879   |.  0BEF            or ebp,edi
0066587B   |.  33EE            xor ebp,esi
0066587D   |.  036C24 14       add ebp,dword ptr ss:[esp+14]
00665881   |.  8D942A 39A093FC lea edx,dword ptr ds:[edx+ebp+FC93A039]
00665888   |.  8BEE            mov ebp,esi
0066588A   |.  C1C2 15         rol edx,15
0066588D   |.  03D7            add edx,edi
0066588F   |.  F7D5            not ebp
00665891   |.  0BEA            or ebp,edx
00665893   |.  33EF            xor ebp,edi
00665895   |.  03E8            add ebp,eax
00665897   |.  8BC7            mov eax,edi
00665899   |.  F7D0            not eax
0066589B   |.  8D8C29 C3595B65 lea ecx,dword ptr ds:[ecx+ebp+655B59C3]
006658A2   |.  8B6C24 18       mov ebp,dword ptr ss:[esp+18]
006658A6   |.  C1C1 06         rol ecx,6
006658A9   |.  03CA            add ecx,edx
006658AB   |.  0BC1            or eax,ecx
006658AD   |.  33C2            xor eax,edx
006658AF   |.  03C5            add eax,ebp
006658B1   |.  8B6C24 1C       mov ebp,dword ptr ss:[esp+1C]
006658B5   |.  8DB430 92CC0C8F lea esi,dword ptr ds:[eax+esi+8F0CCC92]
006658BC   |.  8BC2            mov eax,edx
006658BE   |.  C1C6 0A         rol esi,0A
006658C1   |.  03F1            add esi,ecx
006658C3   |.  F7D0            not eax
006658C5   |.  0BC6            or eax,esi
006658C7   |.  33C1            xor eax,ecx
006658C9   |.  03C5            add eax,ebp
006658CB   |.  8DBC38 7DF4EFFF lea edi,dword ptr ds:[eax+edi+FFEFF47D]
006658D2   |.  8B6C24 20       mov ebp,dword ptr ss:[esp+20]
006658D6   |.  8BC1            mov eax,ecx
006658D8   |.  C1C7 0F         rol edi,0F
006658DB   |.  03FE            add edi,esi
006658DD   |.  F7D0            not eax
006658DF   |.  0BC7            or eax,edi
006658E1   |.  33C6            xor eax,esi
006658E3   |.  03C5            add eax,ebp
006658E5   |.  8B6C24 24       mov ebp,dword ptr ss:[esp+24]
006658E9   |.  8D9410 D15D8485 lea edx,dword ptr ds:[eax+edx+85845DD1]
006658F0   |.  8BC6            mov eax,esi
006658F2   |.  C1C2 15         rol edx,15
006658F5   |.  03D7            add edx,edi
006658F7   |.  F7D0            not eax
006658F9   |.  0BC2            or eax,edx
006658FB   |.  33C7            xor eax,edi
006658FD   |.  03C5            add eax,ebp
006658FF   |.  8B6C24 48       mov ebp,dword ptr ss:[esp+48]
00665903   |.  8D8C08 4F7EA86F lea ecx,dword ptr ds:[eax+ecx+6FA87E4F]
0066590A   |.  8BC7            mov eax,edi
0066590C   |.  C1C1 06         rol ecx,6
0066590F   |.  03CA            add ecx,edx
00665911   |.  F7D0            not eax
00665913   |.  0BC1            or eax,ecx
00665915   |.  33C2            xor eax,edx
00665917   |.  03C5            add eax,ebp
00665919   |.  8B6C24 28       mov ebp,dword ptr ss:[esp+28]
0066591D   |.  8D8430 E0E62CFE lea eax,dword ptr ds:[eax+esi+FE2CE6E0]
00665924   |.  8BF2            mov esi,edx
00665926   |.  C1C0 0A         rol eax,0A
00665929   |.  03C1            add eax,ecx
0066592B   |.  F7D6            not esi
0066592D   |.  0BF0            or esi,eax
0066592F   |.  33F1            xor esi,ecx
00665931   |.  03F5            add esi,ebp
00665933   |.  8B6C24 2C       mov ebp,dword ptr ss:[esp+2C]
00665937   |.  8DB43E 144301A3 lea esi,dword ptr ds:[esi+edi+A3014314]
0066593E   |.  8BF9            mov edi,ecx
00665940   |.  C1C6 0F         rol esi,0F
00665943   |.  03F0            add esi,eax
00665945   |.  F7D7            not edi
00665947   |.  0BFE            or edi,esi
00665949   |.  33F8            xor edi,eax
0066594B   |.  03FD            add edi,ebp
0066594D   |.  8B6C24 30       mov ebp,dword ptr ss:[esp+30]
00665951   |.  8D9417 A111084E lea edx,dword ptr ds:[edi+edx+4E0811A1]
00665958   |.  8BF8            mov edi,eax
0066595A   |.  C1C2 15         rol edx,15
0066595D   |.  03D6            add edx,esi
0066595F   |.  F7D7            not edi
00665961   |.  0BFA            or edi,edx
00665963   |.  33FE            xor edi,esi
00665965   |.  03FD            add edi,ebp
00665967   |.  8B6C24 34       mov ebp,dword ptr ss:[esp+34]
0066596B   |.  8D8C0F 827E53F7 lea ecx,dword ptr ds:[edi+ecx+F7537E82]
00665972   |.  8BFE            mov edi,esi
00665974   |.  C1C1 06         rol ecx,6
00665977   |.  03CA            add ecx,edx
00665979   |.  F7D7            not edi
0066597B   |.  0BF9            or edi,ecx
0066597D   |.  33FA            xor edi,edx
0066597F   |.  03FD            add edi,ebp
00665981   |.  8B6C24 38       mov ebp,dword ptr ss:[esp+38]
00665985   |.  8DBC07 35F23ABD lea edi,dword ptr ds:[edi+eax+BD3AF235]
0066598C   |.  8BC2            mov eax,edx
0066598E   |.  C1C7 0A         rol edi,0A
00665991   |.  03F9            add edi,ecx
00665993   |.  F7D0            not eax
00665995   |.  0BC7            or eax,edi
00665997   |.  33C1            xor eax,ecx
00665999   |.  03C3            add eax,ebx
0066599B   |.  8DB430 BBD2D72A lea esi,dword ptr ds:[eax+esi+2AD7D2BB]
006659A2   |.  8BC1            mov eax,ecx
006659A4   |.  C1C6 0F         rol esi,0F
006659A7   |.  03F7            add esi,edi
006659A9   |.  F7D0            not eax
006659AB   |.  0BC6            or eax,esi
006659AD   |.  33C7            xor eax,edi
006659AF   |.  03C5            add eax,ebp
006659B1   |.  8D9410 91D386EB lea edx,dword ptr ds:[eax+edx+EB86D391]
006659B8   |.  C1C2 15         rol edx,15
006659BB   |.  8B4424 50       mov eax,dword ptr ss:[esp+50]
006659BF   |.  03D6            add edx,esi
006659C1   |.  8B18            mov ebx,dword ptr ds:[eax]
006659C3   |.  03D9            add ebx,ecx
006659C5   |.  8B48 04         mov ecx,dword ptr ds:[eax+4]
006659C8   |.  03CA            add ecx,edx
006659CA   |.  8918            mov dword ptr ds:[eax],ebx
006659CC   |.  8948 04         mov dword ptr ds:[eax+4],ecx
006659CF   |.  8B48 08         mov ecx,dword ptr ds:[eax+8]
006659D2   |.  03CE            add ecx,esi
006659D4   |.  8948 08         mov dword ptr ds:[eax+8],ecx
006659D7   |.  8B48 0C         mov ecx,dword ptr ds:[eax+C]
006659DA   |.  03CF            add ecx,edi
006659DC   |.  5F              pop edi
006659DD   |.  5E              pop esi
006659DE   |.  5D              pop ebp
006659DF   |.  8948 0C         mov dword ptr ds:[eax+C],ecx
006659E2   |.  5B              pop ebx
006659E3   |.  83C4 3C         add esp,3C
006659E6   \.  C3              retn

核心函数无非是对两个参数中的值进行相关异或,与,加,一位等运算,这里不详细说明了,本来想用C实现次函数,但太长了,就Copy,稍微修改一下,直接用吧

整个算法分析可分为六部分
(1)初始化buf2
(2)计算数据区buf3
(3)两次调用核心函数计算buf2
(4)初始数据区buf3
(5)最后调用核心函数以buf3为参数计算buf2
(6)对注册码后部分进行计算和buf2进行比较,是否符合

可见算法没有计算出正确的注册码,而是根据提供的伪注册码进行某种规则计算看是否满足要求,
因此写注册机算出注册码,我只想到了一个方法穷举法 高手指点
在实际写注册机时,并没有完全穷举,而是通过时间初始化随机种子,再调用随机函数初始化注册序列,看其是否满足要求因此注册机给出算法的时间也是随机的,看运气
小弟算出的几个注册序列
[PDF Editor]
SN="PED"
Modules="MyModules"
Users="qqjack"
Licensee="Unregistered Retail Customer"
ExpireDate="2012/12/12"
Sign="MySelf"
LicenseDate="2011/04/16"
CDKey="PFB9J6ZYJXZ36ZLSP683TU5U1DN1N"



下一个计算中……

给出注册机主过程
unsigned char Code1[4],Code2[4];
        srand(time(NULL));
        char KeyCode[30]={0};
        KeyCode[30]=0;
        this->UpdateData();
        m_BtnOk.EnableWindow(false);

        this->ShowWindow(SW_SHOWMINIMIZED);
        do
        {
                TempBuf[0]=ConstateVaule4;
            TempBuf[1]=ConstateVaule5;
            TempBuf[2]=ConstateVaule6;
            TempBuf[3]=ConstateVaule7;
                for(int i=0;i<29;i++)
                        KeyCode[i]=SubCode[int(1.0*rand()/RAND_MAX*39)];
//                sprintf(KeyCode,"1234-5678-9abfc-cdef-ghij-klm");
//                sprintf(KeyCode,"CDAZPX!TAI9!41PTQ1T9TJYWQFOER");
                for(i=0;i<29;i++)                               //把KeyCode中的小写变大写
                {
                        if(KeyCode[i]>='a'&&KeyCode[i]<='z')
                                KeyCode[i]=KeyCode[i]-'a'+'A';
                }
                Code1[0]=((KeyCode[5]<<4)+KeyCode[6])-0x51;          //第五位于第六位进行运算保存到Code1的第一位
                Code1[1]=((KeyCode[7]<<4)+KeyCode[8])-0x51;                   //第七位于第八位进行运算保存到Code1的第二位
                Code1[2]=((KeyCode[10]<<4)+KeyCode[11])-0x51;        //第十位于第十一位进行运算保存到Code1的第三位
                Code1[3]=((KeyCode[12]<<4)+KeyCode[13])-0x51;        //第十二位于第十三位进行运算保存到Code1的第四位
                memcpy(OneceDoBuf,KeyCode,4);                  //取注册码前四位保存到OneceDoBuf
                memcpy(&OneceDoBuf[4],Code1,4);                //取Code1中数据添加到OneceDoBuf中
                memcpy(&OneceDoBuf[8],ConstateStr,strlen(ConstateStr)); //把字符串常量数据添加到OneceDoBuf中
                Compute((unsigned*)OneceDoBuf);
                Compute((unsigned*)&OneceDoBuf[128/2]);
                memset(OneceDoBuf,0,128);
                GetAnotherData(OneceDoBuf);
                Compute((unsigned*)OneceDoBuf);
                Code2[0]=((KeyCode[15]<<4)+KeyCode[16])-0x51;          //第十五位于第十六位进行运算保存到Code1的第一位
                Code2[1]=((KeyCode[17]<<4)+KeyCode[18])-0x51;                   //第十七位于第十八位进行运算保存到Code1的第二位
                Code2[2]=((KeyCode[20]<<4)+KeyCode[21])-0x51;        //第二十位于第二一位进行运算保存到Code1的第三位
                Code2[3]=((KeyCode[22]<<4)+KeyCode[23])-0x51;
                if(IsKeyCode(Code2,(unsigned char*)TempBuf))break;
               
        }while(1);
        this->ShowWindow(SW_NORMAL);
        m_KeyCode=Part1+"Users=\""+m_User+"\"\r\n"+Part2;
        m_KeyCode+="CDKey=\""+CString(KeyCode)+"\"";
        m_BtnOk.EnableWindow(true);
    this->UpdateData(false);

分析有错误的地方还希望大家指点,小菜学习中
哇……
好长
实验对象Foxit PDF Editor2.2就不上传啦,太大拉,上传不了
附上源码 Foxit_PDF_EditorKeyGenCode.rar
程序 Foxit_PDF_EditorKeyGen.exe.rar


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 248
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
添加一个计算出来的注册序列
[PDF Editor]
SN="PED"
Modules="MyModules"
Users="QQJACK"
Licensee="Unregistered Retail Customer"
ExpireDate="2012/12/12"
Sign="MySelf"
LicenseDate="2011/04/16"
CDKey="TJBD5HUIB96TGIZ5YYYIEJ.Z5NAF8"
2011-4-19 17:44
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
适合新手的好文章啊, 向楼主学习
2011-4-20 01:48
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
前天刚下了个foxit editor,楼主的注册码很及时,谢谢

破解过程就得等自己入门后再研究了
2011-4-20 10:25
0
雪    币: 96
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
真是高手呀,我也曾试过了,只能暴破,没想到楼主做出了注册机,配服
2011-4-20 12:39
0
雪    币: 182
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
嗯,都做出了这个的注册机,标题写菜鸟太过谦虚了。
2011-4-20 16:01
0
雪    币: 18
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主好厉害,向你学习,你太棒了!棒棒!
2011-4-20 16:49
0
雪    币: 248
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
没有啦,我也是研究了几天才搞出来的
发出来相互学习,多多指教啦
2011-4-21 08:00
0
雪    币: 1903
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哦,注册机是源程序,还想偷懒直接执行呢!
2011-4-21 08:35
0
雪    币: 342
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
向楼主学习,搞个软件注册算法,换个邀请码
2011-4-21 09:52
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主你也太犀利了吧,向你学习了
2011-4-21 11:05
0
雪    币: 152
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
写的很详细。新手学习一下。
2011-4-21 12:07
0
雪    币: 1895
活跃值: (1657)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
楼主强大啊。。。。
我沿着汇编看了十五分钟就乱了。。。。
2011-4-21 12:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
回下,看看我的用户级别
2011-4-22 16:09
0
雪    币: 197
活跃值: (139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yxg
15
俺菜,不知道如何编译成可执行的注册机!
2011-4-22 16:33
0
雪    币: 248
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
程序,由于是用的类似的穷举算法,所有比较耗时,看运气啦
上传的附件:
2011-4-22 18:24
0
雪    币: 168
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学习了。。谢谢楼主分享
2011-4-22 21:58
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
lz太有成就了,学习下
unsigned char Code1[4],Code2[4];
srand(time(NULL));
char KeyCode[30]={0};
KeyCode[30]=0;
this->UpdateData();
m_BtnOk.EnableWindow(false);

this->ShowWindow(SW_SHOWMINIMIZED);
do
{
TempBuf[0]=ConstateVaule4;
TempBuf[1]=ConstateVaule5;
TempBuf[2]=ConstateVaule6;
TempBuf[3]=ConstateVaule7;
for(int i=0;i<29;i++)
KeyCode=SubCode[int(1.0*rand()/RAND_MAX*39)];
// sprintf(KeyCode,"1234-5678-9abfc-cdef-ghij-klm");
// sprintf(KeyCode,"CDAZPX!TAI9!41PTQ1T9TJYWQFOER");
for(i=0;i<29;i++) //把KeyCode中的小写变大写
{
if(KeyCode>='a'&&KeyCode<='z')
KeyCode=KeyCode-'a'+'A';
}
Code1[0]=((KeyCode[5]<<4)+KeyCode[6])-0x51; //第五位于第六位进行运算保存到Code1的第一位
Code1[1]=((KeyCode[7]<<4)+KeyCode[8])-0x51; //第七位于第八位进行运算保存到Code1的第二位
Code1[2]=((KeyCode[10]<<4)+KeyCode[11])-0x51; //第十位于第十一位进行运算保存到Code1的第三位
Code1[3]=((KeyCode[12]<<4)+KeyCode[13])-0x51; //第十二位于第十三位进行运算保存到Code1的第四位
memcpy(OneceDoBuf,KeyCode,4); //取注册码前四位保存到OneceDoBuf
memcpy(&OneceDoBuf[4],Code1,4); //取Code1中数据添加到OneceDoBuf中
memcpy(&OneceDoBuf[8],ConstateStr,strlen(ConstateStr)); //把字符串常量数据添加到OneceDoBuf中
Compute((unsigned*)OneceDoBuf);
Compute((unsigned*)&OneceDoBuf[128/2]);
memset(OneceDoBuf,0,128);
GetAnotherData(OneceDoBuf);
Compute((unsigned*)OneceDoBuf);
Code2[0]=((KeyCode[15]<<4)+KeyCode[16])-0x51; //第十五位于第十六位进行运算保存到Code1的第一位
Code2[1]=((KeyCode[17]<<4)+KeyCode[18])-0x51; //第十七位于第十八位进行运算保存到Code1的第二位
Code2[2]=((KeyCode[20]<<4)+KeyCode[21])-0x51; //第二十位于第二一位进行运算保存到Code1的第三位
Code2[3]=((KeyCode[22]<<4)+KeyCode[23])-0x51;
if(IsKeyCode(Code2,(unsigned char*)TempBuf))break;

}while(1);
this->ShowWindow(SW_NORMAL);
m_KeyCode=Part1+"Users=\""+m_User+"\"\r\n"+Part2;
m_KeyCode+="CDKey=\""+CString(KeyCode)+"\"";
m_BtnOk.EnableWindow(true);
this->UpdateData(false);
2011-4-22 22:44
0
雪    币: 197
活跃值: (139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yxg
19
注册机输入用户名后,点击确定就最小化了,什么也没有,只能右键退出,好像不能使用!
2011-4-22 22:50
0
雪    币: 248
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
算法穷举出注册码后会自动弹出窗体显示,比较耗时,有什么号的意见,请高手指点啊
2011-4-22 22:56
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21


胡乱输入一个key之后怎么让程序在出错的地方暂停


打开 install license key
胡乱输入一个KEY提示错误后,暂停,查看调用堆栈,来到
00422D58    .  50              push eax                                             ; /输入的注册码
00422D59    .  E8 D259FEFF     call PDFEdit.00408730                  ;单步进入

怎么来到  000422d58?????????????
2011-4-23 21:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
想学。。。。。
2011-4-24 14:50
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
胡乱输入一个key之后怎么让程序在出错的地方暂停


打开 install license key
胡乱输入一个KEY提示错误后,暂停,查看调用堆栈,来到
00422D58    .  50              push eax                                             ; /输入的注册码
00422D59    .  E8 D259FEFF     call PDFEdit.00408730                  ;单步进入

怎么来到  000422d58?????????????
用的什么断点,??
什么命令?
2011-4-24 16:26
0
雪    币: 248
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
主要是看调用堆栈,可能不同电脑上这个函数的位置不同吧,可以在调用堆栈中

看到最后那个函数调用没,参数是注册码
上传的附件:
  • 1.jpg (124.84kb,28次下载)
2011-4-24 17:24
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
用的win7 不能找到你的那张图片上的堆栈
只是,2个 message box 找到了(你的图上的)
后面的就和你的找到的不一样了。
win7真难用
2011-4-24 18:02
0
游客
登录 | 注册 方可回帖
返回
//