crackvip 发表于 2015-8-11 17:10:34

对某软件注册算法分析后的多种编程语言注册机研究

本帖最后由 crackvip 于 2015-8-11 18:18 编辑

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
请点击目录进入相应的代码

====================================

ASM-------汇编语言(Assembly Language),这个相信大家都熟悉。。
AUTOIT----AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting
BAT-------批处理文件,在MS-DOS中,bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。
C#--------C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
C语言-----C语言是一种计算机程序设计语言,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活。
Delphi----Delphi是著名的Borland(现在已和Inprise合并)公司开发的可视化软件开发工具。“真正的程序员用c,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。
EXCEL版---Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
E语言-----易语言是一门计算机程序设计语言,也通常代指与之对应的集成开发环境,其特点是通过汉语进行编程。
MFC-------mfc是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。
PB--------PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。
QT--------Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
VB--------Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。
VBS-------VBS的全称是:Microsoft Visual Basic Script Editon。(微软公司可视化BASIC脚本版)。VBS是基于Visual Basic的脚本语言。
Win32-----Win32 Application,Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。
Python--------Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
飘云阁注册机生成器----界个就要看这里https://www.chinapyg.com/thread-70039-1-1.html


欢迎加分,加威望,以资鼓励,共同进步~~
所有源码及编译好的程序下载地址
**** Hidden Message *****

【破文标题】译友翻译环境-算法简单分析
【破文作者】CrackVip
【软件名称】译友翻译环境
【原版下载】http://www.crsky.com/soft/1560.html
------------------------------------------------------------------------
【破解过程】OD载入,查关键字
有这么几处


00464426   MOV   EAX, TransPal.004645CC            您输入的授权号不正确!

00464528   MOV   EAX, TransPal.004645CC            您输入的授权号不正确!

找到段首

00464358/.55            PUSH    EBP                              ;段首
00464359|.8BEC          MOV   EBP, ESP
0046435B|.B9 0A000000   MOV   ECX, 0xA
00464360|>6A 00         /PUSH    0x0
00464362|.6A 00         |PUSH    0x0
00464364|.49            |DEC   ECX
00464365|.^ 75 F9         \JNZ   SHORT TransPal.00464360
00464367|.53            PUSH    EBX
00464368|.8955 EC       MOV   DWORD PTR SS:[EBP-0x14], EDX
0046436B|.8945 FC       MOV   DWORD PTR SS:[EBP-0x4], EAX
0046436E|.33C0          XOR   EAX, EAX
00464370|.55            PUSH    EBP
00464371|.68 AC454600   PUSH    TransPal.004645AC
00464376|.64:FF30       PUSH    DWORD PTR FS:[EAX]
00464379|.64:8920       MOV   DWORD PTR FS:[EAX], ESP
0046437C|.8D55 E4       LEA   EDX, DWORD PTR SS:[EBP-0x1C]
0046437F|.8B45 FC       MOV   EAX, DWORD PTR SS:[EBP-0x4]
00464382|.8B80 D8020000 MOV   EAX, DWORD PTR DS:[EAX+0x2D8]
00464388|.E8 F771FCFF   CALL    TransPal.0042B584                ;取到假码
0046438D|.8B45 E4       MOV   EAX, DWORD PTR SS:[EBP-0x1C]   ;假码到EAX
00464390|.8D55 E8       LEA   EDX, DWORD PTR SS:[EBP-0x18]
00464393|.E8 CC3AFAFF   CALL    TransPal.00407E64
00464398|.837D E8 00    CMP   DWORD PTR SS:[EBP-0x18], 0x0   ;长度判断
0046439C|.0F84 98010000 JE      TransPal.0046453A
004643A2|.8D45 F4       LEA   EAX, DWORD PTR SS:[EBP-0xC]
004643A5|.BA C0454600   MOV   EDX, TransPal.004645C0         ;100
004643AA|.E8 21F7F9FF   CALL    TransPal.00403AD0
004643AF|.C745 F0 01000>MOV   DWORD PTR SS:[EBP-0x10], 0x1   ;计数器?
004643B6|>8D4D E0       /LEA   ECX, DWORD PTR SS:[EBP-0x20]
004643B9|.8B55 F0       |MOV   EDX, DWORD PTR SS:[EBP-0x10]
004643BC|.03D2          |ADD   EDX, EDX                        ;1,2
004643BE|.8D1492      |LEA   EDX, DWORD PTR DS:[EDX+EDX*4]   ;此时EDX=10,0xA
004643C1|.A1 C8084700   |MOV   EAX, DWORD PTR DS:    ;机器码地址
004643C6|.E8 01A2FFFF   |CALL    TransPal.0045E5CC               ;这个好长啊
004643CB|.8B45 E0       |MOV   EAX, DWORD PTR SS:[EBP-0x20]
004643CE|.50            |PUSH    EAX
004643CF|.8D55 D8       |LEA   EDX, DWORD PTR SS:[EBP-0x28]
004643D2|.8B45 FC       |MOV   EAX, DWORD PTR SS:[EBP-0x4]
004643D5|.8B80 D8020000 |MOV   EAX, DWORD PTR DS:[EAX+0x2D8]
004643DB|.E8 A471FCFF   |CALL    TransPal.0042B584               ;取到假码
004643E0|.8B45 D8       |MOV   EAX, DWORD PTR SS:[EBP-0x28]
004643E3|.8D55 DC       |LEA   EDX, DWORD PTR SS:[EBP-0x24]
004643E6|.E8 793AFAFF   |CALL    TransPal.00407E64
004643EB|.8B55 DC       |MOV   EDX, DWORD PTR SS:[EBP-0x24]
004643EE|.58            |POP   EAX
004643EF|.E8 D4F9F9FF   |CALL    TransPal.00403DC8
004643F4|.75 18         |JNZ   SHORT TransPal.0046440E
004643F6|.8D55 D4       |LEA   EDX, DWORD PTR SS:[EBP-0x2C]
004643F9|.8B45 F0       |MOV   EAX, DWORD PTR SS:[EBP-0x10]
004643FC|.E8 E33BFAFF   |CALL    TransPal.00407FE4
00464401|.8B45 D4       |MOV   EAX, DWORD PTR SS:[EBP-0x2C]
00464404|.8D55 F4       |LEA   EDX, DWORD PTR SS:[EBP-0xC]
00464407|.E8 583AFAFF   |CALL    TransPal.00407E64
0046440C|.EB 09         |JMP   SHORT TransPal.00464417
0046440E|>FF45 F0       |INC   DWORD PTR SS:[EBP-0x10]
00464411|.837D F0 03    |CMP   DWORD PTR SS:[EBP-0x10], 0x3    ;三次?
00464415|.^ 75 9F         \JNZ   SHORT TransPal.004643B6
00464417|>8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0046441A|.BA C0454600   MOV   EDX, TransPal.004645C0         ;100
0046441F|.E8 A4F9F9FF   CALL    TransPal.00403DC8
00464424|.75 0F         JNZ   SHORT TransPal.00464435
00464426|.B8 CC454600   MOV   EAX, TransPal.004645CC         ;您输入的授权号不正确!
0046442B|.E8 C4B3FEFF   CALL    TransPal.0044F7F4
00464430|.E9 05010000   JMP   TransPal.0046453A
00464435|>B9 EC454600   MOV   ECX, TransPal.004645EC         ;transpal10
0046443A|.B2 01         MOV   DL, 0x1
0046443C|.A1 A8154600   MOV   EAX, DWORD PTR DS:
00464441|.E8 BEE1FFFF   CALL    TransPal.00462604
00464446|.8945 F8       MOV   DWORD PTR SS:[EBP-0x8], EAX
00464449|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0046444C|.E8 FF3BFAFF   CALL    TransPal.00408050
00464451|.8BD0          MOV   EDX, EAX
00464453|.03D2          ADD   EDX, EDX
00464455|.8D1492      LEA   EDX, DWORD PTR DS:[EDX+EDX*4]
00464458|.8D4D D0       LEA   ECX, DWORD PTR SS:[EBP-0x30]
0046445B|.A1 C8084700   MOV   EAX, DWORD PTR DS:
00464460|.E8 67A1FFFF   CALL    TransPal.0045E5CC
00464465|.8B45 D0       MOV   EAX, DWORD PTR SS:[EBP-0x30]
00464468|.50            PUSH    EAX
00464469|.8D55 C8       LEA   EDX, DWORD PTR SS:[EBP-0x38]
0046446C|.8B45 FC       MOV   EAX, DWORD PTR SS:[EBP-0x4]
0046446F|.8B80 D8020000 MOV   EAX, DWORD PTR DS:[EAX+0x2D8]
00464475|.E8 0A71FCFF   CALL    TransPal.0042B584
0046447A|.8B45 C8       MOV   EAX, DWORD PTR SS:[EBP-0x38]
0046447D|.8D55 CC       LEA   EDX, DWORD PTR SS:[EBP-0x34]
00464480|.E8 DF39FAFF   CALL    TransPal.00407E64
00464485|.8B55 CC       MOV   EDX, DWORD PTR SS:[EBP-0x34]
00464488|.58            POP   EAX
00464489|.E8 3AF9F9FF   CALL    TransPal.00403DC8
0046448E|.0F85 94000000 JNZ   TransPal.00464528
00464494|.C745 F0 01000>MOV   DWORD PTR SS:[EBP-0x10], 0x1
0046449B|>6A 00         /PUSH    0x0
0046449D|.8D55 C0       |LEA   EDX, DWORD PTR SS:[EBP-0x40]
004644A0|.8B45 F0       |MOV   EAX, DWORD PTR SS:[EBP-0x10]
004644A3|.E8 3C3BFAFF   |CALL    TransPal.00407FE4
004644A8|.8B4D C0       |MOV   ECX, DWORD PTR SS:[EBP-0x40]
004644AB|.8D45 C4       |LEA   EAX, DWORD PTR SS:[EBP-0x3C]
004644AE|.BA 00464600   |MOV   EDX, TransPal.00464600          ;func
004644B3|.E8 4CF8F9FF   |CALL    TransPal.00403D04
004644B8|.8B4D C4       |MOV   ECX, DWORD PTR SS:[EBP-0x3C]
004644BB|.BA 10464600   |MOV   EDX, TransPal.00464610          ;addins
004644C0|.8B45 F8       |MOV   EAX, DWORD PTR SS:[EBP-0x8]
004644C3|.8B18          |MOV   EBX, DWORD PTR DS:[EAX]
004644C5|.FF53 04       |CALL    NEAR DWORD PTR DS:[EBX+0x4]
004644C8|.FF45 F0       |INC   DWORD PTR SS:[EBP-0x10]
004644CB|.837D F0 03    |CMP   DWORD PTR SS:[EBP-0x10], 0x3
004644CF|.^ 75 CA         \JNZ   SHORT TransPal.0046449B
004644D1|.8D55 B8       LEA   EDX, DWORD PTR SS:[EBP-0x48]
004644D4|.8B45 FC       MOV   EAX, DWORD PTR SS:[EBP-0x4]
004644D7|.8B80 D8020000 MOV   EAX, DWORD PTR DS:[EAX+0x2D8]
004644DD|.E8 A270FCFF   CALL    TransPal.0042B584
004644E2|.8B45 B8       MOV   EAX, DWORD PTR SS:[EBP-0x48]
004644E5|.8D55 BC       LEA   EDX, DWORD PTR SS:[EBP-0x44]
004644E8|.E8 7739FAFF   CALL    TransPal.00407E64
004644ED|.8B45 BC       MOV   EAX, DWORD PTR SS:[EBP-0x44]
004644F0|.50            PUSH    EAX
004644F1|.8D55 B0       LEA   EDX, DWORD PTR SS:[EBP-0x50]
004644F4|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
004644F7|.E8 6839FAFF   CALL    TransPal.00407E64
004644FC|.8B4D B0       MOV   ECX, DWORD PTR SS:[EBP-0x50]
004644FF|.8D45 B4       LEA   EAX, DWORD PTR SS:[EBP-0x4C]
00464502|.BA 00464600   MOV   EDX, TransPal.00464600         ;func
00464507|.E8 F8F7F9FF   CALL    TransPal.00403D04
0046450C|.8B4D B4       MOV   ECX, DWORD PTR SS:[EBP-0x4C]
0046450F|.BA 10464600   MOV   EDX, TransPal.00464610         ;addins
00464514|.8B45 F8       MOV   EAX, DWORD PTR SS:[EBP-0x8]
00464517|.8B18          MOV   EBX, DWORD PTR DS:[EAX]
00464519|.FF53 04       CALL    NEAR DWORD PTR DS:[EBX+0x4]
0046451C|.B8 20464600   MOV   EAX, TransPal.00464620         ;注册完成!
00464521|.E8 CEB2FEFF   CALL    TransPal.0044F7F4
00464526|.EB 0A         JMP   SHORT TransPal.00464532
00464528|>B8 CC454600   MOV   EAX, TransPal.004645CC         ;您输入的授权号不正确!
0046452D|.E8 C2B2FEFF   CALL    TransPal.0044F7F4
00464532|>8B45 F8       MOV   EAX, DWORD PTR SS:[EBP-0x8]
00464535|.E8 76E8F9FF   CALL    TransPal.00402DB0
0046453A|>33C0          XOR   EAX, EAX

===============
跟进004643C6|.E8 01A2FFFF   |CALL    TransPal.0045E5CC               ;

0045E5CC/$55            PUSH    EBP
0045E5CD|.8BEC          MOV   EBP, ESP
0045E5CF|.6A 00         PUSH    0x0
0045E5D1|.6A 00         PUSH    0x0
0045E5D3|.6A 00         PUSH    0x0
0045E5D5|.6A 00         PUSH    0x0
0045E5D7|.6A 00         PUSH    0x0
0045E5D9|.6A 00         PUSH    0x0
0045E5DB|.6A 00         PUSH    0x0
0045E5DD|.53            PUSH    EBX
0045E5DE|.894D F4       MOV   DWORD PTR SS:[EBP-0xC], ECX
0045E5E1|.8955 F8       MOV   DWORD PTR SS:[EBP-0x8], EDX
0045E5E4|.8945 FC       MOV   DWORD PTR SS:[EBP-0x4], EAX
0045E5E7|.8B45 FC       MOV   EAX, DWORD PTR SS:[EBP-0x4]
0045E5EA|.E8 7D58FAFF   CALL    TransPal.00403E6C
0045E5EF|.33C0          XOR   EAX, EAX
0045E5F1|.55            PUSH    EBP
0045E5F2|.68 BCE64500   PUSH    TransPal.0045E6BC
0045E5F7|.64:FF30       PUSH    DWORD PTR FS:[EAX]
0045E5FA|.64:8920       MOV   DWORD PTR FS:[EAX], ESP
0045E5FD|.8D45 E4       LEA   EAX, DWORD PTR SS:[EBP-0x1C]
0045E600|.8B4D FC       MOV   ECX, DWORD PTR SS:[EBP-0x4]
0045E603|.BA D0E64500   MOV   EDX, TransPal.0045E6D0         ;$
0045E608|.E8 F756FAFF   CALL    TransPal.00403D04
0045E60D|.8B45 E4       MOV   EAX, DWORD PTR SS:[EBP-0x1C]   ;这种一般是DELPHI程序
0045E610|.E8 3B9AFAFF   CALL    TransPal.00408050                ;转16进制数据
0045E615|.2B45 F8       SUB   EAX, DWORD PTR SS:[EBP-0x8]      ;减掉A
0045E618|.8D4D E8       LEA   ECX, DWORD PTR SS:[EBP-0x18]
0045E61B|.BA 08000000   MOV   EDX, 0x8                         ;8位
0045E620|.E8 EF99FAFF   CALL    TransPal.00408014                ;格式化输出
0045E625|.8B45 E8       MOV   EAX, DWORD PTR SS:[EBP-0x18]
0045E628|.8D55 EC       LEA   EDX, DWORD PTR SS:[EBP-0x14]   ;减掉A
0045E62B|.E8 78FEFFFF   CALL    TransPal.0045E4A8                ;返转了?两边向中间取,合并的
0045E630|.8B4D EC       MOV   ECX, DWORD PTR SS:[EBP-0x14]   ;    (ASCII "9DC00CF0")
0045E633|.8D45 F0       LEA   EAX, DWORD PTR SS:[EBP-0x10]
0045E636|.BA D0E64500   MOV   EDX, TransPal.0045E6D0         ;$
0045E63B|.E8 C456FAFF   CALL    TransPal.00403D04                ;加上符号
0045E640|.8B45 F0       MOV   EAX, DWORD PTR SS:[EBP-0x10]
0045E643|.E8 089AFAFF   CALL    TransPal.00408050                ;放到EAX
0045E648|.8B55 F4       MOV   EDX, DWORD PTR SS:[EBP-0xC]
0045E64B|.E8 9499FAFF   CALL    TransPal.00407FE4
0045E650|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E653|.8B00          MOV   EAX, DWORD PTR DS:[EAX]
0045E655|.8038 2D       CMP   BYTE PTR DS:[EAX], 0x2D
0045E658|.75 18         JNZ   SHORT TransPal.0045E672          ;判断是否为负数???
0045E65A|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E65D|.50            PUSH    EAX
0045E65E|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E661|.8B00          MOV   EAX, DWORD PTR DS:[EAX]
0045E663|.B9 64000000   MOV   ECX, 0x64
0045E668|.BA 02000000   MOV   EDX, 0x2
0045E66D|.E8 4E58FAFF   CALL    TransPal.00403EC0                ;变成正数?
0045E672|>8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E675|.8B00          MOV   EAX, DWORD PTR DS:[EAX]
0045E677|.E8 3C56FAFF   CALL    TransPal.00403CB8
0045E67C|.83F8 08       CMP   EAX, 0x8                         ;判断长度位数是不是小于8位
0045E67F|.7E 18         JLE   SHORT TransPal.0045E699
0045E681|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E684|.50            PUSH    EAX
0045E685|.8B45 F4       MOV   EAX, DWORD PTR SS:[EBP-0xC]
0045E688|.8B00          MOV   EAX, DWORD PTR DS:[EAX]
0045E68A|.B9 08000000   MOV   ECX, 0x8
0045E68F|.BA 01000000   MOV   EDX, 0x1
0045E694|.E8 2758FAFF   CALL    TransPal.00403EC0                ;取1到8位
0045E699|>33C0          XOR   EAX, EAX
0045E69B|.5A            POP   EDX
0045E69C|.59            POP   ECX
0045E69D|.59            POP   ECX
0045E69E|.64:8910       MOV   DWORD PTR FS:[EAX], EDX
0045E6A1|.68 C3E64500   PUSH    TransPal.0045E6C3
0045E6A6|>8D45 E4       LEA   EAX, DWORD PTR SS:[EBP-0x1C]
0045E6A9|.BA 04000000   MOV   EDX, 0x4
0045E6AE|.E8 A953FAFF   CALL    TransPal.00403A5C
0045E6B3|.8D45 FC       LEA   EAX, DWORD PTR SS:[EBP-0x4]

=============
------------------------------------------------------------------------
【破解总结】算法总结

1.两个版本,标准版为1,专业版为2
2.计算得到的数字是*10,也就是标准版是机器码-1*10,专业版是机器码-2*10
3.得到的结果转字符,然后从两边往中间取,组成新字串,再转回16进制
4.将3得到的结果转10进制取绝对值
5.将得到的结果只取8位为注册码

------------------------------------------------------------------------
【版权声明】

本文原创于CrackVip, 转载请注明作者并保持文章的完整, 谢谢!


                                                       2015年08月10日 22:52:48



ASM核心代码
.386
.model flat, stdcall;32 bit memory model
option casemap :none;case sensitive

include CrackVip_keygen.inc

.code

;;这是一个字符转16进制到寄存器的函数
StrToHex proc uses esi edi ebx lpszStr,iStrLen
    xor esi,esi
    xor edx,edx
    xor ebx,ebx
    mov edi,iStrLen
@@:
    mov eax,lpszStr
    movzx eax,BYTE ptr
    test al,al
    jz @f
    .if ((al >= 'A') && (al <= 'F')) || ((al >= 'a') && (al <= 'f'))
      sub al,'W'
      adc dl,dl
      shl dl,5
      add al,dl
      jmp Next
    .elseif ((al >= '0') && (al <= '9'))
      sub al,'0'
Next:lea ecx,
      and eax,0fh
      shl ecx,2
      shl eax,cl
      add ebx,eax
      dec edi
      inc esi
      jmp @b
    .else
      xor eax,eax
      ret
    .endif
@@:
    mov eax,ebx
    ret
StrToHex endp


start:

      invoke GetModuleHandle,NULL
      mov      hInstance,eax

    invoke InitCommonControls
      invoke DialogBoxParam,hInstance,MAIN_DIALOG,NULL,addr DlgProc,NULL
      invoke ExitProcess,0

;########################################################################
AboutProc proc hAWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
      
      mov      eax,uMsg
      .if eax == WM_INITDIALOG
                invoke LoadIcon,hInstance,ICON_MAIN
                invoke SendMessage, hAWin, WM_SETICON, ICON_SMALL, eax
      .elseif eax == WM_COMMAND
                mov eax,wParam
                .if eax == IDC_OK
                        invoke EndDialog,hAWin,0
                .endif      
      .elseif eax == WM_CLOSE
      invoke EndDialog,hAWin,NULL
      .else
                mov                eax,FALSE
                ret
      .endif
      mov                eax,TRUE
      ret

AboutProc endp
;########################################################################

DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL Crackvip:byte
                mov      eax,uMsg
                .if eax == WM_INITDIALOG
                        invoke LoadIcon,hInstance,ICON_MAIN
                        invoke SendMessage, hWin, WM_SETICON, ICON_SMALL, eax
                        invoke SetDlgItemText,hWin,IDC_NAME,addr CrackVipSn
                        invoke SendDlgItemMessage,hWin, IDC_RBN2, BM_SETCHECK, 1, 0
                        pop edi
                .elseif eax == WM_COMMAND
                        mov eax,wParam
                        .if eax == IDC_GEN
                                 invoke GetDlgItemText,hWin,IDC_NAME, addr username, 255
                                 .if eax == 0
                                       invoke SetDlgItemText,hWin,IDC_SN,addr error
                                       ret
                                 .endif
;########################################################################
;Add your code at here:
                invoke StrToHex,addr username,8
                MOV EBX,EAX
                        invoke SendDlgItemMessage,hWin, IDC_RBN2, BM_GETCHECK, 0, 0
                        .if eax == 0
;                                 invoke SetDlgItemText,hWin,IDC_SN,addr msg
;                              ret
                                       mov EAX,10
                        .else
                              mov EAX,20

                        .endif
                        SUB EBX,EAX ;减去相应的数
                        
;把得到的数进行位置变换,两边往中间取,组成新的数据               
MOV EDX,EBX
xor esi,esi
xor eax,eax
xor ebx,ebx
mov edi,4
Crack:
mov eax,edx
lea ecx,
shl ecx,2
shr eax,cl
and eax,0fh
lea ecx,
shl ecx,2
shl eax,cl
add ebx,eax
mov eax,edx
shr eax,10h
lea ecx,
shl ecx,2
shr eax,cl
and eax,0fh
lea ecx,
shl ecx,2
shl eax,cl
add ebx,eax


dec edi
inc esi
test edi,edi
jne Crack
test ebx,80000000h
jz Vip
neg ebx
Vip:

;########################################################################
                              ;invoke wsprintf,addr serial,addr szFormat,ebx
                              invoke wsprintf,addr Crackvip,addr szFormat,ebx
;截取长度为8位                              
LEA esi,Crackvip
LEA edi,serial
MOV ecx,8h
CLD
REP MOVSB                              
                              invoke SetDlgItemText,hWin,IDC_SN,addr serial
                        .elseif eax == IDC_ABOUT
                        invoke CreateDialogParam,hInstance,DLG_ABOUT,hWin,addr AboutProc,FALSE
                              
;                        .elseif eax == IDC_EXIT
;                              invoke    EndDialog,hWin,NULL
                        .endif
                        
                .elseif eax == WM_CLOSE
                        invoke EndDialog,hWin,0
                .else
                        mov                eax,FALSE
                        ret
                .endif
      mov                eax,TRUE
      ret

DlgProc endp

end start



AutoIt 语言,这个语言做了两个版本,一个是无界面版,一个是有界面版

无界面版代码
Dim $Code,$A1,$A2,$i,$S1,$S2

$Code = inputbox("CrackVip","请输入您的机器码,长度为8位16进制字符","D0C0F0D3")
    $A1 = Int("0x" & $Code) - 10
    $A2 = int("0x" & $Code) - 20
    $S1 = ""
    $S2 = ""
          For $i = 1 To 4
          $S1 = $S1 & StringMid(Hex($A1), 9 - $i, 1) & StringMid(Hex($A1), $i, 1)
          $S2 = $S2 & StringMid(Hex($A2), 9 - $i, 1) & StringMid(Hex($A2), $i, 1)
      Next
         $S1 = StringMid(Abs(Dec($S1)),1,8)
      $S2 = StringMid(Abs(Dec($S2)),1,8)
MsgBox(0, "CrackVip", "机器码为:"& $Code & @CRLF & "标准版注册码:"& $S1 & @CRLF &"专业版注册码:" &$S2)


有界面版的代码其实也是一样的

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=form1.kxf
$Form1_1 = GUICreate("Form1", 216, 168, -1,-1)
$Radio1 = GUICtrlCreateRadio("标准版", 24, 16, 81, 17)
$Radio2 = GUICtrlCreateRadio("专业版", 128, 16, 73, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Input1 = GUICtrlCreateInput("D0C0F0D3", 72, 48, 121, 21)
$Input2 = GUICtrlCreateInput("CrackVip", 72, 88, 121, 21)
$Label1 = GUICtrlCreateLabel("机器码", 24, 50, 40, 17)
$Label2 = GUICtrlCreateLabel("注册码", 24, 90, 40, 17)
$Button1 = GUICtrlCreateButton("计算", 120, 128, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Func OKButton()
      Dim $Code,$A1,$A2,$i,$S1,$S2,$tempi

    $Code = GUICtrlRead($Input1)
         
         If BitAND(GUICtrlRead($radio1), $GUI_CHECKED) Then
                $tempi=10
      Else
                $tempi=20
               EndIf
    $A1 = Int("0x" & $Code) - $tempi
    ;$A2 = int("0x" & $Code) - 20
    $S1 = ""
   ; $S2 = ""
          For $i = 1 To 4
          $S1 = $S1 & StringMid(Hex($A1), 9 - $i, 1) & StringMid(Hex($A1), $i, 1)
      ;    $S2 = $S2 & StringMid(Hex($A2), 9 - $i, 1) & StringMid(Hex($A2), $i, 1)
      Next
         $S1 = StringMid(Abs(Dec($S1)),1,8)
      GUICtrlSetData ($Input2,$S1)

EndFunc
While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
               Case$Button1
               OKButton()
                Case $GUI_EVENT_CLOSE
                        Exit

      EndSwitch
WEnd




BAT版,其实批处理是非常强大的,有人说不可以用批处理写注册机,我今天就写个给他看看

代码如下
@echo off &color 1f&title 译友翻译环境-Bat版注册机(CrackVip)
setlocal EnableDelayedExpansion
:CrackVip
cls
set /p VIPSn=输入您的机器码(8位16进制数)
set /p CrackVip=请选择要计算的版本(1.标准版;2.专业版;3.退出)
if %CrackVip% equ 1 (
      set /a A1=0x%VIPSn%-10   
) else if %CrackVip% equ 2 (
                        set /a A1=0x%VIPSn%-20
                ) else (goto :eof)
::完成第一步计算

call :vip_16to2
::echo %A1%


:CrackVip2
set "str=%ok%"
for /l %%i in (1,1,4) do (
set "a%%i=!str:~-%%i,1!"

)
for /l %%i in (0,1,3) do (
set "b%%i=!str:~%%i,1!"

)
setc=%a1%%b0%%a2%%b1%%a3%%b2%%a4%%b3%
set /a c=0x%c%
if %c% lss 0 (set /a c=-1*%c%)

if %CrackVip% equ 1 (echo 标准版注册码为:%c:~0,8%) else (echo 专业版注册码为:%c:~0,8%)
echo/&pause
goto :EOF

::十进制转2进制,支持负数_CrackVip
:vip_16to2
if%A1% lss 0 (set /a s=2147483640+%A1%+8 ) else (set s=%A1%)
set str=01
set x=2

:lp
set /a "n=8189,m=0,r=0"
for /l %%a in (1,1,14) do (
   set /a "u=(n+m)/2"
   for %%i in (!u!) do if "!s:~%%i!" equ "" (set /a n=u) else set /a m=u
)
for /l %%i in (0,1,%u%) do (
   rem set/a "n=!s:~%%i,1!+(r*10),r=n&1,n>>=1"
   set/a "n=!s:~%%i,1!+(r*10),r=n%%x,n/=x"
   set v=!v!!n!
)
   set b=!str:~%r%,1!!b!
   if "!v:0=!" neq "" set s=!v!&set "v="&goto lp
   if%A1% lss 0 (set a2="1!b!" ) else (set a2="!b!")
call :2X16 %a2% ok
::echo %ok%
goto :EOF
pause
   
::二进制转十六进制 Crackvip   
:2X16
@echo off&setlocal enabledelayedexpansion
set "str=0123456789ABCDEF"
set k=&set kk=&set xx=&set "x=000%~1"
set x=!x:0= 0!&set x=!x:1= 1!&set /a jj=0,ss=1
for %%a in (!x!) do set "xx=%%a !xx!"
for %%a in (!xx!) do (set /a jj+=%%a*ss,ss=ss*2
if !ss! equ 16 set k=!jj! !k!&set /a jj=0,ss=1)
for %%a in (!k!) do set kk=!kk!!str:~%%a,1!
endlocal&set %~2=%kk%&goto :EOF
C#版,这个C#是在VS2013中编译的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CrackVip
{
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }

      private void button1_Click(object sender, EventArgs e)
      {
            int i,j,A;
            string s1, s2;
            s1 = "";
            s2 = "";
            if (radioButton1.Checked)j=1; else j=2;
            A = Convert.ToInt32("0x" + textBox1.Text, 16) - 10 * j;
            s1 = Convert.ToString(A,16);
            for (i = 1; i <= 4; i++)
            {
                s2 =s2+ s1.Substring(8 - i, 1) + s1.Substring(i-1, 1);
            }
            s2 = Convert.ToString(Math.Abs(Convert.ToInt32("0x" + s2, 16)));
            textBox2.Text = s2.Substring(0,8);
            
      }
    }
}




C语言版,这个是在VC6.0下编译的
#include <stdio.h>

long str16_num10(char *str)
{
         char *p;
         long x = 0;

         for(p = str;*p != '\0';p++)
         {
               x = x*16+ch16toi(*p);
         }
         return x;
}

int ch16toi(char ch)
{
         if(ch >= '0'&&ch <= '9')
         return ch-'0';

         if(ch >= 'a'&&ch <= 'f')
         ch = ch-32;
         return ch-'A'+10;
}
main()
{
      int A1,A2,i,j;
      int A;
      char S={0};
      char S1={0};
      char S2={0};
      printf("请输入注册码:");
      scanf("%X",&A);
      A1=A-10;
      A2=A-20;
    sprintf(S,"%X",A1);


   j=0;
      for (i=0;i<4;i++)
      {
                S1=S;
                S1=S;
      j=j+2;
      }
      j=0;
      sprintf(S,"%X",A2);
             for (i=0;i<4;i++)
      {
                S2=S;
                S2=S;
      j=j+2;
      }

      

    A1= abs(str16_num10(S1));
      A2= abs(str16_num10(S2));
    sprintf(S1,"%d",A1);
      sprintf(S2,"%d",A2);
    S1='\0';
      S2='\0';
      printf("机器码为:%X\n标准版注册码:%s\n专业版注册码:%s\n",A,S1,S2);
}



Delphi 版 所用版本为delphi 7.0

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    btn1: TButton;
    rb1: TRadioButton;
    rb2: TRadioButton;
    procedure btn1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var j, k: integer;
S1, S2: string;
begin
if rb1.Checked then j := 1 else j := 2;
S1 := Format('%.8X', );
S2 := '';
for k := 1 to (Length(s1) div 2) do
begin
    S2 := S2 + Copy(S1, 9 - k, 1) + Copy(S1, k, 1);
end;
edt2.Text := Copy(Format('%.8d', ), 1, 8);

end;

end.




Excel版,excel其实是一个非常强大的办公软件,虽然只更适用于表格,财务,数字等,但他同样是可以用来编程和开发软件的启动时请将宏安全设置到最低
(PS:ALT+F11打开代码编辑窗口)
Sub keyGen_CrackVip()
    A1 = Val("&H" & Range("D3").Value) - 10
    A2 = Val("&H" & Range("D3").Value) - 20
    S1 = ""
    S2 = ""
    For i = 1 To 4
      S1 = S1 & Mid(Hex(A1), 9 - i, 1) & Mid(Hex(A1), i, 1)
      S2 = S2 & Mid(Hex(A2), 9 - i, 1) & Mid(Hex(A2), i, 1)
    Next i
    S1 = Mid(Abs(Val("&H" & S1)), 1, 8)
    S2 = Mid(Abs(Val("&H" & S2)), 1, 8)
    Range("D4").Value = S1
    Range("D5").Value = S2
End Sub



E语言文件,这个就不多说了,相信你比我更懂
.版本 2

.子程序 _按钮1_被单击
.局部变量 版本, 整数型
.局部变量 临时变量, 整数型
.局部变量 字符串1, 文本型
.局部变量 字符串2, 文本型

.如果 (单选框1.选中)
    版本 = 1
.否则
    版本 = 2
.如果结束
字符串1 = 取十六进制文本 (十六进制转十进制 (编辑框1.内容) - 版本 × 10)
字符串2 = “”
.计次循环首 (4, 临时变量)
    字符串2 = 字符串2 + 取文本中间 (字符串1, 9 - 临时变量, 1) + 取文本中间 (字符串1, 临时变量, 1)
.计次循环尾 ()
编辑框2.内容 = 取文本左边 (到文本 (取绝对值 (十六进制转十进制 (字符串2))), 8)



.子程序 十六进制转十进制, 整数型
.参数 十六进制, 文本型
.局部变量 i, 整数型
.局部变量 十进制, 整数型

.计次循环首 (取文本长度 (十六进制), i)
    十进制 = 十进制 × 16 + 寻找文本 (“0123456789ABCDEF”, 取文本中间 (到大写 (十六进制), i, 1), , 假) - 1
.计次循环尾 ()
返回 (十进制)
纯图片代码

=====================================



MFC版
核心代码
void CMFC_CrackVipDlg::OnOK()
{
      // TODO: Add extra validation here
      int i,j,k,A;
                        char szOut={0};
                        charszInpt={0};
                        GetDlgItemText( IDC_EDIT1,szInpt,sizeof(szInpt));
                        if(SendDlgItemMessage( IDC_RADIO1, BM_GETCHECK, 0, 0)) j=1; else j=2;
                        j=j*10;         
                  A=str16_num10(szInpt)-j;
                        sprintf(szInpt,"%X",A);
                        k=0;                        
                        for (i=0;i<4;i++)
                        {
                              szOut=szInpt;
                              szOut=szInpt;
                              k=k+2;
                        }
                  A=abs(str16_num10(szOut));
                        sprintf(szOut,"%d",A);
                        szOut='\0';
               SetDlgItemText( IDC_EDIT2,szOut);
      //CDialog::OnOK();
}



PB -PowerBuilder美国Sybase公司研制的一种新型、快速开发工具
这里用的是pb9.0开发

核心代码如下,其中还有两个自写的转换函数,请自行打开PB源文件进行查看
integer i,tempi
string S1,S2
if rb_1.checked then tempi=10 else tempi=20
S1=inttohex(HextoInt(sle_1.Text)- tempi)
S2 = ""
      For i = 1 To 4
          S2 = S2 + Mid(S1, 9 - i, 1) + Mid(S1, i, 1)
      Next
S2=Left(string(Abs(HextoInt(S2))),8)
sle_2.Text = S2pb生成的EXE是要带上三个库文件才可以运行的



Qt 版,QT5.5+MSVS2013_X86+win7_X64平台编译
Qt是一种跨平台的语言,好像是NOKIA公司的,支持多种平台
它的代码同样很简单,但它有一个特色,可以直接用html语言来做一些样式
QString VipCode = ui.lineEdit->text();
      bool ok;
    uint VipA = VipCode.toUInt(&ok, 16); //十六字符10进制,字符转整数
      if (ui.radioButton->isChecked())         
                VipA = VipA - 10; else VipA = VipA - 20;
      QString S = QString::number(VipA, 16).toUpper();
      QString VipS1="";
      int i;
      for (i = 0; i < 4;i++)
      {
                VipS1 = VipS1+ S.mid(7-i, 1)+ S.mid(i, 1);
      }
      int VipA1 =VipS1.toUInt(&ok, 16);
      VipS1 = QString::number(qAbs(VipA1), 10).mid(0, 8);
         
      ui.lineEdit_2->setText(QApplication::translate("QT_KEYGENClass", VipS1.toLocal8Bit(), 0));

//      QMessageBox::about(NULL, QString::fromLocal8Bit("ddd"), S + "\n" + VipS1 + "\n" + QString::number(VipA1) + "\n" + QString::number(VipA));
}不过。它生成的EXE同样是要库文件的支持



VB语言版,这个就不多说了,代码也非常简单
Private Sub Command1_Click()
    A1 = Val("&H" & Text1.Text) - 10
    A2 = Val("&H" & Text1.Text) - 20
    S1 = ""
    S2 = ""
    For i = 1 To 4
      S1 = S1 & Mid(Hex(A1), 9 - i, 1) & Mid(Hex(A1), i, 1)
      S2 = S2 & Mid(Hex(A2), 9 - i, 1) & Mid(Hex(A2), i, 1)
    Next i
    S1 = Mid(Abs(Val("&H" & S1)), 1, 8)
    S2 = Mid(Abs(Val("&H" & S2)), 1, 8)
    Text2.Text = S1
    Text3.Text = S2
End Sub它同样要VB库来支持,不过,现在的电脑基本上都有,不用另行下载。。。



VB.net版,其实这个是Vb的延伸,具有Vb的特点,便也有些不太一样
这里用的是VS2013编译
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim i, A1, A2 As Integer
      Dim S1, S2 As String


      A1 = Val("&H" & TextBox1.Text) - 10
      A2 = Val("&H" & TextBox1.Text) - 20
      S1 = ""
      S2 = ""
      For i = 1 To 4
            S1 = S1 & Mid(Hex(A1), 9 - i, 1) & Mid(Hex(A1), i, 1)
            S2 = S2 & Mid(Hex(A2), 9 - i, 1) & Mid(Hex(A2), i, 1)
      Next i
      S1 = Mid(Math.Abs(Val("&H" & S1)), 1, 8)
      S2 = Mid(Math.Abs(Val("&H" & S2)), 1, 8)
      TextBox2.Text = S1
      TextBox3.Text = S2
    End Sub




VBS版,这种脚本语言其实也很强大的
Code=inputbox("请输入您的机器码,长度为8位16进制字符","CrackVip","D0C0F0D3")
    A1 = int("&H" & Code) - 10
    A2 = int("&H" & Code) - 20
    S1 = ""
    S2 = ""
   For i = 1 To 4
         S1 = S1 & Mid(Hex(A1), 9 - i, 1) & Mid(Hex(A1), i, 1)
         S2 = S2 & Mid(Hex(A2), 9 - i, 1) & Mid(Hex(A2), i, 1)
   Next
   S1 = Mid(Abs(int("&H" & S1)), 1, 8)
   S2 = Mid(Abs(int("&H" & S2)), 1, 8)
msgbox "机器码为:"& Code & vbCrLf & "标准版注册码:"& S1 & vbCrLf &"专业版注册码:"&S2,0,"译友翻译环境VBS注册机"


Win32 Application
这种最接尽ASM的结构了,所以编译的程序也是最小的
或者说与ASM文件差不多大小
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
/*
Crackvip
*/

long str16_num10(char *str)
{
         char *p;
         long x = 0;

         for(p = str;*p != '\0';p++)
         {
               x = x*16+ch16toi(*p);
         }
         return x;
}

int ch16toi(char ch)
{
         if(ch >= '0'&&ch <= '9')
         return ch-'0';

         if(ch >= 'a'&&ch <= 'f')
         ch = ch-32;
         return ch-'A'+10;
}


BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
      HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
      HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
                HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
      SetDlgItemText(hwnd,IDC_EDIT1,"D0C0F0D3");
      SendDlgItemMessage(hwnd, IDC_RADIO2, BM_SETCHECK, 1, 0);
    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINTcodeNotify)
{
    switch(id)
    {
      case IDC_OK:
                        {
                        int i,j,k,A;
                        char szOut={0};
                        charszInpt={0};
                        GetDlgItemText(hwnd,IDC_EDIT1,szInpt,sizeof(szInpt));
                        if(SendDlgItemMessage(hwnd, IDC_RADIO1, BM_GETCHECK, 0, 0)) j=1; else j=2;
                        j=j*10;         
                  A=str16_num10(szInpt)-j;
                        sprintf(szInpt,"%X",A);
                        k=0;                        
                        for (i=0;i<4;i++)
                        {
                              szOut=szInpt;
                              szOut=szInpt;
                              k=k+2;
                        }
                  A=abs(str16_num10(szOut));
                        sprintf(szOut,"%d",A);
                        szOut='\0';
               SetDlgItemText(hwnd,IDC_EDIT2,szOut);
                }
      break;
      default:
                break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}这里添加了自动适合主题样式的XML文件,显得没有那么古版



Python


#!/usr/bin/python
import os
os.system("title 译友翻译环境-KeyGen CrackVip")
print ("请输入您的机器码(8位16进制数据,如:D0C0F0D3):")
A=A1=A2=0 #定义变量 CrackVip
Sa=Sb=S1=S2=""
A =int(input().upper(), 16)
Sa="%X" % (A-10)
Sb="%X" % (A-20)
#print("%s" % (Sa))

for i in range(0,4):
    S1=S1+Sa+Sa
    S2=S2+Sb+Sb
A1=int(S1.upper() ,16)
A2=int(S2.upper() ,16)
if A1>0x7fffffff:
    A1= (A1 ^0xffffffff) + 1 #取反加1
if A2>0x7fffffff:
    A2= (A2 ^0xffffffff) + 1 #取反加1
S1="%d" %A1
S2="%d" %A2
print("您输入的注册码为:%X\r\n标准版注册码:%s\r\n专业版注册码:%s" % (A,S1,S2))
input()#让程序暂停一下,否则在PY.EXE中会一闪而过


飘云阁注册机生成器
最后压轴的便是我们的飘云阁注册机生成器生成的文件了,自带音乐

代码插件有问题,传图

var
//公共变量,不要动
strName,strSn,strMachineCode: string;
A1,A2,i:integer;
S1,S2:string;

{----公共函数不要动----}
procedure Init;
begin
strName := edtName.Text;
//strMachineCode := edtMachineCode.Text;
end;

procedure SetSn;
begin
edtSn.Text := strSn;
edtMachineCode.Text:= strMachineCode;
end;
{----公共函数结束----}

{----注册机入口----}
begin
Init;
if length(strName)<>8 then
begin
Showmessage('请输入8位16进制字符');
exit;
end;
begin
    { ------这里开始写算法 }
    A1:=strtoint('$'+strName)-10;
    A2:=strtoint('$'+strName)-20;
    S1:=format('%.8X',);
    S2:=format('%.8X',);
    strSn:='';
    strMachineCode:='';
   
    for i:=1 to 4 do
    begin
      strMachineCode := strMachineCode + Copy(S1, 9 - i, 1) + Copy(S1, i, 1);
      strSn := strSn + Copy(S2, 9 - i, 1) + Copy(S2, i, 1);
    end;
      A1:=trunc(Abs(StrToInt('$' + strMachineCode)));
      A2:=trunc(Abs(StrToInt('$' + strSn)));
      strMachineCode:=Copy(format('%.8d',), 1, 8);
      strSn:=Copy(format('%.8d',), 1, 8);

    SetSn;
end;
end.
{-----------------------}





到此,十几种语言的注册机就全部完成了,如有不对之处,希望大家指正

欢迎加分,加威望,以资鼓励,共同进步~~

欢迎转载,转载请注册出处,飘云阁CrackVip-2015-8-11

所有源码及编译好的程序下载地址

**** Hidden Message *****














crackvip 发表于 2015-8-12 09:06:40

os72 发表于 2015-8-11 21:21
那个目录是怎么实现的?

在你发贴的时候,上面有一个目录标签啊,你按他的格式写代码就可以了



文字1

文字2

lpxx 发表于 2015-8-11 17:13:05

膜拜,这么多语言。

crackvip 发表于 2015-8-11 17:13:52

我的沙发呢。。。{:soso_e109:}

Rooking 发表于 2015-8-11 17:15:04

妹子最近很给力啊 这是何等的辛苦啊

回忆无法挽留 发表于 2015-8-11 17:16:51

膜拜VIP{:soso_e142:}

theend 发表于 2015-8-11 17:18:18

有技术的妹子,最性感,哈哈

llh001 发表于 2015-8-11 17:18:34

膜拜一下,BTW,附件呢?

llh001 发表于 2015-8-11 17:30:43

太强大了,尤其是BAT版!

gxggxy103 发表于 2015-8-11 17:49:13

太强大了

lucky_789 发表于 2015-8-11 17:52:20

果然是太强大了!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 对某软件注册算法分析后的多种编程语言注册机研究