庖丁解牛破解与注册机编写

注册原理:

1. 机器码生成原理:

根据函数得到dwSerial,然后与一个常数0x51627384异或,结果的十六进制表示就是机器码。

	LPTSTR  pVolumeNameBuffer = new TCHAR[256];
	LPTSTR  pFileSystemNameBuffer = new TCHAR[256];
	//GetVolumeInformation "C:\", Vname, 255, Serial, 0, 0, FSName, 255
	DWORD dwSerial = 0;
	BOOL bSuc = GetVolumeInformationA("c:\\", pVolumeNameBuffer, 256, &dwSerial, NULL, NULL,  pFileSystemNameBuffer, 256);
	DWORD dwMac = dwSerial ^ 0x51627384;

2. 注册码生成原理;

无图无真相,先上图


注册码生成方法:

1. 先将机器码平方,算出一个数,将这个数转换成十进制表示(应该是20位左右的一个数字),记为key1

2. 根据CALL 00403F58从key1中提取出一个八位的数字.记为key2。

3.将key2与dwSerial异或一下,转换成十进制数,记为key3.

4.从key3中取八位数字就是最终的机器码。


代码与程序与注册代码与OD的udd文件下载地址http://download.csdn.net/detail/xiaocaiju/7514911


关键代码:

00469ADF   .  E8 30A4F9FF   call    00403F14
00469AE4   .  50            push    eax                              ; |VolumeNameBuffer
00469AE5   .  68 CCA64600   push    0046A6CC                         ; |c:\
00469AEA   .  E8 BDCEF9FF   call    <jmp.&kernel32.GetVolumeInformat>; \(initial cpu selection)
00469AEF   .  A1 D8284700   mov     eax, dword ptr [4728D8]
00469AF4   .  35 84736251   xor     eax, 51627384
00469AF9   .  33D2          xor     edx, edx
00469AFB   .  8945 D0       mov     dword ptr [ebp-30], eax
00469AFE   .  8955 D4       mov     dword ptr [ebp-2C], edx
00469B01   .  FF75 D4       push    dword ptr [ebp-2C]
00469B04   .  FF75 D0       push    dword ptr [ebp-30]
00469B07   .  8D95 64FEFFFF lea     edx, dword ptr [ebp-19C]
00469B0D   .  B8 08000000   mov     eax, 8
00469B12   .  E8 F1EAF9FF   call    00408608                         ;  十六进制转换成字符串,生成机器码
00469B17   .  8B95 64FEFFFF mov     edx, dword ptr [ebp-19C]
00469B1D   .  B8 D0284700   mov     eax, 004728D0
00469B22   .  E8 FD9FF9FF   call    00403B24
00469B27   .  FF75 D4       push    dword ptr [ebp-2C]               ;  0
00469B2A   .  FF75 D0       push    dword ptr [ebp-30]               ;  压入机器码
00469B2D   .  8B45 D0       mov     eax, dword ptr [ebp-30]          ;  eax = [ebp-30],d1769acc
00469B30   .  8B55 D4       mov     edx, dword ptr [ebp-2C]          ;  edx = 0
00469B33   .  E8 C0C7F9FF   call    004062F8                         ;  a^2+b^2;机器码平方
00469B38   .  52            push    edx                              ;  平方的高八位
00469B39   .  50            push    eax                              ;  平方的低八位
00469B3A   .  8D45 DC       lea     eax, dword ptr [ebp-24]
00469B3D   .  E8 92EAF9FF   call    004085D4                         ;  生成一大坨数据,转换成十进制
00469B42   .  8D85 60FEFFFF lea     eax, dword ptr [ebp-1A0]
00469B48   .  50            push    eax
00469B49   .  8B45 DC       mov     eax, dword ptr [ebp-24]
00469B4C   .  E8 FFA1F9FF   call    <GetLength>                      ;  20位的数据
00469B51   .  8BD0          mov     edx, eax
00469B53   .  83EA 08       sub     edx, 8                           ;  edx = 20-8 = 12
00469B56   .  B9 08000000   mov     ecx, 8                           ;  ecx = 8,取的位数
00469B5B   .  8B45 DC       mov     eax, dword ptr [ebp-24]          ;  eax = 数字串
00469B5E   .  E8 F5A3F9FF   call    00403F58                         ;  从生成的数据中取了八位,62011121
00469B63   .  8B85 60FEFFFF mov     eax, dword ptr [ebp-1A0]
00469B69   .  E8 16EBF9FF   call    00408684                         ;  十进制转换成十六进制
00469B6E   .  8945 D0       mov     dword ptr [ebp-30], eax          ;  [ebp-30]=3B236F1
00469B71   .  8955 D4       mov     dword ptr [ebp-2C], edx
00469B74   .  A1 D8284700   mov     eax, dword ptr [4728D8]          ;  eax = 0x8014e948
00469B79   .  33D2          xor     edx, edx
00469B7B   .  3345 D0       xor     eax, dword ptr [ebp-30]          ;  eax 就是注册码
00469B7E   .  3355 D4       xor     edx, dword ptr [ebp-2C]
00469B81   .  8945 D0       mov     dword ptr [ebp-30], eax
00469B84   .  8955 D4       mov     dword ptr [ebp-2C], edx
00469B87   .  8D45 DC       lea     eax, dword ptr [ebp-24]
00469B8A   .  50            push    eax                              ;  eax = pDisk
00469B8B   .  FF75 D4       push    dword ptr [ebp-2C]
00469B8E   .  FF75 D0       push    dword ptr [ebp-30]
00469B91   .  8D85 5CFEFFFF lea     eax, dword ptr [ebp-1A4]
00469B97   .  E8 38EAF9FF   call    004085D4                         ;  转成十进制



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值