首页
社区
课程
招聘
请求前辈指点迷津
发表于: 2004-10-2 15:50 4215

请求前辈指点迷津

2004-10-2 15:50
4215
我是一名初学者,在分析fineprint的算法时,对其算法百思不得其解,请前辈指点。
我的分析过程:

FinePrint 2000 version 5.27

cracker:essorg
tools:trw2000pll跟踪,U功能截码
level:0

017F:2A06C03C 55               PUSH     EBP
017F:2A06C03D 8BEC             MOV      EBP,ESP
017F:2A06C03F 83EC10           SUB      ESP,BYTE +10
017F:2A06C042 894DF4           MOV      [EBP-0C],ECX
017F:2A06C045 8B4508           MOV      EAX,[EBP+08]
017F:2A06C048 50               PUSH     EAX
017F:2A06C049 E8A2090200       CALL     2A08C9F0                        〈----求输入注册码长度
017F:2A06C04E 83C404           ADD      ESP,BYTE +04
017F:2A06C051 83F80E           CMP      EAX,BYTE +0E                        〈----注册码长度=14?
017F:2A06C054 7407             JZ       2A06C05D
017F:2A06C056 33C0             XOR      EAX,EAX
017F:2A06C058 E9AB000000       JMP      2A06C108
017F:2A06C05D C745FC00000000   MOV      DWORD [EBP-04],00
017F:2A06C064 EB09             JMP      SHORT 2A06C06F
017F:2A06C066 8B4DFC           MOV      ECX,[EBP-04]                        〈----
017F:2A06C069 83C101           ADD      ECX,BYTE +01                        〈----注册码段数统计
017F:2A06C06C 894DFC           MOV      [EBP-04],ECX                        〈----共3段
017F:2A06C06F 837DFC03         CMP      DWORD [EBP-04],BYTE +03        〈----
017F:2A06C073 0F8D83000000     JNL     NEAR 2A06C0FC
017F:2A06C079 C745F800000000   MOV      DWORD [EBP-08],00
017F:2A06C080 EB09             JMP      SHORT 2A06C08B
017F:2A06C082 8B55F8           MOV      EDX,[EBP-08]                        〈----
017F:2A06C085 83C201           ADD      EDX,BYTE +01                        〈----每段字符数统计
017F:2A06C088 8955F8           MOV      [EBP-08],EDX                        〈----4字符为一段
017F:2A06C08B 837DF804         CMP      DWORD [EBP-08],BYTE +04        〈----
017F:2A06C08F 7D48             JNL      2A06C0D9
017F:2A06C091 8B4508           MOV      EAX,[EBP+08]                        〈----
017F:2A06C094 8A08             MOV      CL,[EAX]                        〈----               
017F:2A06C096 884DF3           MOV      [EBP-0D],CL                        〈----
017F:2A06C099 8A55F3           MOV      DL,[EBP-0D]                        〈----取一位注册码
017F:2A06C09C 52               PUSH     EDX                                〈----用于计算在计算尺
017F:2A06C09D 8B4508           MOV      EAX,[EBP+08]                        〈----中的序号,并将剩余
017F:2A06C0A0 83C001           ADD      EAX,BYTE +01                        〈----注册码前移一位
017F:2A06C0A3 894508           MOV      [EBP+08],EAX                        〈----
017F:2A06C0A6 E87D030000       CALL     2A06C428                        〈----以标尺转换输入注册码对应序列
017F:2A06C0AB 8B4DFC           MOV      ECX,[EBP-04]                        〈----
017F:2A06C0AE 8B55F4           MOV      EDX,[EBP-0C]                        〈----
017F:2A06C0B1 8D0C8A           LEA      ECX,[EDX+ECX*4]                〈----
017F:2A06C0B4 8B55F8           MOV      EDX,[EBP-08]                        〈----计算出序列号
017F:2A06C0B7 880411           MOV      [ECX+EDX],AL                        〈----放入预定位置
017F:2A06C0BA 8B45FC           MOV      EAX,[EBP-04]                        〈----
017F:2A06C0BD 8B4DF4           MOV      ECX,[EBP-0C]                        〈----
017F:2A06C0C0 8D1481           LEA      EDX,[ECX+EAX*4]                〈----
017F:2A06C0C3 8B45F8           MOV      EAX,[EBP-08]                       
017F:2A06C0C6 33C9             XOR      ECX,ECX                       
017F:2A06C0C8 8A0C02           MOV      CL,[EDX+EAX]
017F:2A06C0CB 81F9FF000000     CMP      ECX,FF
017F:2A06C0D1 7504             JNZ      2A06C0D7
017F:2A06C0D3 33C0             XOR      EAX,EAX
017F:2A06C0D5 EB31             JMP      SHORT 2A06C108
017F:2A06C0D7 EBA9             JMP      SHORT 2A06C082
017F:2A06C0D9 837DFC01         CMP      DWORD [EBP-04],BYTE +01
017F:2A06C0DD 7F18             JG       2A06C0F7
017F:2A06C0DF 8B5508           MOV      EDX,[EBP+08]                        〈----
017F:2A06C0E2 0FBE02           MOVSX    EAX,BYTE [EDX]                〈----
017F:2A06C0E5 8B4D08           MOV      ECX,[EBP+08]                        〈----将输入注册码
017F:2A06C0E8 83C101           ADD      ECX,BYTE +01                        〈----中间隔符去除
017F:2A06C0EB 894D08           MOV      [EBP+08],ECX                        〈----
017F:2A06C0EE 83F82D           CMP      EAX,BYTE +2D                        〈----字符为“-”
017F:2A06C0F1 7404             JZ       2A06C0F7
017F:2A06C0F3 33C0             XOR      EAX,EAX
017F:2A06C0F5 EB11             JMP      SHORT 2A06C108
017F:2A06C0F7 E96AFFFFFF       JMP      2A06C066                        〈----继续
017F:2A06C0FC 8B550C           MOV      EDX,[EBP+0C]                        〈----参数1:50
017F:2A06C0FF 52               PUSH     EDX
017F:2A06C100 8B4DF4           MOV      ECX,[EBP-0C]                        〈----参数2:转换后序列号地址
017F:2A06C103 E806000000       CALL     2A06C10E                        〈----比对核心
017F:2A06C108 8BE5             MOV      ESP,EBP
017F:2A06C10A 5D               POP      EBP
017F:2A06C10B C20800           RET      08

******************************************************************************************
017F:2A06C10E 55               PUSH     EBP
017F:2A06C10F 8BEC             MOV      EBP,ESP
017F:2A06C111 83EC10           SUB      ESP,BYTE +10
017F:2A06C114 56               PUSH     ESI
017F:2A06C115 894DF8           MOV      [EBP-08],ECX
017F:2A06C118 C745FC00000000   MOV      DWORD [EBP-04],00
017F:2A06C11F 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C122 83780C00         CMP      DWORD [EAX+0C],BYTE +00
017F:2A06C126 0F848E000000     JZ       NEAR 2A06C1BA

017F:2A06C12C 8B4DF8           MOV      ECX,[EBP-08]
017F:2A06C12F 8B11             MOV      EDX,[ECX]
017F:2A06C131 52               PUSH     EDX
017F:2A06C132 6A00             PUSH     BYTE +00
017F:2A06C134 68F0FF0000       PUSH     DWORD FFF0
017F:2A06C139 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C13C 8B480C           MOV      ECX,[EAX+0C]
017F:2A06C13F 51               PUSH     ECX
017F:2A06C140 FF1590270B2A     CALL     `USER32!SendMessageA`
017F:2A06C146 85C0             TEST     EAX,EAX
017F:2A06C148 7507             JNZ      2A06C151

017F:2A06C14A 33C0             XOR      EAX,EAX
017F:2A06C14C E9D0020000       JMP      2A06C421
017F:2A06C151 8B55F8           MOV      EDX,[EBP-08]
017F:2A06C154 8B4204           MOV      EAX,[EDX+04]
017F:2A06C157 50               PUSH     EAX
017F:2A06C158 6A00             PUSH     BYTE +00
017F:2A06C15A 68F1FF0000       PUSH     DWORD FFF1
017F:2A06C15F 8B4DF8           MOV      ECX,[EBP-08]
017F:2A06C162 8B510C           MOV      EDX,[ECX+0C]
017F:2A06C165 52               PUSH     EDX
017F:2A06C166 FF1590270B2A     CALL     `USER32!SendMessageA`
017F:2A06C16C 85C0             TEST     EAX,EAX
017F:2A06C16E 7507             JNZ      2A06C177

017F:2A06C170 33C0             XOR      EAX,EAX
017F:2A06C172 E9AA020000       JMP      2A06C421
017F:2A06C177 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C17A 8B4808           MOV      ECX,[EAX+08]
017F:2A06C17D 51               PUSH     ECX
017F:2A06C17E 6A00             PUSH     BYTE +00
017F:2A06C180 68F2FF0000       PUSH     DWORD FFF2
017F:2A06C185 8B55F8           MOV      EDX,[EBP-08]
017F:2A06C188 8B420C           MOV      EAX,[EDX+0C]
017F:2A06C18B 50               PUSH     EAX
017F:2A06C18C FF1590270B2A     CALL     `USER32!SendMessageA`
017F:2A06C192 85C0             TEST     EAX,EAX
017F:2A06C194 7507             JNZ      2A06C19D

017F:2A06C196 33C0             XOR      EAX,EAX
017F:2A06C198 E984020000       JMP      2A06C421
017F:2A06C19D 8B4D08           MOV      ECX,[EBP+08]
017F:2A06C1A0 51               PUSH     ECX
017F:2A06C1A1 6A00             PUSH     BYTE +00
017F:2A06C1A3 68F3FF0000       PUSH     DWORD FFF3
017F:2A06C1A8 8B55F8           MOV      EDX,[EBP-08]
017F:2A06C1AB 8B420C           MOV      EAX,[EDX+0C]
017F:2A06C1AE 50               PUSH     EAX
017F:2A06C1AF FF1590270B2A     CALL     `USER32!SendMessageA`
017F:2A06C1B5 E967020000       JMP      2A06C421

017F:2A06C1BA 8B4DF8           MOV      ECX,[EBP-08]
017F:2A06C1BD E82EF8FFFF       CALL     2A06B9F0                        〈----
017F:2A06C1C2 8BF0             MOV      ESI,EAX                        〈----
017F:2A06C1C4 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C1C7 83C104           ADD      ECX,BYTE +04                        〈----
017F:2A06C1CA E821F8FFFF       CALL     2A06B9F0                        〈----判断输入注册码
017F:2A06C1CF 03F0             ADD      ESI,EAX                        〈----中只有一段中有
017F:2A06C1D1 8B4DF8           MOV      ECX,[EBP-08]                        〈----两位相同,否则
017F:2A06C1D4 83C108           ADD      ECX,BYTE +08                        〈----退出本段程序。
017F:2A06C1D7 E814F8FFFF       CALL     2A06B9F0                        〈----
017F:2A06C1DC 03F0             ADD      ESI,EAX                        〈----
017F:2A06C1DE 83FE01           CMP      ESI,BYTE +01                        〈----
017F:2A06C1E1 7407             JZ       2A06C1EA                        〈----

017F:2A06C1E3 33C0             XOR      EAX,EAX
017F:2A06C1E5 E937020000       JMP      2A06C421

017F:2A06C1EA 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C1ED E8FEF7FFFF       CALL     2A06B9F0                              .
017F:2A06C1F2 85C0             TEST     EAX,EAX                             .
017F:2A06C1F4 7407             JZ       2A06C1FD                              .

017F:2A06C1F6 C745FC00000000   MOV      DWORD [EBP-04],00                〈----
017F:2A06C1FD 8B4DF8           MOV      ECX,[EBP-08]                              .
017F:2A06C200 83C104           ADD      ECX,BYTE +04                              .
017F:2A06C203 E8E8F7FFFF       CALL     2A06B9F0                              .        判断是哪一段
017F:2A06C208 85C0             TEST     EAX,EAX                              .        具有相同字符
017F:2A06C20A 7407             JZ       2A06C213                              .

017F:2A06C20C C745FC01000000   MOV      DWORD [EBP-04],01                〈----
017F:2A06C213 8B4DF8           MOV      ECX,[EBP-08]                              .
017F:2A06C216 83C108           ADD      ECX,BYTE +08                              .
017F:2A06C219 E8D2F7FFFF       CALL     2A06B9F0                              .
017F:2A06C21E 85C0             TEST     EAX,EAX                              .
017F:2A06C220 7407             JZ       2A06C229                              .

017F:2A06C222 C745FC02000000   MOV      DWORD [EBP-04],02                〈----
017F:2A06C229 837D0800         CMP      DWORD [EBP+08],BYTE +00
017F:2A06C22D 7513             JNZ      2A06C242

017F:2A06C22F 8B4DFC           MOV      ECX,[EBP-04]
017F:2A06C232 8B55F8           MOV      EDX,[EBP-08]
017F:2A06C235 8D0C8A           LEA      ECX,[EDX+ECX*4]
017F:2A06C238 E8830C0000       CALL     2A06CEC0
017F:2A06C23D 894508           MOV      [EBP+08],EAX
017F:2A06C240 EB1A             JMP      SHORT 2A06C25C

017F:2A06C242 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C245 8B4DF8           MOV      ECX,[EBP-08]
017F:2A06C248 8D0C81           LEA      ECX,[ECX+EAX*4]
017F:2A06C24B E8700C0000       CALL     2A06CEC0                        〈----具有相同字符的段的序列值之和
017F:2A06C250 3B4508           CMP      EAX,[EBP+08]                        〈----与[EBP+08]的值比较               
017F:2A06C253 7407             JZ       2A06C25C
017F:2A06C255 33C0             XOR      EAX,EAX
017F:2A06C257 E9C5010000       JMP      2A06C421

017F:2A06C25C 8B5508           MOV      EDX,[EBP+08]
017F:2A06C25F 8955F4           MOV      [EBP-0C],EDX
017F:2A06C262 837DF460         CMP      DWORD [EBP-0C],BYTE +60        〈----[EBP+08]的值与+60比较
017F:2A06C266 740F             JZ       2A06C277
017F:2A06C268 837DF461         CMP      DWORD [EBP-0C],BYTE +61        〈----[EBP+08]的值与+61比较
017F:2A06C26C 0F84CF000000     JZ       NEAR 2A06C341
017F:2A06C272 E93F010000       JMP      2A06C3B6                        〈----接着判断3段注册码不相同
017F:2A06C277 8B45FC           MOV      EAX,[EBP-04]                        〈----
017F:2A06C27A 83C001           ADD      EAX,BYTE +01                        〈----
017F:2A06C27D 99               CDQ                                     〈----
017F:2A06C27E B903000000       MOV      ECX,03                        〈----取不含相同字符的注册码段1
017F:2A06C283 F7F9             IDIV     ECX                                〈----
017F:2A06C285 8B45F8           MOV      EAX,[EBP-08]                        〈----
017F:2A06C288 8B0490           MOV      EAX,[EAX+EDX*4]                〈----
017F:2A06C28B 33D2             XOR      EDX,EDX
017F:2A06C28D B903000000       MOV      ECX,03                        〈----
017F:2A06C292 F7F1             DIV      ECX                                〈----该段能被3整除
017F:2A06C294 85D2             TEST     EDX,EDX                        〈----
017F:2A06C296 7407             JZ       2A06C29F                        〈----
017F:2A06C298 33C0             XOR      EAX,EAX
017F:2A06C29A E982010000       JMP      2A06C421
017F:2A06C29F 8B45FC           MOV      EAX,[EBP-04]                        〈----
017F:2A06C2A2 83C002           ADD      EAX,BYTE +02                        〈----
017F:2A06C2A5 99               CDQ                                     〈----
017F:2A06C2A6 B903000000       MOV      ECX,03                        〈----取不含相同字符的注册码段2
017F:2A06C2AB F7F9             IDIV     ECX                                〈----
017F:2A06C2AD 8B45F8           MOV      EAX,[EBP-08]                        〈----
017F:2A06C2B0 8B0490           MOV      EAX,[EAX+EDX*4]                〈----
017F:2A06C2B3 33D2             XOR      EDX,EDX
017F:2A06C2B5 B903000000       MOV      ECX,03                        〈----
017F:2A06C2BA F7F1             DIV      ECX                                〈----该段能被3整除
017F:2A06C2BC 85D2             TEST     EDX,EDX                        〈----
017F:2A06C2BE 7407             JZ       2A06C2C7                        〈----
017F:2A06C2C0 33C0             XOR      EAX,EAX
017F:2A06C2C2 E95A010000       JMP      2A06C421
017F:2A06C2C7 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C2CA 83C001           ADD      EAX,BYTE +01
017F:2A06C2CD 99               CDQ     
017F:2A06C2CE B903000000       MOV      ECX,03
017F:2A06C2D3 F7F9             IDIV     ECX
017F:2A06C2D5 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C2D8 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C2DB 33D2             XOR      EDX,EDX
017F:2A06C2DD B905000000       MOV      ECX,05                        〈----
017F:2A06C2E2 F7F1             DIV      ECX                                〈----不含相同字符的注册码段1
017F:2A06C2E4 85D2             TEST     EDX,EDX                        〈----能被5整除
017F:2A06C2E6 7407             JZ       2A06C2EF                        〈----
017F:2A06C2E8 33C0             XOR      EAX,EAX
017F:2A06C2EA E932010000       JMP      2A06C421
017F:2A06C2EF 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C2F2 83C002           ADD      EAX,BYTE +02
017F:2A06C2F5 99               CDQ     
017F:2A06C2F6 B903000000       MOV      ECX,03
017F:2A06C2FB F7F9             IDIV     ECX
017F:2A06C2FD 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C300 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C303 33D2             XOR      EDX,EDX
017F:2A06C305 B905000000       MOV      ECX,05                        〈----
017F:2A06C30A F7F1             DIV      ECX                                〈----不含相同字符的注册码段2
017F:2A06C30C 85D2             TEST     EDX,EDX                        〈----能被5整除
017F:2A06C30E 7407             JZ       2A06C317                        〈----
017F:2A06C310 33C0             XOR      EAX,EAX
017F:2A06C312 E90A010000       JMP      2A06C421
017F:2A06C317 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C31A 83C002           ADD      EAX,BYTE +02
017F:2A06C31D 99               CDQ     
017F:2A06C31E B903000000       MOV      ECX,03
017F:2A06C323 F7F9             IDIV     ECX
017F:2A06C325 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C328 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C32B 33D2             XOR      EDX,EDX
017F:2A06C32D B90B000000       MOV      ECX,0B                        〈----
017F:2A06C332 F7F1             DIV      ECX                                〈----不含相同字符的注册码段2
017F:2A06C334 85D2             TEST     EDX,EDX                        〈----能被B整除
017F:2A06C336 7407             JZ       2A06C33F                        〈----
017F:2A06C338 33C0             XOR      EAX,EAX
017F:2A06C33A E9E2000000       JMP      2A06C421
017F:2A06C33F EB75             JMP      SHORT 2A06C3B6
017F:2A06C341 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C344 83C001           ADD      EAX,BYTE +01
017F:2A06C347 99               CDQ     
017F:2A06C348 B903000000       MOV      ECX,03
017F:2A06C34D F7F9             IDIV     ECX
017F:2A06C34F 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C352 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C355 33D2             XOR      EDX,EDX
017F:2A06C357 B903000000       MOV      ECX,03                        〈----
017F:2A06C35C F7F1             DIV      ECX                                〈----不含相同字符的注册码段1
017F:2A06C35E 85D2             TEST     EDX,EDX                        〈----能被3整除
017F:2A06C360 7407             JZ       2A06C369                        〈----
017F:2A06C362 33C0             XOR      EAX,EAX
017F:2A06C364 E9B8000000       JMP      2A06C421
017F:2A06C369 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C36C 83C002           ADD      EAX,BYTE +02
017F:2A06C36F 99               CDQ     
017F:2A06C370 B903000000       MOV      ECX,03
017F:2A06C375 F7F9             IDIV     ECX
017F:2A06C377 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C37A 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C37D 33D2             XOR      EDX,EDX
017F:2A06C37F B903000000       MOV      ECX,03                        〈----
017F:2A06C384 F7F1             DIV      ECX                                〈----不含相同字符的注册码段2
017F:2A06C386 85D2             TEST     EDX,EDX                        〈----能被3整除
017F:2A06C388 7407             JZ       2A06C391                        〈----
017F:2A06C38A 33C0             XOR      EAX,EAX
017F:2A06C38C E990000000       JMP      2A06C421
017F:2A06C391 8B45FC           MOV      EAX,[EBP-04]
017F:2A06C394 83C002           ADD      EAX,BYTE +02
017F:2A06C397 99               CDQ     
017F:2A06C398 B903000000       MOV      ECX,03
017F:2A06C39D F7F9             IDIV     ECX
017F:2A06C39F 8B45F8           MOV      EAX,[EBP-08]
017F:2A06C3A2 8B0490           MOV      EAX,[EAX+EDX*4]
017F:2A06C3A5 33D2             XOR      EDX,EDX
017F:2A06C3A7 B90B000000       MOV      ECX,0B                        〈----
017F:2A06C3AC F7F1             DIV      ECX                                〈----不含相同字符的注册码段2
017F:2A06C3AE 85D2             TEST     EDX,EDX                        〈----能被B整除
017F:2A06C3B0 7404             JZ       2A06C3B6                        〈----
017F:2A06C3B2 33C0             XOR      EAX,EAX
017F:2A06C3B4 EB6B             JMP      SHORT 2A06C421
017F:2A06C3B6 8B5508       MOV      EDX,[EBP+08]
017F:2A06C3B9 8955F0           MOV      [EBP-10],EDX
017F:2A06C3BC 837DF060         CMP      DWORD [EBP-10],BYTE +60        〈----小于+60跳
017F:2A06C3C0 720A             JC       2A06C3CC
017F:2A06C3C2 837DF061         CMP      DWORD [EBP-10],BYTE +61
017F:2A06C3C6 7602             JNA      2A06C3CA                        〈----不高于+61跳
017F:2A06C3C8 EB02             JMP      SHORT 2A06C3CC
017F:2A06C3CA EB52             JMP      SHORT 2A06C41E
017F:2A06C3CC 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C3CF E83C4EF9FF       CALL     2A001210                        〈----
017F:2A06C3D4 8BF0             MOV      ESI,EAX                        〈----
017F:2A06C3D6 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C3D9 83C104           ADD      ECX,BYTE +04                        〈----
017F:2A06C3DC E82F4EF9FF       CALL     2A001210                        〈----注
017F:2A06C3E1 3BF0             CMP      ESI,EAX                        〈----
017F:2A06C3E3 7435             JZ       2A06C41A                        〈----册
017F:2A06C3E5 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C3E8 E8234EF9FF       CALL     2A001210                        〈----码
017F:2A06C3ED 8BF0             MOV      ESI,EAX                        〈----
017F:2A06C3EF 8B4DF8           MOV      ECX,[EBP-08]                        〈----3
017F:2A06C3F2 83C108           ADD      ECX,BYTE +08                        〈----
017F:2A06C3F5 E8164EF9FF       CALL     2A001210                        〈----段
017F:2A06C3FA 3BF0             CMP      ESI,EAX                        〈----
017F:2A06C3FC 741C             JZ       2A06C41A                        〈----均
017F:2A06C3FE 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C401 83C104           ADD      ECX,BYTE +04                        〈----不
017F:2A06C404 E8074EF9FF       CALL     2A001210                        〈----
017F:2A06C409 8BF0             MOV      ESI,EAX                        〈----同
017F:2A06C40B 8B4DF8           MOV      ECX,[EBP-08]                        〈----
017F:2A06C40E 83C108           ADD      ECX,BYTE +08                        〈----
017F:2A06C411 E8FA4DF9FF       CALL     2A001210                        〈----
017F:2A06C416 3BF0             CMP      ESI,EAX                        〈----
017F:2A06C418 7504             JNZ      2A06C41E                        〈----
017F:2A06C41A 33C0             XOR      EAX,EAX
017F:2A06C41C EB03             JMP      SHORT 2A06C421
017F:2A06C41E 8B4508           MOV      EAX,[EBP+08]
017F:2A06C421 5E               POP      ESI
017F:2A06C422 8BE5             MOV      ESP,EBP
017F:2A06C424 5D               POP      EBP
017F:2A06C425 C20400           RET      04

问题是何处调用了本段程序,[EBP+08]的值在何处确定?

继续追踪到主程序:
017F:2A06CE3A 55               PUSH     EBP
017F:2A06CE3B 8BEC             MOV      EBP,ESP
017F:2A06CE3D 51               PUSH     ECX
017F:2A06CE3E C745FC50000000   MOV     DWORD [EBP-04],50
017F:2A06CE45 EB09             JMP      SHORT 2A06CE50

017F:2A06CE47 8B45FC           MOV      EAX,[EBP-04]
017F:2A06CE4A 83C001           ADD      EAX,BYTE +01
017F:2A06CE4D 8945FC           MOV      [EBP-04],EAX
017F:2A06CE50 837DFC5D         CMP      DWORD [EBP-04],BYTE +5D
017F:2A06CE54 7723             JA       2A06CE79
017F:2A06CE56 8B0D886C0D2A     MOV      ECX,[2A0D6C88]                〈----30000000
017F:2A06CE5C 51               PUSH     ECX
017F:2A06CE5D 8B550C           MOV      EDX,[EBP+0C]                        〈----输入用户名地址
017F:2A06CE60 52               PUSH     EDX
017F:2A06CE61 8B4508           MOV      EAX,[EBP+08]                        〈----输入注册码地址
017F:2A06CE64 50               PUSH     EAX
017F:2A06CE65 8B4DFC           MOV      ECX,[EBP-04]                        〈----50
017F:2A06CE68 51               PUSH     ECX
017F:2A06CE69 E81AF6FFFF      CALL    2A06C488                        〈----CALL 2A06C03C
017F:2A06CE6E 85C0             TEST     EAX,EAX
017F:2A06CE70 7405             JZ       2A06CE77

017F:2A06CE72 8B45FC           MOV      EAX,[EBP-04]
017F:2A06CE75 EB04             JMP      SHORT 2A06CE7B
017F:2A06CE77 EBCE             JMP      SHORT 2A06CE47

017F:2A06CE79 33C0             XOR      EAX,EAX
017F:2A06CE7B 8BE5             MOV      ESP,EBP
017F:2A06CE7D 5D               POP      EBP
017F:2A06CE7E C20800           RET      08

===============================================================
017F:2A06C488 55               PUSH     EBP
017F:2A06C489 8BEC             MOV      EBP,ESP
017F:2A06C48B 6AFF             PUSH     BYTE -01
017F:2A06C48D 688F000B2A       PUSH     DWORD 2A0B008F
017F:2A06C492 64A100000000     MOV      EAX,`DOSMGR_BackFill_Allowed`
017F:2A06C498 50               PUSH     EAX
017F:2A06C499 64892500000000   MOV      `DOSMGR_BackFill_Allowed`,ESP
017F:2A06C4A0 83EC20           SUB      ESP,BYTE +20
017F:2A06C4A3 8B4514           MOV      EAX,[EBP+14]
017F:2A06C4A6 50               PUSH     EAX
017F:2A06C4A7 8D4DE0           LEA      ECX,[EBP-20]
017F:2A06C4AA E870FAFFFF       CALL     2A06BF1F
017F:2A06C4AF C745FC00000000   MOV      DWORD [EBP-04],00
017F:2A06C4B6 837D1000         CMP      DWORD [EBP+10],BYTE +00
017F:2A06C4BA 751B             JNZ      2A06C4D7

017F:2A06C4BC C745D800000000   MOV      DWORD [EBP-28],00
017F:2A06C4C3 C745FCFFFFFFFF   MOV      DWORD [EBP-04],FFFFFFFF
017F:2A06C4CA 8D4DE0           LEA      ECX,[EBP-20]
017F:2A06C4CD E81CFBFFFF       CALL     2A06BFEE
017F:2A06C4D2 8B45D8           MOV      EAX,[EBP-28]
017F:2A06C4D5 EB2B             JMP      SHORT 2A06C502

017F:2A06C4D7 8B4D08           MOV      ECX,[EBP+08]
017F:2A06C4DA 51               PUSH     ECX
017F:2A06C4DB 8B5510           MOV      EDX,[EBP+10]
017F:2A06C4DE 52               PUSH     EDX
017F:2A06C4DF 8D4DE0           LEA      ECX,[EBP-20]
017F:2A06C4E2 E855FBFFFF       CALL    2A06C03C
017F:2A06C4E7 8945DC           MOV      [EBP-24],EAX
017F:2A06C4EA 8B45DC           MOV      EAX,[EBP-24]
017F:2A06C4ED 8945D4           MOV      [EBP-2C],EAX
017F:2A06C4F0 C745FCFFFFFFFF   MOV      DWORD [EBP-04],FFFFFFFF
017F:2A06C4F7 8D4DE0           LEA      ECX,[EBP-20]
017F:2A06C4FA E8EFFAFFFF       CALL     2A06BFEE
017F:2A06C4FF 8B45D4           MOV      EAX,[EBP-2C]

017F:2A06C502 8B4DF4           MOV      ECX,[EBP-0C]
017F:2A06C505 64890D00000000   MOV      `DOSMGR_BackFill_Allowed`,ECX
017F:2A06C50C 8BE5             MOV      ESP,EBP
017F:2A06C50E 5D               POP      EBP
017F:2A06C50F C21000           RET      10
===============================================================

2A0D01A8:
5 W B 9 F R K 4 V T P 3 C Q 6 A
S N 8 H X 2 J M U Z Y L E D G 7

总结:
以上程序提供了注册码的长度为14为,4位一段,共3段,中间以符号"-"连接;在
CALL 2A06C428 处跟入,发现程序以地址 2A0D01A8 处字符串作为计算尺,查询
输入注册码字符在计算尺中的序号,即将X1X2X3X4-X5X6X7X8-X9X10X11X12转换
为Y1Y2Y3Y4Y5Y6Y7Y8Y9Y10Y11Y12,然后判断Y1-Y12中只能且必须有两个序号在
同一段相同,接着判断该段序号值相加结果与[EBP+08]中的值比较,若相等则根据
[EBP+08]中的值进行程序分支判断,最后还判断3段各不相同。

使用粘贴:DRDN-A6W5-JS4P
[EBP+08]=50,最后程序出现如下提示:               
“你输入了前版的FinePrint 的注册码。要以折扣价升级到当前的版本,请按下在线
更新按钮。”

另分支:+60,+61

可是根据程序中设置的初始值50,是没法转向其它分支的?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
2
不错,下载地址?
2004-10-2 16:29
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
3
2004-10-2 18:11
0
游客
登录 | 注册 方可回帖
返回
//