lixy8888 发表于 2010-6-2 08:59:39

【18小组】中华灯谜算法分析【算法分析】【算法注册机】

本帖最后由 lixy8888 于 2010-6-3 09:17 编辑

【文章标题】: 中华灯谜算法分析
【文章作者】: lixy8888
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
0054EE6C/.55            PUSH EBP
0054EE6D|.8BEC          MOV EBP,ESP
0054EE6F|.B9 16000000   MOV ECX,16
0054EE74|>6A 00         /PUSH 0
0054EE76|.6A 00         |PUSH 0
0054EE78|.49            |DEC ECX
0054EE79|.^ 75 F9         \JNZ SHORT Unpacked.0054EE74
0054EE7B|.51            PUSH ECX
0054EE7C|.53            PUSH EBX
0054EE7D|.56            PUSH ESI
0054EE7E|.8BD8          MOV EBX,EAX
0054EE80|.33C0          XOR EAX,EAX
0054EE82|.55            PUSH EBP
0054EE83|.68 BEF05400   PUSH Unpacked.0054F0BE
0054EE88|.64:FF30       PUSH DWORD PTR FS:
0054EE8B|.64:8920       MOV DWORD PTR FS:,ESP
0054EE8E|.68 80000000   PUSH 80                                  ; /BufSize = 80 (128.)
0054EE93|.8D85 7BFFFFFF LEA EAX,DWORD PTR SS:            ; |
0054EE99|.50            PUSH EAX                                 ; |Buffer
0054EE9A|.E8 4584EBFF   CALL <JMP.&kernel32.GetSystemDirectoryA> ; \GetSystemDirectoryA
0054EE9F|.8D45 FC       LEA EAX,DWORD PTR SS:
0054EEA2|.8D95 7BFFFFFF LEA EDX,DWORD PTR SS:
0054EEA8|.B9 81000000   MOV ECX,81
0054EEAD|.E8 665DEBFF   CALL Unpacked.00404C18
0054EEB2|.8D95 74FFFFFF LEA EDX,DWORD PTR SS:
0054EEB8|.8B83 C8030000 MOV EAX,DWORD PTR DS:
0054EEBE|.E8 C58CEFFF   CALL Unpacked.00447B88
0054EEC3|.83BD 74FFFFFF>CMP DWORD PTR SS:,0
0054EECA|.74 1A         JE SHORT Unpacked.0054EEE6
0054EECC|.8D95 70FFFFFF LEA EDX,DWORD PTR SS:
0054EED2|.8B83 C0030000 MOV EAX,DWORD PTR DS:
0054EED8|.E8 AB8CEFFF   CALL Unpacked.00447B88
0054EEDD|.83BD 70FFFFFF>CMP DWORD PTR SS:,0
0054EEE4|.75 0F         JNZ SHORT Unpacked.0054EEF5
0054EEE6|>B8 D4F05400   MOV EAX,Unpacked.0054F0D4                ;注册信息没有填写齐全
0054EEEB|.E8 8C1EEFFF   CALL Unpacked.00440D7C
0054EEF0|.E9 51010000   JMP Unpacked.0054F046
0054EEF5|>8D95 6CFFFFFF LEA EDX,DWORD PTR SS:
0054EEFB|.8B83 C8030000 MOV EAX,DWORD PTR DS:
0054EF01|.E8 828CEFFF   CALL Unpacked.00447B88
0054EF06|.8B85 6CFFFFFF MOV EAX,DWORD PTR SS:            ;假码
0054EF0C|.50            PUSH EAX                                 ;假码入EAX
0054EF0D|.8D95 64FFFFFF LEA EDX,DWORD PTR SS:
0054EF13|.8B83 C0030000 MOV EAX,DWORD PTR DS:
0054EF19|.E8 6A8CEFFF   CALL Unpacked.00447B88
0054EF1E|.8B85 64FFFFFF MOV EAX,DWORD PTR SS:            ;订单号
0054EF24|.E8 DBA6EBFF   CALL Unpacked.00409604                   ;订单号转16进制
0054EF29|.B9 3A000000   MOV ECX,3A                               ;ecx=3A
0054EF2E|.99            CDQ
0054EF2F|.F7F9          IDIV ECX                                 ;订单号 MOD 3A =20
0054EF31|.8BC2          MOV EAX,EDX                              ;注册码第一部分设为SN1=32
0054EF33|.8D95 68FFFFFF LEA EDX,DWORD PTR SS:
0054EF39|.E8 62A6EBFF   CALL Unpacked.004095A0
0054EF3E|.8D85 68FFFFFF LEA EAX,DWORD PTR SS:
0054EF44|.50            PUSH EAX
0054EF45|.8D95 58FFFFFF LEA EDX,DWORD PTR SS:
0054EF4B|.8B83 C0030000 MOV EAX,DWORD PTR DS:
0054EF51|.E8 328CEFFF   CALL Unpacked.00447B88
0054EF56|.8B85 58FFFFFF MOV EAX,DWORD PTR SS:            ;订单号
0054EF5C|.E8 A3A6EBFF   CALL Unpacked.00409604
0054EF61|.8D95 5CFFFFFF LEA EDX,DWORD PTR SS:
0054EF67|.E8 80DCFFFF   CALL Unpacked.0054CBEC                   ;中间计算结果
0054EF6C|.8B85 5CFFFFFF MOV EAX,DWORD PTR SS:
0054EF72|.E8 8DA6EBFF   CALL Unpacked.00409604
0054EF77|.8D95 60FFFFFF LEA EDX,DWORD PTR SS:
0054EF7D|.E8 4ADDFFFF   CALL Unpacked.0054CCCC
0054EF82|.8B95 60FFFFFF MOV EDX,DWORD PTR SS:            ;EDX=3615u412~f1449 注册码第2部分记为SN2
0054EF88|.58            POP EAX
0054EF89|.E8 E25CEBFF   CALL Unpacked.00404C70                   ;两部分连接SN1&SN2 这里可做内存注册机
0054EF8E|.8B95 68FFFFFF MOV EDX,DWORD PTR SS:
0054EF94|.58            POP EAX
0054EF95|.E8 125EEBFF   CALL Unpacked.00404DAC
0054EF9A      0F85 8F000000 JNZ Unpacked.0054F02F
0054EFA0|.B8 F4F05400   MOV EAX,Unpacked.0054F0F4                ;注册成功,谢谢你的注册!
0054EFA5|.E8 D21DEFFF   CALL Unpacked.00440D7C
0054EFAA|.BA 18F15400   MOV EDX,Unpacked.0054F118                ;本软件已注册
0054EFAF|.8B83 B0030000 MOV EAX,DWORD PTR DS:
0054EFB5|.E8 FE8BEFFF   CALL Unpacked.00447BB8
0054EFBA|.8D85 54FFFFFF LEA EAX,DWORD PTR SS:
0054EFC0|.B9 30F15400   MOV ECX,Unpacked.0054F130                ;\dC0n.dll
0054EFC5|.8B55 FC       MOV EDX,DWORD PTR SS:
0054EFC8|.E8 E75CEBFF   CALL Unpacked.00404CB4
0054EFCD|.8B8D 54FFFFFF MOV ECX,DWORD PTR SS:
0054EFD3|.B2 01         MOV DL,1
0054EFD5|.A1 B8184700   MOV EAX,DWORD PTR DS:
0054EFDA|.E8 8929F2FF   CALL Unpacked.00471968
0054EFDF|.8BF0          MOV ESI,EAX
0054EFE1|.8D95 50FFFFFF LEA EDX,DWORD PTR SS:
0054EFE7|.8B83 C0030000 MOV EAX,DWORD PTR DS:
0054EFED|.E8 968BEFFF   CALL Unpacked.00447B88
0054EFF2|.8B85 50FFFFFF MOV EAX,DWORD PTR SS:
0054EFF8|.50            PUSH EAX
0054EFF9|.B9 44F15400   MOV ECX,Unpacked.0054F144                ;sepop
0054EFFE|.BA 54F15400   MOV EDX,Unpacked.0054F154                ;syssetup
0054F003|.8BC6          MOV EAX,ESI
0054F005|.8B18          MOV EBX,DWORD PTR DS:
0054F007|.FF53 04       CALL DWORD PTR DS:
0054F00A|.8D85 4CFFFFFF LEA EAX,DWORD PTR SS:
0054F010|.B9 30F15400   MOV ECX,Unpacked.0054F130                ;\dC0n.dll
0054F015|.8B55 FC       MOV EDX,DWORD PTR SS:
0054F018|.E8 975CEBFF   CALL Unpacked.00404CB4
0054F01D|.8B85 4CFFFFFF MOV EAX,DWORD PTR SS:
0054F023|.BA 02000000   MOV EDX,2
0054F028|.E8 03A9EBFF   CALL Unpacked.00409930
0054F02D|.EB 17         JMP SHORT Unpacked.0054F046
0054F02F|>B8 68F15400   MOV EAX,Unpacked.0054F168                ;注册码错误,请重新输入!
0054F034|.E8 431DEFFF   CALL Unpacked.00440D7C
0054F039|.33D2          XOR EDX,EDX

算法CALL1
0054CBEC/$55            PUSH EBP
0054CBED|.8BEC          MOV EBP,ESP
0054CBEF|.33C9          XOR ECX,ECX
0054CBF1|.51            PUSH ECX
0054CBF2|.51            PUSH ECX
0054CBF3|.51            PUSH ECX
0054CBF4|.51            PUSH ECX
0054CBF5|.53            PUSH EBX
0054CBF6|.56            PUSH ESI
0054CBF7|.8BF2          MOV ESI,EDX
0054CBF9|.8BD8          MOV EBX,EAX                              ;EAX=1E240
0054CBFB|.33C0          XOR EAX,EAX
0054CBFD|.55            PUSH EBP
0054CBFE|.68 BCCC5400   PUSH Unpacked.0054CCBC
0054CC03|.64:FF30       PUSH DWORD PTR FS:
0054CC06|.64:8920       MOV DWORD PTR FS:,ESP
0054CC09|.81F3 F1250B00 XOR EBX,0B25F1                           ;1E240 xor B25F1=AC7B1
0054CC0F|.8BC3          MOV EAX,EBX
0054CC11|.33D2          XOR EDX,EDX
0054CC13|.52            PUSH EDX                                 ; /Arg2 => 00000000
0054CC14|.50            PUSH EAX                                 ; |Arg1
0054CC15|.8D45 FC       LEA EAX,DWORD PTR SS:             ; |
0054CC18|.E8 B3C9EBFF   CALL Unpacked.004095D0                   ; \Unpacked.004095D0
0054CC1D|.8B45 FC       MOV EAX,DWORD PTR SS:             ;AC7B1转10进制=706481
0054CC20|.0FB600      MOVZX EAX,BYTE PTR DS:            ;取第一位的ASC37
0054CC23|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CC26|.0FB652 01   MOVZX EDX,BYTE PTR DS:            ;取第二位的ASC30
0054CC2A|.03C2          ADD EAX,EDX                              ;37+30=67
0054CC2C|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CC31|.99            CDQ
0054CC32|.F7F9          IDIV ECX                                 ;67 MOD 5=3
0054CC34|.80C2 34       ADD DL,34                              ;3+34=37
0054CC37|.8855 F8       MOV BYTE PTR SS:,DL
0054CC3A|.8B45 FC       MOV EAX,DWORD PTR SS:             ;EAX=706481
0054CC3D|.0FB640 02   MOVZX EAX,BYTE PTR DS:            ;取第三位的ASC36
0054CC41|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CC44|.0FB652 03   MOVZX EDX,BYTE PTR DS:            ;取第四位的ASC34
0054CC48|.03C2          ADD EAX,EDX                              ;EAX=34+36=6A
0054CC4A|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CC4F|.99            CDQ
0054CC50|.F7F9          IDIV ECX                                 ;EDX=EAX mod 5=1
0054CC52|.8BDA          MOV EBX,EDX
0054CC54|.80C3 33       ADD BL,33                              ;BL=1+33=34
0054CC57|.885D F9       MOV BYTE PTR SS:,BL
0054CC5A|.8D45 F4       LEA EAX,DWORD PTR SS:
0054CC5D|.8A55 F8       MOV DL,BYTE PTR SS:
0054CC60|.E8 2B7FEBFF   CALL Unpacked.00404B90
0054CC65|.8B45 F4       MOV EAX,DWORD PTR SS:             ;37转为ASCII码为7
0054CC68|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CC6B|.B9 1B000000   MOV ECX,1B
0054CC70|.E8 D382EBFF   CALL Unpacked.00404F48
0054CC75|.8D45 F0       LEA EAX,DWORD PTR SS:
0054CC78|.8BD3          MOV EDX,EBX
0054CC7A|.E8 117FEBFF   CALL Unpacked.00404B90
0054CC7F|.8B45 F0       MOV EAX,DWORD PTR SS:
0054CC82|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CC85|.B9 19000000   MOV ECX,19
0054CC8A|.E8 B982EBFF   CALL Unpacked.00404F48
0054CC8F|.8BC6          MOV EAX,ESI
0054CC91|.8B55 FC       MOV EDX,DWORD PTR SS:             ;706481 & 7 & 4=70648174
0054CC94|.E8 6B7DEBFF   CALL Unpacked.00404A04
0054CC99|.33C0          XOR EAX,EAX
0054CC9B|.5A            POP EDX
0054CC9C|.59            POP ECX
0054CC9D|.59            POP ECX
0054CC9E|.64:8910       MOV DWORD PTR FS:,EDX
0054CCA1|.68 C3CC5400   PUSH Unpacked.0054CCC3
0054CCA6|>8D45 F0       LEA EAX,DWORD PTR SS:
0054CCA9|.BA 02000000   MOV EDX,2
0054CCAE|.E8 217DEBFF   CALL Unpacked.004049D4
0054CCB3|.8D45 FC       LEA EAX,DWORD PTR SS:
0054CCB6|.E8 F57CEBFF   CALL Unpacked.004049B0
0054CCBB\.C3            RETN

算法CALL2
0054CCCC/$55            PUSH EBP
0054CCCD|.8BEC          MOV EBP,ESP
0054CCCF|.33C9          XOR ECX,ECX
0054CCD1|.51            PUSH ECX
0054CCD2|.51            PUSH ECX
0054CCD3|.51            PUSH ECX
0054CCD4|.51            PUSH ECX
0054CCD5|.51            PUSH ECX
0054CCD6|.51            PUSH ECX
0054CCD7|.53            PUSH EBX
0054CCD8|.56            PUSH ESI
0054CCD9|.8BF2          MOV ESI,EDX
0054CCDB|.8BD8          MOV EBX,EAX                              ;EAX=436016E
0054CCDD|.33C0          XOR EAX,EAX
0054CCDF|.55            PUSH EBP
0054CCE0|.68 18CE5400   PUSH Unpacked.0054CE18
0054CCE5|.64:FF30       PUSH DWORD PTR FS:
0054CCE8|.64:8920       MOV DWORD PTR FS:,ESP
0054CCEB|.81F3 8776FBDD XOR EBX,DDFB7687                         ;EBX=436016E xor DDFB7687=D9CD77E9
0054CCF1|.8BC3          MOV EAX,EBX
0054CCF3|.33D2          XOR EDX,EDX
0054CCF5|.52            PUSH EDX                                 ; /Arg2 => 00000000
0054CCF6|.50            PUSH EAX                                 ; |Arg1
0054CCF7|.8D45 FC       LEA EAX,DWORD PTR SS:             ; |
0054CCFA|.E8 D1C8EBFF   CALL Unpacked.004095D0                   ; \D9CD77E9转10进制=3654121449设为A
0054CCFF|.8B45 FC       MOV EAX,DWORD PTR SS:
0054CD02|.0FB600      MOVZX EAX,BYTE PTR DS:            ;取A的第一位ASC 33
0054CD05|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CD08|.0FB652 01   MOVZX EDX,BYTE PTR DS:            ;取A的第一位ASC36
0054CD0C|.03C2          ADD EAX,EDX                              ;36+33=69
0054CD0E|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CD13|.99            CDQ
0054CD14|.F7F9          IDIV ECX                                 ;69 mod 5=0
0054CD16|.80C2 66       ADD DL,66                              ;DL=0+66=66   注册码其中一位
0054CD19|.8855 F8       MOV BYTE PTR SS:,DL               ;66=f
0054CD1C|.8B45 FC       MOV EAX,DWORD PTR SS:
0054CD1F|.0FB640 02   MOVZX EAX,BYTE PTR DS:            ;取A的第三位ASC 35
0054CD23|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CD26|.0FB652 03   MOVZX EDX,BYTE PTR DS:            ;取A的第四位ASC 34
0054CD2A|.03C2          ADD EAX,EDX                              ;EAX=35+34=69
0054CD2C|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CD31|.99            CDQ
0054CD32|.F7F9          IDIV ECX                                 ;69 mod 5=0
0054CD34|.80C2 75       ADD DL,75                              ;DL=0+75=75   注册码其中一位
0054CD37|.8855 F9       MOV BYTE PTR SS:,DL               ;u
0054CD3A|.8B45 FC       MOV EAX,DWORD PTR SS:
0054CD3D|.0FB640 04   MOVZX EAX,BYTE PTR DS:            ;取A的第五位ASC 31
0054CD41|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CD44|.0FB652 05   MOVZX EDX,BYTE PTR DS:            ;取A的第六位ASC 32
0054CD48|.03C2          ADD EAX,EDX                              ;31+32=63
0054CD4A|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CD4F|.99            CDQ
0054CD50|.F7F9          IDIV ECX                                 ;63 MOD 5=4
0054CD52|.80C2 7A       ADD DL,7A                              ;DL=4+7A=7E   注册码其中一位
0054CD55|.8855 FA       MOV BYTE PTR SS:,DL               ;~
0054CD58|.8B45 FC       MOV EAX,DWORD PTR SS:
0054CD5B|.0FB640 06   MOVZX EAX,BYTE PTR DS:            ;取A的第七位ASC 31
0054CD5F|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CD62|.0FB652 07   MOVZX EDX,BYTE PTR DS:            ;取A的第八位ASC 34
0054CD66|.03C2          ADD EAX,EDX                              ;31+34=65
0054CD68|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CD6B|.0FB652 08   MOVZX EDX,BYTE PTR DS:            ;取A的第九位ASC 34
0054CD6F|.03C2          ADD EAX,EDX                              ;65+34=99
0054CD71|.B9 05000000   MOV ECX,5                              ;ECX=5
0054CD76|.99            CDQ
0054CD77|.F7F9          IDIV ECX                                 ;99 mod 5=3
0054CD79|.80C2 69       ADD DL,69                              ;DL=3+69=6c    注册码其中一位
0054CD7C|.8855 FB       MOV BYTE PTR SS:,DL
0054CD7F|.8D45 F4       LEA EAX,DWORD PTR SS:
0054CD82|.8A55 F8       MOV DL,BYTE PTR SS:               ;DL=66
0054CD85|.E8 067EEBFF   CALL Unpacked.00404B90                   ;转为ASCII码f
0054CD8A|.8B45 F4       MOV EAX,DWORD PTR SS:
0054CD8D|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CD90|.B9 07000000   MOV ECX,7                              ;应放在3654121449的第7位
0054CD95|.E8 AE81EBFF   CALL Unpacked.00404F48                   ;365412f1449
0054CD9A|.8D45 F0       LEA EAX,DWORD PTR SS:
0054CD9D|.8A55 FB       MOV DL,BYTE PTR SS:               ;DL=6C
0054CDA0|.E8 EB7DEBFF   CALL Unpacked.00404B90                   ;转为ASCII码l
0054CDA5|.8B45 F0       MOV EAX,DWORD PTR SS:
0054CDA8|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CDAB|.B9 03000000   MOV ECX,3                              ;应放在365412f1449的第3位
0054CDB0|.E8 9381EBFF   CALL Unpacked.00404F48                   ;36l5412f1449
0054CDB5|.8D45 EC       LEA EAX,DWORD PTR SS:
0054CDB8|.8A55 F9       MOV DL,BYTE PTR SS:               ;DL=75
0054CDBB|.E8 D07DEBFF   CALL Unpacked.00404B90                   ;转为ASCII码u
0054CDC0|.8B45 EC       MOV EAX,DWORD PTR SS:
0054CDC3|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CDC6|.B9 05000000   MOV ECX,5                              ;应放在36l5412f1449的第5位
0054CDCB|.E8 7881EBFF   CALL Unpacked.00404F48
0054CDD0|.8D45 E8       LEA EAX,DWORD PTR SS:            ;36l5u412f1449
0054CDD3|.8A55 FA       MOV DL,BYTE PTR SS:               ;dl=7E
0054CDD6|.E8 B57DEBFF   CALL Unpacked.00404B90                   ;转为ASCII码~
0054CDDB|.8B45 E8       MOV EAX,DWORD PTR SS:
0054CDDE|.8D55 FC       LEA EDX,DWORD PTR SS:
0054CDE1|.B9 09000000   MOV ECX,9                              ;应放在36l5u412f1449的第9位
0054CDE6|.E8 5D81EBFF   CALL Unpacked.00404F48                   ;36l5u412~f1449注册码第二部分设为SN2
0054CDEB|.8BC6          MOV EAX,ESI
0054CDED|.8B55 FC       MOV EDX,DWORD PTR SS:
0054CDF0|.E8 0F7CEBFF   CALL Unpacked.00404A04
0054CDF5|.33C0          XOR EAX,EAX
0054CDF7|.5A            POP EDX
0054CDF8|.59            POP ECX
0054CDF9|.59            POP ECX
0054CDFA|.64:8910       MOV DWORD PTR FS:,EDX
0054CDFD|.68 1FCE5400   PUSH Unpacked.0054CE1F
0054CE02|>8D45 E8       LEA EAX,DWORD PTR SS:
0054CE05|.BA 04000000   MOV EDX,4
0054CE0A|.E8 C57BEBFF   CALL Unpacked.004049D4
0054CE0F|.8D45 FC       LEA EAX,DWORD PTR SS:
0054CE12|.E8 997BEBFF   CALL Unpacked.004049B0
0054CE17\.C3            RETN


--------------------------------------------------------------------------------
【经验总结】
算法很简单,回头有空写下注册机

--------------------------------------------------------------------------------

                                                       2010年06月01日 17:47:56

月之精灵 发表于 2010-6-2 17:10:30

请按规矩把标题改下,
参看这里:https://www.chinapyg.com/viewthread.php?tid=56915&extra=page%3D1

lixy8888 发表于 2010-6-3 09:17:43

补上算法注册机

极点 发表于 2010-6-3 09:49:25

很好很强大。晚上回来看。

分析的很清析

qmike001 发表于 2011-8-15 12:42:33

注册机呢

gudao 发表于 2012-3-2 14:00:51

哈哈,没看到啊

cfc1680 发表于 2012-3-5 04:23:37

感谢分享了,不错的教程哦

lijunfa12345 发表于 2014-10-3 13:46:39

学习学习
页: [1]
查看完整版本: 【18小组】中华灯谜算法分析【算法分析】【算法注册机】