keygenme4

这个KEYGENME  有点简单   但是写注册机有点难度  要求写出随机的注册码

大体流程:
00401000 >/$  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL
00401002  |.  68 00304000   push KeygenMe.00403000                   ; |Title = "ItSecurity.ma KeygenMe (RESTRICTED PATCHING)"
00401007  |.  68 2D304000   push KeygenMe.0040302D                   ; |Text = "Itsecurity.ma KeygenME Coded by Souhail Hammou ..."
0040100C  |.  6A 00         push 0x0                                 ; |hOwner = NULL
0040100E  |.  E8 19020000   call <jmp.&user32.MessageBoxA>           ; MessageBoxA
00401013  |.  68 60304000   push KeygenMe.00403060                   ;  ASCII "Please type your e-mail: "
00401018  |.  E8 17020000   call KeygenMe.00401234
0040101D  |.  68 C8000000   push 0xC8
00401022  |.  68 60314000   push KeygenMe.00403160                   ;  ASCII "abcdef@qq.com"这是我输入的
00401027  |.  E8 40020000   call KeygenMe.0040126C
0040102C  |.  8D05 60314000 lea eax,dword ptr ds:[0x403160]
00401032  |.  33D2          xor edx,edx
00401034  |.  33C9          xor ecx,ecx
00401036  |>  8A18          /mov bl,byte ptr ds:[eax]                ;  计算@前有多少位
00401038  |.  80FB 40       |cmp bl,0x40
0040103B  |.  74 0C         |je XKeygenMe.00401049
0040103D  |.  38D3          |cmp bl,dl
0040103F  |.  0F84 A6010000 |je KeygenMe.004011EB
00401045  |.  41            |inc ecx
00401046  |.  40            |inc eax
00401047  |.^ EB ED         jmp XKeygenMe.00401036
00401049  |>  80F9 03       cmp cl,0x3
0040104C  |.  0F8E B9010000 jle KeygenMe.0040120B                    ;  小于3位就失败
00401052  |.  68 7A304000   push KeygenMe.0040307A                   ;  ASCII "Please Enter a valid serial: "
00401057  |.  E8 D8010000   call KeygenMe.00401234                   ;  再输入假码 需要23位
0040105C  |.  68 C8000000   push 0xC8
00401061  |.  68 84414000   push KeygenMe.00404184                   ;  ASCII "12345678901234567890123"
00401066  |.  E8 01020000   call KeygenMe.0040126C
0040106B  |.  68 84414000   push KeygenMe.00404184                   ; /String = "12345678901234567890123"
00401070  |.  E8 C3020000   call <jmp.&kernel32.lstrlenA>            ; lstrlenA
00401075  |.  83F8 17       cmp eax,0x17                             ;  不等于23位就失败
00401078  |.  0F85 4D010000 jnz KeygenMe.004011CB
0040107E  |.  8D05 84414000 lea eax,dword ptr ds:[0x404184]
00401084  |.  33DB          xor ebx,ebx
00401086  |.  8B18          mov ebx,dword ptr ds:[eax]
00401088  |.  81FB 4954532D cmp ebx,0x2D535449                       ;  前4位ITS-
0040108E  |.  0F85 37010000 jnz KeygenMe.004011CB
00401094  |.  83C0 08       add eax,0x8
00401097  |.  8038 2D       cmp byte ptr ds:[eax],0x2D               ;  第9位 -
0040109A  |.  0F85 2B010000 jnz KeygenMe.004011CB
004010A0  |.  33C9          xor ecx,ecx
004010A2  |.  33D2          xor edx,edx
004010A4  |.  B1 03         mov cl,0x3
004010A6  |.  B2 05         mov dl,0x5
004010A8  |>  03C2          /add eax,edx                             ;  14位 19位
004010AA  |.  FEC9          |dec cl
004010AC  |.  8038 2D       |cmp byte ptr ds:[eax],0x2D              ;  -
004010AF  |.^ 74 F7         je XKeygenMe.004010A8
004010B1  |.  80F9 00       cmp cl,0x0
004010B4  |.  0F85 11010000 jnz KeygenMe.004011CB
004010BA  |.  8D05 84414000 lea eax,dword ptr ds:[0x404184]
004010C0  |.  83C0 04       add eax,0x4
004010C3  |.  8B18          mov ebx,dword ptr ds:[eax]               ;  5-8位
004010C5  |.  8D0D A8514000 lea ecx,dword ptr ds:[0x4051A8]
004010CB  |.  8919          mov dword ptr ds:[ecx],ebx
004010CD  |.  83C0 05       add eax,0x5
004010D0  |.  8B18          mov ebx,dword ptr ds:[eax]               ;  10-13位
004010D2  |.  8D0D CC614000 lea ecx,dword ptr ds:[0x4061CC]
004010D8  |.  8919          mov dword ptr ds:[ecx],ebx
004010DA  |.  83C0 05       add eax,0x5
004010DD  |.  8B18          mov ebx,dword ptr ds:[eax]               ;  15-18
004010DF  |.  8D0D F0714000 lea ecx,dword ptr ds:[0x4071F0]
004010E5  |.  8919          mov dword ptr ds:[ecx],ebx
004010E7  |.  83C0 05       add eax,0x5                              ;  20-23
004010EA  |.  8B18          mov ebx,dword ptr ds:[eax]
004010EC  |.  8D0D 14824000 lea ecx,dword ptr ds:[0x408214]
004010F2  |.  8919          mov dword ptr ds:[ecx],ebx
004010F4  |.  33C0          xor eax,eax
004010F6  |.  33DB          xor ebx,ebx
004010F8  |.  33D2          xor edx,edx
004010FA  |.  33C9          xor ecx,ecx
004010FC  |.  8D05 A8514000 lea eax,dword ptr ds:[0x4051A8]
00401102  |.  8B00          mov eax,dword ptr ds:[eax]               ;  EAX 004051A8 ASCII "5678"
00401104  |.  2D 30303030   sub eax,0x30303030                       ;  -0x30
00401109  |.  8D15 A8514000 lea edx,dword ptr ds:[0x4051A8]
0040110F  |.  8902          mov dword ptr ds:[edx],eax
00401111  |.  8A1A          mov bl,byte ptr ds:[edx]
00401113  |.  8A4A 01       mov cl,byte ptr ds:[edx+0x1]
00401116  |.  02D9          add bl,cl                                ;  1 2 相加
00401118  |.  8A4A 02       mov cl,byte ptr ds:[edx+0x2]
0040111B  |.  02D9          add bl,cl                                ;  +3位
0040111D  |.  8A4A 03       mov cl,byte ptr ds:[edx+0x3]
00401120  |.  02D9          add bl,cl                                ;  加4位
00401122  |.  80FB 10       cmp bl,0x10                              ;  比较  x010
00401125  |.  0F85 A0000000 jnz KeygenMe.004011CB
0040112B  |.  8D15 CC614000 lea edx,dword ptr ds:[0x4061CC]
00401131  |.  8A1A          mov bl,byte ptr ds:[edx]                 ;  0123
00401133  |.  80FB 4F       cmp bl,0x4F                              ;  大写O
00401136  |.  0F85 8F000000 jnz KeygenMe.004011CB
0040113C  |.  8A4A 01       mov cl,byte ptr ds:[edx+0x1]
0040113F  |.  02D9          add bl,cl                                ;  相加
00401141  |.  8A4A 02       mov cl,byte ptr ds:[edx+0x2]
00401144  |.  02D9          add bl,cl                                ;  加3位
00401146  |.  8A4A 03       mov cl,byte ptr ds:[edx+0x3]
00401149  |.  2AD9          sub bl,cl                                ;  减4位
0040114B  |.  80FB 8F       cmp bl,0x8F                              ;  比较0x8F
0040114E  |.  75 7B         jnz XKeygenMe.004011CB
00401150  |.  8D05 F0714000 lea eax,dword ptr ds:[0x4071F0]
00401156  |.  8B00          mov eax,dword ptr ds:[eax]               ;  5678
00401158  |.  2D 30303030   sub eax,0x30303030                       ;  -0x30
0040115D  |.  8D15 F0714000 lea edx,dword ptr ds:[0x4071F0]
00401163  |.  8902          mov dword ptr ds:[edx],eax
00401165  |.  8A1A          mov bl,byte ptr ds:[edx]
00401167  |.  8A4A 01       mov cl,byte ptr ds:[edx+0x1]
0040116A  |.  02D9          add bl,cl                                ;  12位相加
0040116C  |.  8A4A 02       mov cl,byte ptr ds:[edx+0x2]
0040116F  |.  02D9          add bl,cl                                ;  加3位
00401171  |.  8A4A 03       mov cl,byte ptr ds:[edx+0x3]
00401174  |.  80E9 02       sub cl,0x2                               ;  4位-0x2
00401177  |.  02D9          add bl,cl                                ;  相加
00401179  |.  80FB 10       cmp bl,0x10                              ;  比较0x10
0040117C  |.  75 4D         jnz XKeygenMe.004011CB
0040117E  |.  8D05 14824000 lea eax,dword ptr ds:[0x408214]
00401184  |.  8B00          mov eax,dword ptr ds:[eax]               ;  0123
00401186  |.  2D 30303030   sub eax,0x30303030
0040118B  |.  8D15 14824000 lea edx,dword ptr ds:[0x408214]
00401191  |.  8902          mov dword ptr ds:[edx],eax
00401193  |.  8A1A          mov bl,byte ptr ds:[edx]
00401195  |.  8A4A 01       mov cl,byte ptr ds:[edx+0x1]
00401198  |.  02D9          add bl,cl                                ;  12+
0040119A  |.  8A4A 02       mov cl,byte ptr ds:[edx+0x2]
0040119D  |.  02D9          add bl,cl                                ;  +3
0040119F  |.  8A4A 03       mov cl,byte ptr ds:[edx+0x3]
004011A2  |.  02D9          add bl,cl                                ;  +4
004011A4  |.  80FB 12       cmp bl,0x12                              ;  比较0x12
004011A7  |.  75 22         jnz XKeygenMe.004011CB
004011A9  |.  EB 00         jmp XKeygenMe.004011AB
004011AB  |>  68 98304000   push KeygenMe.00403098                   ;  ASCII "Valid Serial (Press Enter To Exit)"
004011B0  |.  E8 7F000000   call KeygenMe.00401234
004011B5  |.  68 C8000000   push 0xC8
004011BA  |.  68 38924000   push KeygenMe.00409238
004011BF  |.  E8 A8000000   call KeygenMe.0040126C
004011C4  |.  6A 00         push 0x0                                 ; /ExitCode = 0
004011C6  |.  E8 67010000   call <jmp.&kernel32.ExitProcess>         ; ExitProcess
004011CB  |>  68 BB304000   push KeygenMe.004030BB                   ;  ASCII "Invalid Serial (Press Enter To Exit)"
004011D0  |.  E8 5F000000   call KeygenMe.00401234
004011D5  |.  68 C8000000   push 0xC8
004011DA  |.  68 38924000   push KeygenMe.00409238
004011DF  |.  E8 88000000   call KeygenMe.0040126C
004011E4  |.  6A 00         push 0x0                                 ; /ExitCode = 0
004011E6  |.  E8 47010000   call <jmp.&kernel32.ExitProcess>         ; ExitProcess
004011EB  |>  68 E0304000   push KeygenMe.004030E0                   ;  ASCII "Please Insert a Valid Mail Address (Press Enter To Exit)"
004011F0  |.  E8 3F000000   call KeygenMe.00401234
004011F5  |.  68 C8000000   push 0xC8
004011FA  |.  68 38924000   push KeygenMe.00409238
004011FF  |.  E8 68000000   call KeygenMe.0040126C
00401204  |.  6A 00         push 0x0                                 ; /ExitCode = 0
00401206  |.  E8 27010000   call <jmp.&kernel32.ExitProcess>         ; ExitProcess
0040120B  |>  68 19314000   push KeygenMe.00403119                   ;  ASCII "Please Enter an email with 4 Characters minimum (Press Enter to Exit)"

ITS-5551-O@11-5553-5553

代码:

#include <iostream.h>
#include "StdAfx.h"
#include <stdlib.h>
#include <time.h>

int GetRand()
{
	int a = rand()%126;
	if (a <=0x20)
	{
		a += 0x20;
	}
	return a;
}
void main()
{
	char xx[]= "ITS-";
	char Ochar = 'O';
	//ITS-5551-O@11-5553-5553
	srand( (unsigned)time( NULL ) );

	for (int i =0 ;i<10;i++)
	{
		printf(xx);
		while (1)//1
		{
			int a = GetRand();
			int b = GetRand();
			int c = GetRand();
			int d = GetRand();
			if ((a-0x30>=0)&&(b-0x30>=0)&&(c-0x30>=0)&&(d-0x30>=0))
			{
				if ((a-0x30)+(b-0x30)+(c-0x30)+(d-0x30)==0x10)
				{
					printf("%c%c%c%c-",a,b,c,d);
					break;
				}
			}
		}
		printf("%c",Ochar);
		while (1)//2
		{
			int b = GetRand();
			int c = GetRand();
			int d = GetRand();
		
				if ('O'+b+c-d==0x8F)
				{
					printf("%c%c%c-",b,c,d);
					break;
				}	
		}
		while (1)//3
		{
			int a = GetRand();
			int b = GetRand();
			int c = GetRand();
			int d = GetRand();
			if ((a-0x30>=0)&&(b-0x30>=0)&&(c-0x30>=0)&&(d-0x30>=0))
			{
				if ((a-0x30)+(b-0x30)+(c-0x30)+(d-0x30)-0x2==0x10)
				{
					printf("%c%c%c%c-",a,b,c,d);
					break;
				}
			}
		}
		while (1)//4
		{
			int a = GetRand();
			int b = GetRand();
			int c = GetRand();
			int d = GetRand();
		
			if ((a-0x30>=0)&&(b-0x30>=0)&&(c-0x30>=0)&&(d-0x30>=0))
			{
				if ((a-0x30)+(b-0x30)+(c-0x30)+(d-0x30)==0x12)
				{
					printf("%c%c%c%c
",a,b,c,d);
					break;
				}
			}
		}
	}	
}
学习了一下怎么用 随机数

原文地址:https://www.cnblogs.com/zcc1414/p/3982525.html