Perfect Icon 2.41算法分析
本帖最后由 GGLHY 于 2012-8-17 00:13 编辑直奔主题,来到:
省略部分代码.....
004FE18B|.8B83 F8020000 MOV EAX,DWORD PTR DS:
004FE191|.E8 DE6CF3FF CALL perfecti.00434E74
004FE196|.8B45 E8 MOV EAX,DWORD PTR SS: ;输入的假码1598753046
004FE199|.8D55 F8 LEA EDX,DWORD PTR SS:
004FE19C|.E8 6FADF0FF CALL perfecti.00408F10
004FE1A1|.8D55 E4 LEA EDX,DWORD PTR SS:
004FE1A4|.8B83 00030000 MOV EAX,DWORD PTR DS:
004FE1AA|.E8 C56CF3FF CALL perfecti.00434E74
004FE1AF|.8B45 E4 MOV EAX,DWORD PTR SS: ;输入的E-mail邮箱
004FE1B2|.8D55 F4 LEA EDX,DWORD PTR SS:
004FE1B5|.E8 56ADF0FF CALL perfecti.00408F10
004FE1BA|.837D F8 00 CMP DWORD PTR SS:,0 ;假码为空吗?
004FE1BE|.75 0C JNZ SHORT perfecti.004FE1CC
004FE1C0|.A1 443A6200 MOV EAX,DWORD PTR DS:
004FE1C5|.8B00 MOV EAX,DWORD PTR DS:
004FE1C7|.E8 20FFFFFF CALL perfecti.004FE0EC
004FE1CC|>837D F4 00 CMP DWORD PTR SS:,0 ;输入的E-mail邮箱为空吗?
004FE1D0|.75 16 JNZ SHORT perfecti.004FE1E8
004FE1D2|.B9 08E44F00 MOV ECX,perfecti.004FE408 ;Please enter email used in your order
004FE1D7|.B2 01 MOV DL,1
004FE1D9|.A1 84804000 MOV EAX,DWORD PTR DS:
004FE1DE|.E8 11E2F0FF CALL perfecti.0040C3F4
004FE1E3|.E8 E456F0FF CALL perfecti.004038CC
004FE1E8|>8B45 F8 MOV EAX,DWORD PTR SS: ;输入的假码1598753046
004FE1EB|.E8 105FF0FF CALL perfecti.00404100
004FE1F0|.83F8 0A CMP EAX,0A ;假码长度小于10位吗?
004FE1F3|.7D 0C JGE SHORT perfecti.004FE201
004FE1F5|.A1 443A6200 MOV EAX,DWORD PTR DS:
004FE1FA|.8B00 MOV EAX,DWORD PTR DS:
004FE1FC|.E8 EBFEFFFF CALL perfecti.004FE0EC
004FE201|>8D55 E0 LEA EDX,DWORD PTR SS:
004FE204|.8B83 F8020000 MOV EAX,DWORD PTR DS:
004FE20A|.E8 656CF3FF CALL perfecti.00434E74
004FE20F|.8B45 E0 MOV EAX,DWORD PTR SS: ;输入的假码
004FE212|.E8 4DF8FFFF CALL perfecti.004FDA64 ; 《===============关键call第一处
004FE217|.85C0 TEST EAX,EAX
004FE219|.74 0A JE SHORT perfecti.004FE225 ;《===============关键跳第一处
004FE21B|.B8 38E44F00 MOV EAX,perfecti.004FE438 ;Wrong key.
004FE220|.E8 C7FEFFFF CALL perfecti.004FE0EC
004FE225|>8B45 F8 MOV EAX,DWORD PTR SS:
004FE228|.E8 97F8FFFF CALL perfecti.004FDAC4
004FE22D|.8B93 08030000 MOV EDX,DWORD PTR DS:
004FE233|.8B45 F8 MOV EAX,DWORD PTR SS:
004FE236|.E8 B5F6FFFF CALL perfecti.004FD8F0 ; 《===============关键call第二处
004FE23B|.85C0 TEST EAX,EAX
004FE23D|.74 0A JE SHORT perfecti.004FE249 ; 《===============关键c跳第二处
004FE23F|.B8 4CE44F00 MOV EAX,perfecti.004FE44C ;Wrong key for this application.
004FE244|.E8 A3FEFFFF CALL perfecti.004FE0EC
004FE249|>B2 01 MOV DL,1
004FE24B|.A1 28C84500 MOV EAX,DWORD PTR DS:
004FE250|.E8 D3E6F5FF CALL perfecti.0045C928
004FE255|.8945 F0 MOV DWORD PTR SS:,EAX
004FE258|.33C0 XOR EAX,EAX
004FE25A|.55 PUSH EBP
004FE25B|.68 6FE34F00 PUSH perfecti.004FE36F
004FE260|.64:FF30 PUSH DWORD PTR FS:
004FE263|.64:8920 MOV DWORD PTR FS:,ESP
004FE266|.BA 01000080 MOV EDX,80000001
004FE26B|.8B45 F0 MOV EAX,DWORD PTR SS:
004FE26E|.E8 91E7F5FF CALL perfecti.0045CA04
004FE273|.68 74E44F00 PUSH perfecti.004FE474 ;Software\
省略部分代码.....
004FE2AE|.E8 B9E7F5FF CALL perfecti.0045CA6C
004FE2B3|.8845 FF MOV BYTE PTR SS:,AL
004FE2B6|.807D FF 00 CMP BYTE PTR SS:,0
004FE2BA|.0F84 99000000 JE perfecti.004FE359
004FE2C0|.8B4D F8 MOV ECX,DWORD PTR SS:
004FE2C3|.BA 94E44F00 MOV EDX,perfecti.004FE494 ;ASCII "Key"
004FE2C8|.8B45 F0 MOV EAX,DWORD PTR SS:
004FE2CB|.E8 E8ECF5FF CALL perfecti.0045CFB8
004FE2D0|.BA 94E44F00 MOV EDX,perfecti.004FE494 ;ASCII "Key"
004FE2D5|.8D4D D4 LEA ECX,DWORD PTR SS:
004FE2D8|.8B45 F0 MOV EAX,DWORD PTR SS:
004FE2DB|.E8 04EDF5FF CALL perfecti.0045CFE4
004FE2E0|.8B55 D4 MOV EDX,DWORD PTR SS:
004FE2E3|.8B45 F8 MOV EAX,DWORD PTR SS:
004FE2E6|.E8 255FF0FF CALL perfecti.00404210
004FE212CALL perfecti.004FDA64 ; 《===============关键call第一处,F7进入
004FDA64/$55 PUSH EBP
004FDA65|.8BEC MOV EBP,ESP
004FDA67|.51 PUSH ECX
004FDA68|.53 PUSH EBX
004FDA69|.56 PUSH ESI
004FDA6A|.8945 FC MOV DWORD PTR SS:,EAX ;输入的假码
004FDA6D|.8B45 FC MOV EAX,DWORD PTR SS:
004FDA70|.E8 3F68F0FF CALL perfecti.004042B4
004FDA75|.33C0 XOR EAX,EAX
004FDA77|.55 PUSH EBP
004FDA78|.68 B4DA4F00 PUSH perfecti.004FDAB4
004FDA7D|.64:FF30 PUSH DWORD PTR FS:
004FDA80|.64:8920 MOV DWORD PTR FS:,ESP
004FDA83|.33F6 XOR ESI,ESI
004FDA85|.BB 0A000000 MOV EBX,0A
004FDA8A|>8B45 FC /MOV EAX,DWORD PTR SS: ;输入的假码
004FDA8D|.E8 6AFDFFFF |CALL perfecti.004FD7FC ;注意这个CALL,决定了下面ESI的值!!!
004FDA92|.03F0 |ADD ESI,EAX
004FDA94|.6A 64 |PUSH 64 ; /Timeout = 100. ms
004FDA96|.E8 1197F0FF |CALL <JMP.&kernel32.Sleep> ; \Sleep
004FDA9B|.4B |DEC EBX
004FDA9C|.^ 75 EC \JNZ SHORT perfecti.004FDA8A ;检测!!!
004FDA9E|.33C0 XOR EAX,EAX
004FDAA0|.5A POP EDX
004FDAA1|.59 POP ECX
004FDAA2|.59 POP ECX
004FDAA3|.64:8910 MOV DWORD PTR FS:,EDX
004FDAA6|.68 BBDA4F00 PUSH perfecti.004FDABB
004FDAAB|>8D45 FC LEA EAX,DWORD PTR SS:
004FDAAE|.E8 CD63F0FF CALL perfecti.00403E80
004FDAB3\.C3 RETN
004FDAB4 .^ E9 DB5DF0FF JMP perfecti.00403894
004FDAB9 .^ EB F0 JMP SHORT perfecti.004FDAAB
004FDABB .8BC6 MOV EAX,ESI ;这个ESI由004FDA8D处的CALL 004FD7FC 决定!
004FDABD .5E POP ESI
004FDABE .5B POP EBX
004FDABF .59 POP ECX
004FDAC0 .5D POP EBP
004FDAC1 .C3 RETN
004FDA8D 处CALL 004FD7FC ,我们F7进入:
004FD7FC/$55 PUSH EBP ;///局部调用来自 004FDA8D, 004FDAC9, 00609736
004FD7FD|.8BEC MOV EBP,ESP
004FD7FF|.83C4 F4 ADD ESP,-0C
004FD802|.53 PUSH EBX
004FD803|.56 PUSH ESI
004FD804|.33D2 XOR EDX,EDX
004FD806|.8955 F4 MOV DWORD PTR SS:,EDX
004FD809|.8945 FC MOV DWORD PTR SS:,EAX ;输入的假码(ASCII "1598753046")
004FD80C|.8B45 FC MOV EAX,DWORD PTR SS:
004FD80F|.E8 A06AF0FF CALL perfecti.004042B4
004FD814|.33C0 XOR EAX,EAX
004FD816|.55 PUSH EBP
004FD817|.68 B7D84F00 PUSH perfecti.004FD8B7
004FD81C|.64:FF30 PUSH DWORD PTR FS:
004FD81F|.64:8920 MOV DWORD PTR FS:,ESP
004FD822|.33C0 XOR EAX,EAX
004FD824|.8945 F8 MOV DWORD PTR SS:,EAX
004FD827|.8D55 F4 LEA EDX,DWORD PTR SS:
004FD82A|.8B45 FC MOV EAX,DWORD PTR SS: ;输入的假码(ASCII "1598753046")
004FD82D|.E8 02FFFFFF CALL perfecti.004FD734 ;查表校验注册码
004FD832|.8B55 F4 MOV EDX,DWORD PTR SS: ;查表校验后的注册码,设为K
004FD835|.8D45 FC LEA EAX,DWORD PTR SS:
004FD838|.E8 DB66F0FF CALL perfecti.00403F18
004FD83D|.8B45 FC MOV EAX,DWORD PTR SS:
004FD840|.E8 BB68F0FF CALL perfecti.00404100 ;查表校验后的注册码K的长度!
004FD845|.8BF0 MOV ESI,EAX
004FD847|.83FE 07 CMP ESI,7 ;K的长度:7
004FD84A|.7D 09 JGE SHORT perfecti.004FD855
004FD84C|.C745 F8 0B000>MOV DWORD PTR SS:,0B
004FD853|.EB 44 JMP SHORT perfecti.004FD899
004FD855|>33DB XOR EBX,EBX ;!!!
004FD857|.8B45 FC MOV EAX,DWORD PTR SS:
004FD85A|.E8 A168F0FF CALL perfecti.00404100
004FD85F|.48 DEC EAX ;K的长度 -1
004FD860|.83E8 02 SUB EAX,2 ;再-2
004FD863|.7C 14 JL SHORT perfecti.004FD879
004FD865|.40 INC EAX ;+1
004FD866|.BA 02000000 MOV EDX,2 ;=2
004FD86B|>8B4D FC /MOV ECX,DWORD PTR SS: ;查表校验后的注册码K
004FD86E|.0FB64C11 FF |MOVZX ECX,BYTE PTR DS: ;K的第2位起依次每一位直到倒数第2位
004FD873|.33D9 |XOR EBX,ECX ;与上一轮循环计算后的结果(初始为0) xor
004FD875|.42 |INC EDX
004FD876|.48 |DEC EAX
004FD877|.^ 75 F2 \JNZ SHORT perfecti.004FD86B
004FD879|>8BC3 MOV EAX,EBX ;循环结束后的结果。本例=3C
004FD87B|.B9 1E000000 MOV ECX,1E
004FD880|.99 CDQ
004FD881|.F7F9 IDIV ECX ;/1E
004FD883|.42 INC EDX ;余数+1
004FD884|.B8 D0D84F00 MOV EAX,perfecti.004FD8D0 ;2345679qwertyupadfghjkzxcvbnms
004FD889|.8A4410 FF MOV AL,BYTE PTR DS: ;查表!!!
004FD88D|.8B55 FC MOV EDX,DWORD PTR SS: ;查表校验后的注册码K
004FD890|.3A4432 FF CMP AL,BYTE PTR DS: ;与 K的最后1位 比较
004FD894|.74 03 JE SHORT perfecti.004FD899 ;光明与黑暗的十字路口!
004FD896|.FF45 F8 INC DWORD PTR SS: ;不要,不要啊!
004FD899|>33C0 XOR EAX,EAX
004FD89B|.5A POP EDX
004FD89C|.59 POP ECX
004FD89D|.59 POP ECX
004FD89E|.64:8910 MOV DWORD PTR FS:,EDX
004FD8A1|.68 BED84F00 PUSH perfecti.004FD8BE
004FD8A6|>8D45 F4 LEA EAX,DWORD PTR SS:
004FD8A9|.E8 D265F0FF CALL perfecti.00403E80
004FD8AE|.8D45 FC LEA EAX,DWORD PTR SS:
004FD8B1|.E8 CA65F0FF CALL perfecti.00403E80
004FD8B6\.C3 RETN
004FD8B7 .^ E9 D85FF0FF JMP perfecti.00403894
004FD8BC .^ EB E8 JMP SHORT perfecti.004FD8A6
004FD8BE .8B45 F8 MOV EAX,DWORD PTR SS:
004FD8C1 .5E POP ESI
004FD8C2 .5B POP EBX
004FD8C3 .8BE5 MOV ESP,EBP
004FD8C5 .5D POP EBP
004FD8C6 .C3 RETN
004FD82D|.E8 02FFFFFF CALL perfecti.004FD734 ;查表校验注册码
这个CALL其实就是将输入的注册码过滤掉表中没有的字符。(附表:2345679qwertyupadfghjkzxcvbnms)
004FD734/$55 PUSH EBP
省略部分代码.....
004FD743|.8945 FC MOV DWORD PTR SS:,EAX ;输入的假码(ASCII "1598753046")
省略部分代码.....
004FD75F|.E8 9C69F0FF CALL perfecti.00404100
004FD764|.8BD8 MOV EBX,EAX ;假码长度
004FD766|.83FB 01 CMP EBX,1
004FD769|.7C 34 JL SHORT perfecti.004FD79F
004FD76B|>8D45 F8 /LEA EAX,DWORD PTR SS:
004FD76E|.8B55 FC |MOV EDX,DWORD PTR SS: ;输入的假码(ASCII "1598753046")
004FD771|.8A541A FF |MOV DL,BYTE PTR DS: ;依次倒取假码每一位
004FD775|.E8 AE68F0FF |CALL perfecti.00404028
004FD77A|.8B45 F8 |MOV EAX,DWORD PTR SS: ;依次倒取的假码每一位
004FD77D|.BA DCD74F00 |MOV EDX,perfecti.004FD7DC ;2345679qwertyupadfghjkzxcvbnms
004FD782|.E8 656CF0FF |CALL perfecti.004043EC ;查表!!!
004FD787|.85C0 |TEST EAX,EAX ;在表中的位置
004FD789|.75 0F |JNZ SHORT perfecti.004FD79A
004FD78B|.8D45 FC |LEA EAX,DWORD PTR SS:
004FD78E|.B9 01000000 |MOV ECX,1
004FD793|.8BD3 |MOV EDX,EBX
004FD795|.E8 AE6BF0FF |CALL perfecti.00404348
004FD79A|>4B |DEC EBX
004FD79B|.85DB |TEST EBX,EBX
004FD79D|.^ 75 CC \JNZ SHORT perfecti.004FD76B
004FD79F|>8BC6 MOV EAX,ESI
004FD7A1|.8B55 FC MOV EDX,DWORD PTR SS: ;查表校验后的注册码,设为K
省略部分代码.....
004FD7C3\.C3 RETN
提示点:
004FD890CMP AL,BYTE PTR DS: ;与 K的最后1位 比较
----------------------------------------------------------------------
关键CALL第2处:
004FD8F0/$55 PUSH EBP
004FD8F1|.8BEC MOV EBP,ESP
004FD8F3|.33C9 XOR ECX,ECX
004FD8F5|.51 PUSH ECX
004FD8F6|.51 PUSH ECX
004FD8F7|.51 PUSH ECX
004FD8F8|.51 PUSH ECX
004FD8F9|.51 PUSH ECX
004FD8FA|.53 PUSH EBX
004FD8FB|.56 PUSH ESI
004FD8FC|.8955 F8 MOV DWORD PTR SS:,EDX ;(ASCII "Perfect Icon")
004FD8FF|.8945 FC MOV DWORD PTR SS:,EAX ;输入的假码1598753042
004FD902|.8B45 FC MOV EAX,DWORD PTR SS:
004FD905|.E8 AA69F0FF CALL perfecti.004042B4
004FD90A|.8B45 F8 MOV EAX,DWORD PTR SS: ; (ASCII "Perfect Icon")
004FD90D|.E8 A269F0FF CALL perfecti.004042B4
004FD912|.33C0 XOR EAX,EAX
004FD914|.55 PUSH EBP
004FD915|.68 2BDA4F00 PUSH perfecti.004FDA2B
004FD91A|.64:FF30 PUSH DWORD PTR FS:
004FD91D|.64:8920 MOV DWORD PTR FS:,ESP
004FD920|.33F6 XOR ESI,ESI
004FD922|.8D55 F0 LEA EDX,DWORD PTR SS:
004FD925|.8B45 FC MOV EAX,DWORD PTR SS: ;输入的假码“1598753046”
004FD928|.E8 07FEFFFF CALL perfecti.004FD734
004FD92D|.8B55 F0 MOV EDX,DWORD PTR SS:
004FD930|.8D45 FC LEA EAX,DWORD PTR SS:
004FD933|.E8 E065F0FF CALL perfecti.00403F18
004FD938|.8B45 FC MOV EAX,DWORD PTR SS:
004FD93B|.E8 C067F0FF CALL perfecti.00404100
004FD940|.83F8 07 CMP EAX,7
004FD943|.7D 0A JGE SHORT perfecti.004FD94F
004FD945|.BE 0B000000 MOV ESI,0B
004FD94A|.E9 C1000000 JMP perfecti.004FDA10
004FD94F|>837D F8 00 CMP DWORD PTR SS:,0
004FD953|.0F84 B7000000 JE perfecti.004FDA10
004FD959|.33DB XOR EBX,EBX
004FD95B|.8B45 F8 MOV EAX,DWORD PTR SS:
004FD95E|.E8 9D67F0FF CALL perfecti.00404100
004FD963|.48 DEC EAX
004FD964|.85C0 TEST EAX,EAX
004FD966|.7E 13 JLE SHORT perfecti.004FD97B
004FD968|.BA 01000000 MOV EDX,1
004FD96D|>8B4D F8 /MOV ECX,DWORD PTR SS: ; (ASCII "Perfect Icon")
004FD970|.0FB64C11 FF |MOVZX ECX,BYTE PTR DS: ;依次每一位ASC(不含最后一位)
004FD975|.03D9 |ADD EBX,ECX
004FD977|.42 |INC EDX
004FD978|.48 |DEC EAX
004FD979|.^ 75 F2 \JNZ SHORT perfecti.004FD96D ;此循环即取固定字符串Perfect Ico的ASC累加和
004FD97B|>8BC3 MOV EAX,EBX ;累加和=404H
004FD97D|.B9 1E000000 MOV ECX,1E
004FD982|.99 CDQ
004FD983|.F7F9 IDIV ECX ;/1E
004FD985|.42 INC EDX ;余数+1
004FD986|.B8 44DA4F00 MOV EAX,perfecti.004FDA44 ;2345679qwertyupadfghjkzxcvbnms
004FD98B|.8A4410 FF MOV AL,BYTE PTR DS: ;查表!
004FD98F|.8B55 FC MOV EDX,DWORD PTR SS:
004FD992|.3A42 01 CMP AL,BYTE PTR DS: ;与查表校验后的注册码K的第2位(“9”)比较
004FD995|.74 01 JE SHORT perfecti.004FD998 ;又一个 光明与黑暗的十字路口!
004FD997|.46 INC ESI
004FD998|>8D55 F4 LEA EDX,DWORD PTR SS:
004FD99B|.8B45 F8 MOV EAX,DWORD PTR SS: ; (ASCII "Perfect Icon")
004FD99E|.E8 35B3F0FF CALL perfecti.00408CD8
004FD9A3|.8D45 EC LEA EAX,DWORD PTR SS:
004FD9A6|.8B55 F4 MOV EDX,DWORD PTR SS: ;注意大小写 (ASCII "perfect icon")
004FD9A9|.8A12 MOV DL,BYTE PTR DS: ;转换为小写 (ASCII "perfect icon")的第一位
004FD9AB|.E8 7866F0FF CALL perfecti.00404028
004FD9B0|.8B45 EC MOV EAX,DWORD PTR SS:
004FD9B3|.BA 44DA4F00 MOV EDX,perfecti.004FDA44 ;2345679qwertyupadfghjkzxcvbnms
004FD9B8|.E8 2F6AF0FF CALL perfecti.004043EC
004FD9BD|.85C0 TEST EAX,EAX ;在表中的位置。本例(=F)
004FD9BF|.7E 11 JLE SHORT perfecti.004FD9D2
004FD9C1|.8D45 FC LEA EAX,DWORD PTR SS:
004FD9C4|.E8 0769F0FF CALL perfecti.004042D0
004FD9C9|.8B55 F4 MOV EDX,DWORD PTR SS: ;转换为小写的(ASCII "perfect icon")
004FD9CC|.8A12 MOV DL,BYTE PTR DS: ;转换为小写 (ASCII "perfect icon")的第一位
004FD9CE|.8810 MOV BYTE PTR DS:,DL
004FD9D0|.EB 3E JMP SHORT perfecti.004FDA10
004FD9D2|>33DB XOR EBX,EBX
004FD9D4|.8B45 F8 MOV EAX,DWORD PTR SS:
004FD9D7|.E8 2467F0FF CALL perfecti.00404100
004FD9DC|.48 DEC EAX
004FD9DD|.85C0 TEST EAX,EAX
004FD9DF|.7E 13 JLE SHORT perfecti.004FD9F4
004FD9E1|.BA 01000000 MOV EDX,1
004FD9E6|>8B4D F8 /MOV ECX,DWORD PTR SS:
004FD9E9|.0FB64C11 FF |MOVZX ECX,BYTE PTR DS:
004FD9EE|.33D9 |XOR EBX,ECX
004FD9F0|.42 |INC EDX
004FD9F1|.48 |DEC EAX
004FD9F2|.^ 75 F2 \JNZ SHORT perfecti.004FD9E6
004FD9F4|>8BC3 MOV EAX,EBX
004FD9F6|.B9 1E000000 MOV ECX,1E
004FD9FB|.99 CDQ
004FD9FC|.F7F9 IDIV ECX
004FD9FE|.42 INC EDX
004FD9FF|.B8 44DA4F00 MOV EAX,perfecti.004FDA44 ;2345679qwertyupadfghjkzxcvbnms
004FDA04|.8A4410 FF MOV AL,BYTE PTR DS:
004FDA08|.8B55 FC MOV EDX,DWORD PTR SS:
004FDA0B|.3A02 CMP AL,BYTE PTR DS: ;查表校验后的注册码K的第1位!!!
004FDA0D|.74 01 JE SHORT perfecti.004FDA10
004FDA0F|.46 INC ESI
004FDA10|>33C0 XOR EAX,EAX
004FDA12|.5A POP EDX
004FDA13|.59 POP ECX
004FDA14|.59 POP ECX
004FDA15|.64:8910 MOV DWORD PTR FS:,EDX
004FDA18|.68 32DA4F00 PUSH perfecti.004FDA32
004FDA1D|>8D45 EC LEA EAX,DWORD PTR SS:
004FDA20|.BA 05000000 MOV EDX,5
004FDA25|.E8 7A64F0FF CALL perfecti.00403EA4
004FDA2A\.C3 RETN
004FDA2B .^ E9 645EF0FF JMP perfecti.00403894
004FDA30 .^ EB EB JMP SHORT perfecti.004FDA1D
004FDA32 .8BC6 MOV EAX,ESI
004FDA34 .5E POP ESI
004FDA35 .5B POP EBX
004FDA36 .8BE5 MOV ESP,EBP
004FDA38 .5D POP EBP
004FDA39 .C3 RETN
提示点:
004FD992CMP AL,BYTE PTR DS: ;“w”与查表校验后的注册码K的第2位(“9”)比较
004FDA0BCMP AL,BYTE PTR DS: ;“p”查表校验后的注册码K的第1位!!!
------------------------------------------------------------------------------------------------
算法小结:(算法与用户名和邮箱无关)
1.输入的注册码不得少于10位,且符合表中的字符不得少于7位,设为K;
2.K的第2位起依次与下一位XOR,直到倒数第2位为止,结果设为M,则 M mod 1E,余数+1的数值查表所得到的字符必须为K的最后一位。
3.取固定字符串"Perfect Ico"(注意,不含n)的ASC累加和404 mod 1E 的余数8 +1,得到9,查表的第9位为“w”,则K的第2位必须为“w”
4.固定字符串"Perfect Icon"转小写,得到:"perfect icon"。取第一位“p”必须为K的第1位。
附表:
2345679qwertyupadfghjkzxcvbnms
其实真正需要考虑的为前面2条,最后2条可以看做固定的。
所以可以构造注册码为:
0081pw8753084c8
前排学习下,谢谢分享心得 谢谢G大,前排学习了!! 不错啊,学习下! 分析的不错,支持 及时雨啊,谢谢老大。{:lol:} 学习了,有很大收获。
页:
[1]