飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4045|回复: 3

[原创] 超级Flv视频转换器算法分析带算号器

[复制链接]

该用户从未签到

发表于 2010-3-14 17:15:02 | 显示全部楼层 |阅读模式
【文章标题】: 超级Flv视频转换器算法分析带算号器
【作    者】: 冰河之刃
【邮    箱】: [email]dashi222@163.com[/email]
【主    页】: [url]http://user.qzone.qq.com/290113866[/url]
【QQ    号】: 290113866
【软件名称】: 超级Flv视频转换器 1.30
【大    小】: 1.15M
【下载地址】: 自己搜索下载
【加壳方式】: 无壳
【保护方式】: 重启验证
【编写语言】: Borland Delphi 6.0 - 7.0
【工    具】: peid,od,双手和大脑
【操作平台】: Windows xp3
【软件介绍】: flv格式转换器,优酷土豆全是flv格式的视频,呵呵
【作者声明】: 相互交流,共同进步!
--------------------------------------------------------------------------------
【详细过程】
  先介绍一下这个软件,功能上面挺全面的。
  启动时会验证是否是注册用户,若不是则弹出注册窗体。
  未注册时标题栏会显示未注册只能转换20%的视频。
  点注册后,若注册码错误则弹出错误提示,若正确则提示信息已经记录下来了,重启后就可验证是否正确。
  注册信息保存在注册表中:[HKEY_LOCAL_MACHINE\SOFTWARE\mp4soft\flvconverter]
  
  
  
  -------------------------------------启动时候的流程----------------------------------------------------
  
  
  004C0224   .  8B00          MOV EAX,DWORD PTR DS:[EAX]               ;  在启动时判断注册表中数据是否合法
  004C0226   .  E8 11CAFFFF   CALL flv.004BCC3C                        ;  关键call
  004C022B   .  8B55 BC       MOV EDX,DWORD PTR SS:[EBP-44]            ;  在EDX中放入注册码
  004C022E   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004C0231   .  8B80 00050000 MOV EAX,DWORD PTR DS:[EAX+500]           ;  在EAX中放入假码
  004C0237   .  E8 FC44F4FF   CALL flv.00404738                        ;  比较注册码是否为真,为假则跳向失败处
  004C023C   .  75 0C         JNZ SHORT flv.004C024A                   ;  若跳转实现 则证明 注册码错误
  004C023E   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004C0241   .  C680 F4040000>MOV BYTE PTR DS:[EAX+4F4],0
  004C0248   .  EB 31         JMP SHORT flv.004C027B                   ;  此jmp可跳过错误提示
  004C024A   >  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004C024D   .  C680 F4040000>MOV BYTE PTR DS:[EAX+4F4],1
  004C0254   .  8D55 B8       LEA EDX,DWORD PTR SS:[EBP-48]
  004C0257   .  A1 1C7E4C00   MOV EAX,DWORD PTR DS:[4C7E1C]
  004C025C   .  E8 876EFAFF   CALL flv.004670E8
  004C0261   .  8D45 B8       LEA EAX,DWORD PTR SS:[EBP-48]
  004C0264   .  BA B4054C00   MOV EDX,flv.004C05B4                     ;  (试用版只能转换源文件20%的时间!)
  004C0269   .  E8 8643F4FF   CALL flv.004045F4
  004C026E   .  8B55 B8       MOV EDX,DWORD PTR SS:[EBP-48]
  004C0271   .  A1 1C7E4C00   MOV EAX,DWORD PTR DS:[4C7E1C]
  004C0276   .  E8 9D6EFAFF   CALL flv.00467118
  004C027B   >  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  上面的jmp跳向此处。。。
  
  
  ---------------------------------------------算法call--------------------------------------------------
  
  
  004BCC3C  /$  55            PUSH EBP                                 ;  算法开始
  004BCC3D  |.  8BEC          MOV EBP,ESP
  004BCC3F  |.  51            PUSH ECX
  004BCC40  |.  B9 04000000   MOV ECX,4
  004BCC45  |>  6A 00         /PUSH 0                                  ;  依次获取用户名
  004BCC47  |.  6A 00         |PUSH 0
  004BCC49  |.  49            |DEC ECX
  004BCC4A  |.^ 75 F9         \JNZ SHORT flv.004BCC45
  004BCC4C  |.  51            PUSH ECX
  004BCC4D  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
  004BCC50  |.  53            PUSH EBX
  004BCC51  |.  56            PUSH ESI
  004BCC52  |.  57            PUSH EDI
  004BCC53  |.  8BF9          MOV EDI,ECX
  004BCC55  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
  004BCC58  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  把从EDX中得到的用户名装入eax
  004BCC5B  |.  E8 7C7BF4FF   CALL flv.004047DC
  004BCC60  |.  33C0          XOR EAX,EAX                              ;  清空EAX
  004BCC62  |.  55            PUSH EBP
  004BCC63  |.  68 FDCD4B00   PUSH flv.004BCDFD
  004BCC68  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004BCC6B  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004BCC6E  |.  8BC7          MOV EAX,EDI
  004BCC70  |.  E8 9B76F4FF   CALL flv.00404310
  004BCC75  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BCC78  |.  E8 6F79F4FF   CALL flv.004045EC
  004BCC7D  |.  8BF0          MOV ESI,EAX
  004BCC7F  |.  85F6          TEST ESI,ESI
  004BCC81  |.  7E 26         JLE SHORT flv.004BCCA9
  004BCC83  |.  BB 01000000   MOV EBX,1                                ;  将EBX中放入初始值1
  004BCC88  |>  8D4D EC       /LEA ECX,DWORD PTR SS:[EBP-14]
  004BCC8B  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]            ;  得到用户名,放入EAX中
  004BCC8E  |.  0FB64418 FF   |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]       ;  依次取用户名的每一位
  004BCC93  |.  33D2          |XOR EDX,EDX                             ;  清空EDX
  004BCC95  |.  E8 4AC0F4FF   |CALL flv.00408CE4                       ;  将取到 的字母转换为16进制
  004BCC9A  |.  8B55 EC       |MOV EDX,DWORD PTR SS:[EBP-14]           ;  将转换后的数字放入EDX中
  004BCC9D  |.  8D45 F8       |LEA EAX,DWORD PTR SS:[EBP-8]
  004BCCA0  |.  E8 4F79F4FF   |CALL flv.004045F4                       ;  将转换为16进制后的数字累加起来
  004BCCA5  |.  43            |INC EBX                                 ;  将EBX加一
  004BCCA6  |.  4E            |DEC ESI                                 ;  将ESI减一,注意寄存器中数据
  004BCCA7  |.^ 75 DF         \JNZ SHORT flv.004BCC88
  004BCCA9  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  将转换为16进制后的数字装入EAX中
  004BCCAC  |.  E8 3B79F4FF   CALL flv.004045EC
  004BCCB1  |.  8BF0          MOV ESI,EAX
  004BCCB3  |.  85F6          TEST ESI,ESI
  004BCCB5  |.  7E 2C         JLE SHORT flv.004BCCE3
  004BCCB7  |.  BB 01000000   MOV EBX,1                                ;  下面的循环主要是实现对上面数字串的逆序
  004BCCBC  |>  8B45 F8       /MOV EAX,DWORD PTR SS:[EBP-8]            ;  得到转换为16进制后的数字串
  004BCCBF  |.  E8 2879F4FF   |CALL flv.004045EC
  004BCCC4  |.  2BC3          |SUB EAX,EBX                             ;  EAX减去EBX
  004BCCC6  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]            ;  将EDX中放入最后的数字
  004BCCC9  |.  8A1402        |MOV DL,BYTE PTR DS:[EDX+EAX]
  004BCCCC  |.  8D45 E8       |LEA EAX,DWORD PTR SS:[EBP-18]
  004BCCCF  |.  E8 2478F4FF   |CALL flv.004044F8                       ;  依次正向获取每一位数字
  004BCCD4  |.  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]           ;  在EDX中放入已经截掉对应位数的数字串
  004BCCD7  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  004BCCDA  |.  E8 1579F4FF   |CALL flv.004045F4
  004BCCDF  |.  43            |INC EBX                                 ;  计算位数呢,循环的条件
  004BCCE0  |.  4E            |DEC ESI
  004BCCE1  |.^ 75 D9         \JNZ SHORT flv.004BCCBC
  004BCCE3  |>  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
  004BCCE6  |.  50            PUSH EAX
  004BCCE7  |.  B9 04000000   MOV ECX,4                                ;  注意ECX和EDX中的数字。。。
  004BCCEC  |.  BA 01000000   MOV EDX,1
  004BCCF1  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  在EAX中放入逆序后的数字串
  004BCCF4  |.  E8 537BF4FF   CALL flv.0040484C
  004BCCF9  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
  004BCCFC  |.  50            PUSH EAX
  004BCCFD  |.  B9 04000000   MOV ECX,4                                ;  再次注意ECX和EDX中的数字。。。
  004BCD02  |.  BA 05000000   MOV EDX,5
  004BCD07  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004BCD0A  |.  E8 3D7BF4FF   CALL flv.0040484C                        ;  此call截取前4位数字
  004BCD0F  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  004BCD12  |.  E8 D578F4FF   CALL flv.004045EC
  004BCD17  |.  83F8 04       CMP EAX,4                                ;  比较EAX中数字是否大于等于4,若符合则跳
  004BCD1A  |.  7D 2F         JGE SHORT flv.004BCD4B
  004BCD1C  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  004BCD1F  |.  E8 C878F4FF   CALL flv.004045EC
  004BCD24  |.  8BD8          MOV EBX,EAX
  004BCD26  |.  83FB 03       CMP EBX,3
  004BCD29  |.  7F 20         JG SHORT flv.004BCD4B
  004BCD2B  |>  8D4D E4       /LEA ECX,DWORD PTR SS:[EBP-1C]
  004BCD2E  |.  8BC3          |MOV EAX,EBX
  004BCD30  |.  C1E0 02       |SHL EAX,2
  004BCD33  |.  33D2          |XOR EDX,EDX
  004BCD35  |.  E8 AABFF4FF   |CALL flv.00408CE4
  004BCD3A  |.  8B55 E4       |MOV EDX,DWORD PTR SS:[EBP-1C]
  004BCD3D  |.  8D45 F8       |LEA EAX,DWORD PTR SS:[EBP-8]
  004BCD40  |.  E8 AF78F4FF   |CALL flv.004045F4
  004BCD45  |.  43            |INC EBX
  004BCD46  |.  83FB 04       |CMP EBX,4
  004BCD49  |.^ 75 E0         \JNZ SHORT flv.004BCD2B
  004BCD4B  |>  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  获取第5到第8位数字,也共4位
  004BCD4E  |.  E8 9978F4FF   CALL flv.004045EC
  004BCD53  |.  83F8 04       CMP EAX,4
  004BCD56  |.  7D 2F         JGE SHORT flv.004BCD87
  004BCD58  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004BCD5B  |.  E8 8C78F4FF   CALL flv.004045EC
  004BCD60  |.  8BD8          MOV EBX,EAX
  004BCD62  |.  83FB 03       CMP EBX,3
  004BCD65  |.  7F 20         JG SHORT flv.004BCD87
  004BCD67  |>  8D4D E0       /LEA ECX,DWORD PTR SS:[EBP-20]
  004BCD6A  |.  8BC3          |MOV EAX,EBX
  004BCD6C  |.  C1E0 02       |SHL EAX,2
  004BCD6F  |.  33D2          |XOR EDX,EDX
  004BCD71  |.  E8 6EBFF4FF   |CALL flv.00408CE4
  004BCD76  |.  8B55 E0       |MOV EDX,DWORD PTR SS:[EBP-20]
  004BCD79  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  004BCD7C  |.  E8 7378F4FF   |CALL flv.004045F4
  004BCD81  |.  43            |INC EBX
  004BCD82  |.  83FB 04       |CMP EBX,4
  004BCD85  |.^ 75 E0         \JNZ SHORT flv.004BCD67
  004BCD87  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            ;  下面一行获取一个固定值 flv67u986e
  004BCD8A  |.  BA 14CE4B00   MOV EDX,flv.004BCE14                     ;  flv67u986e
  004BCD8F  |.  E8 1476F4FF   CALL flv.004043A8
  004BCD94  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
  004BCD97  |.  50            PUSH EAX
  004BCD98  |.  B9 04000000   MOV ECX,4                                ;  注意ECX和EDX中的数字。。。
  004BCD9D  |.  BA 01000000   MOV EDX,1
  004BCDA2  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  004BCDA5  |.  E8 A27AF4FF   CALL flv.0040484C                        ;  此CALL截取 flv67u986e 中的前4位数字
  004BCDAA  |.  FF75 DC       PUSH DWORD PTR SS:[EBP-24]
  004BCDAD  |.  68 28CE4B00   PUSH flv.004BCE28                        ;  -
  004BCDB2  |.  FF75 F8       PUSH DWORD PTR SS:[EBP-8]                ;  获得逆序后的第0到4位数字
  004BCDB5  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
  004BCDB8  |.  50            PUSH EAX
  004BCDB9  |.  B9 05000000   MOV ECX,5                                ;  还是要注意ECX和EDX中的数字。。。
  004BCDBE  |.  BA 05000000   MOV EDX,5
  004BCDC3  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  004BCDC6  |.  E8 817AF4FF   CALL flv.0040484C                        ;  此CALL从 flv67u986e 中的第5位开始,截5位数字
  004BCDCB  |.  FF75 D8       PUSH DWORD PTR SS:[EBP-28]               ;  截完后也就是    7u986 了
  004BCDCE  |.  68 28CE4B00   PUSH flv.004BCE28                        ;  -
  004BCDD3  |.  FF75 F4       PUSH DWORD PTR SS:[EBP-C]                ;  获取逆序后第4到第8之间的数字
  004BCDD6  |.  8BC7          MOV EAX,EDI
  004BCDD8  |.  BA 06000000   MOV EDX,6
  004BCDDD  |.  E8 CA78F4FF   CALL flv.004046AC
  004BCDE2  |.  33C0          XOR EAX,EAX
  004BCDE4  |.  5A            POP EDX
  004BCDE5  |.  59            POP ECX
  004BCDE6  |.  59            POP ECX
  004BCDE7  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004BCDEA  |.  68 04CE4B00   PUSH flv.004BCE04
  004BCDEF  |>  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
  004BCDF2  |.  BA 0A000000   MOV EDX,0A
  004BCDF7  |.  E8 3875F4FF   CALL flv.00404334                        ;  此call将前面计算出的连起来拼成注册码
  004BCDFC  \.  C3            RETN
  004BCDFD   .^ E9 526EF4FF   JMP flv.00403C54
  004BCE02   .^ EB EB         JMP SHORT flv.004BCDEF
  004BCE04   .  5F            POP EDI
  004BCE05   .  5E            POP ESI
  004BCE06   .  5B            POP EBX
  004BCE07   .  8BE5          MOV ESP,EBP
  004BCE09   .  5D            POP EBP
  004BCE0A   .  C3            RETN                                     ;  要返回了,算法结束
  
  
  
  ----------------------------------------点注册按钮后的流程--------------------------------------------
  
  
  
  004BD02A   .  55            PUSH EBP                                 ;  按注册按钮时程序的流程
  004BD02B   .  68 69D14B00   PUSH flv.004BD169
  004BD030   .  64:FF30       PUSH DWORD PTR FS:[EAX]
  004BD033   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004BD036   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD039   .  E8 B2FEFFFF   CALL flv.004BCEF0                        ;  点注册后会调用此call计算注册码
  004BD03E   .  84C0          TEST AL,AL                               ;  比较一下
  004BD040   .  0F84 DB000000 JE flv.004BD121                          ;  看是否是合法用户,不是则跳向失败处
  004BD046   .  33C0          XOR EAX,EAX
  004BD048   .  55            PUSH EBP                                 ;  上面若注册码正确就将注册信息保存在注册表中
  004BD049   .  68 05D14B00   PUSH flv.004BD105
  004BD04E   .  64:FF30       PUSH DWORD PTR FS:[EAX]
  004BD051   .  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004BD054   .  B2 01         MOV DL,1
  004BD056   .  A1 E8B34300   MOV EAX,DWORD PTR DS:[43B3E8]
  004BD05B   .  E8 88E4F7FF   CALL flv.0043B4E8
  004BD060   .  8BD8          MOV EBX,EAX
  004BD062   .  BA 02000080   MOV EDX,80000002
  004BD067   .  8BC3          MOV EAX,EBX
  004BD069   .  E8 1AE5F7FF   CALL flv.0043B588
  004BD06E   .  B1 01         MOV CL,1
  004BD070   .  BA 80D14B00   MOV EDX,flv.004BD180                     ;  Software\mp4soft\flvconverter
  004BD075   .  8BC3          MOV EAX,EBX
  004BD077   .  E8 70E5F7FF   CALL flv.0043B5EC
  004BD07C   .  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
  004BD07F   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD082   .  8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
  004BD088   .  E8 5BA0FAFF   CALL flv.004670E8
  004BD08D   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  004BD090   .  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
  004BD093   .  E8 D0B8F4FF   CALL flv.00408968
  004BD098   .  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]
  004BD09B   .  BA A8D14B00   MOV EDX,flv.004BD1A8                     ;  Name
  004BD0A0   .  8BC3          MOV EAX,EBX
  004BD0A2   .  E8 E1E6F7FF   CALL flv.0043B788
  004BD0A7   .  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
  004BD0AA   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD0AD   .  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
  004BD0B3   .  E8 30A0FAFF   CALL flv.004670E8
  004BD0B8   .  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
  004BD0BB   .  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
  004BD0BE   .  E8 A5B8F4FF   CALL flv.00408968
  004BD0C3   .  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
  004BD0C6   .  BA B8D14B00   MOV EDX,flv.004BD1B8                     ;  Pass
  004BD0CB   .  8BC3          MOV EAX,EBX
  004BD0CD   .  E8 B6E6F7FF   CALL flv.0043B788
  004BD0D2   .  8BC3          MOV EAX,EBX
  004BD0D4   .  E8 E763F4FF   CALL flv.004034C0
  004BD0D9   .  6A 40         PUSH 40
  004BD0DB   .  68 C0D14B00   PUSH flv.004BD1C0                        ;  软件注册
  004BD0E0   .  68 CCD14B00   PUSH flv.004BD1CC                        ;  已保存了注册信息!下次启动本程序时将会对你的注册码进行验证,如注册码正确,本程序所有功能限制将被解除,您成为我们正式版本用户!
  004BD0E5   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD0E8   .  E8 E307FBFF   CALL flv.0046D8D0
  004BD0ED   .  50            PUSH EAX                                 ; |hOwner
  004BD0EE   .  E8 5DA1F4FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  004BD0F3   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD0F6   .  E8 6D6DFCFF   CALL flv.00483E68
  004BD0FB   .  33C0          XOR EAX,EAX
  004BD0FD   .  5A            POP EDX
  004BD0FE   .  59            POP ECX
  004BD0FF   .  59            POP ECX
  004BD100   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
  004BD103   .  EB 36         JMP SHORT flv.004BD13B
  004BD105   .^ E9 9668F4FF   JMP flv.004039A0
  004BD10A   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD10D   .  E8 566DFCFF   CALL flv.00483E68
  004BD112   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004BD115   .  E8 12FDFFFF   CALL flv.004BCE2C
  004BD11A   .  E8 E96BF4FF   CALL flv.00403D08
  004BD11F   .  EB 1A         JMP SHORT flv.004BD13B
  004BD121   >  6A 40         PUSH 40                                  ;  下面就是注册失败的提示了
  004BD123   .  68 4CD24B00   PUSH flv.004BD24C                        ;  Register
  004BD128   .  68 58D24B00   PUSH flv.004BD258                        ;  注册码错误,请重新输入用户名和注册码!
  
  
  
  
  --------------------------------------------注册的算法步骤-------------------------------------------
  
  
  1.将用户名转换为16进制的字符串。
  2.将16进制的字符串再逆序一次,即原来是123的变成321了。
  3.将固定字符串flv67u986e先截前4位即flv6,再从第5位截到第8位,又截了5位数字即7u986。
  4.将逆序后的字符串截2次,第一次从第1到第4位,第二次从第5位到第8位。(注:从第5位是包括第5位在内的) 
  5.将上面的4部分连接并加上横杠连成注册码。
   其中flv6为第一部分,逆序后的前4位为第二部分,7u986为第三部分(第二三部分之间不要横杠),第5到第8位的
   就是第四部分了。
  
  说明:
   1.对固定字符串flv67u986e的处理纯属多此一举,只是在拢乱视线而已。
    写算号器时就不必再按他的步骤截固定的字符串了。
    真要照此程序那么做了,跟傻子有何区别。
    编程是要会变通的,有一定技巧性。
   2.用户名不支持中文名。。。中文名也能追出注册码,但有问题。可自己追一下。
  
  
  -------------------------------------------C#算号器源码---------------------------------------------
  
  
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  
  namespace KeyGenMaker
  {
      public partial class Form1 : Form, System.IFormatProvider
      {
          public Form1()
          {
              InitializeComponent();
          }
          #region IFormatProvider 成员
  
          public object GetFormat(Type formatType)
          {
              throw new Exception("The method or operation is not implemented.");
          }
  
          #endregion
  
          private void keymakeit_Click(object sender, EventArgs e)
          {
              try
              {
  
                  string hexall = "";//声明一个全局变量存储转换为16进制后的字符串
                  string str = txt_string.Text.Trim();//从界面中获取用户名
                  for (int i = 0; i < str.Length; i++)//此for循环将用户名转换为16进制
                  {
                      char b = (char)str[i];
                      int t = (int)b;
                      hexall += Convert.ToString(t, 16).ToString();//将ascii码转换为16进制
  
                  }
                  int j = hexall.Length;//获取转换成16进制的字符串的长度
                  string hou = "";//声明一个变量
                  while (j > 0)//此while循环将上面的字符串逆序
                  {
                      hou += hexall[j - 1].ToString();//累加逆序后的字符串
                      j--;
                  }
                  //重新声明一个变量接收逆序后的字符串,并将其转换为大写格式。自己在追码时想一下为什么?
                  string dao = hou.ToString().ToUpper();
                  string one = "flv6-";//注册码第一部分
                  string two = dao.Substring(0, 4);//截取前4位
                  string three = "7u986-";//注册码第三部分
                  string four = dao.Substring(4, 4);//从第5位开始截4位则截到第8位
                  txt_ok.Text = one + two + three + four;//将注册码的各部分串起来并赋值给界面中的注册码框
  
              }
              catch
              {
                  MessageBox.Show("注意检查输入的格式,不支持中文用户名", "提示:");
              }
          }
  
          private void about_Click(object sender, EventArgs e)
          {
              about a = new about();
              a.Show();
          }
  
      }
  }
  
  
  
  
  ----------------------------------------------就到这里吧----------------------------------------------
  
  
--------------------------------------------------------------------------------
【总结】
  有些call不必跟进,F8过后注意看寄存器和堆栈就知道他的作用了。
  在进行算法分析时,要有一定的预见性。有些循环也不必进。
  可先用黑吧专用破解计算器计算一下用户名,看其ascii码和16进制格式的内容和你追的时候的某些数据是否相同。
  相同的话,呵呵。。。速度会加快一些的哦。。。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创自冰河之刃, 转载请注明作者并保持文章的完整, 谢谢!
---------------------------------------------------
PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 09:00
  • 签到天数: 647 天

    [LV.9]以坛为家II

    发表于 2010-3-15 08:27:24 | 显示全部楼层
    这个软件的注册码很好找!但是他有暗撞!注册之后只是标题变了而已!
    功能仍然有限制的
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 09:00
  • 签到天数: 647 天

    [LV.9]以坛为家II

    发表于 2010-3-15 08:30:07 | 显示全部楼层
    阁下的算号器在那???
    我不是白购买了么!!!
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2010-3-31 20:16:51 | 显示全部楼层
    你用vs2005自己把这份源码编译一下就OK了。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表