首页
社区
课程
招聘
[原创]菜鸟用内联汇编写注册机
发表于: 2012-2-23 00:08 5697

[原创]菜鸟用内联汇编写注册机

2012-2-23 00:08
5697
004011BB  /$  55            push ebp
004011BC  |.  8BEC          mov ebp,esp
004011BE  |.  57            push edi
004011BF  |.  56            push esi
004011C0  |.  53            push ebx
004011C1  |>  6A 32         /push 0x32                               ; /Count = 32 (50.)
004011C3  |.  68 84624000   |push crackme2.00406284                  ; |Buffer = crackme2.00406284
004011C8  |.  6A 01         |push 0x1                                ; |ControlID = 1
004011CA  |.  FF75 08       |push [arg.1]                            ; |hWnd
004011CD  |.  E8 16020000   |call <jmp.&user32.GetDlgItemTextA>      ; \GetDlgItemTextA
004011D2  |.  64:8B15 18000>|mov edx,dword ptr fs:[0x18]
004011D9  |.  8B52 30       |mov edx,dword ptr ds:[edx+0x30]
004011DC  |.  0FB652 02     |movzx edx,byte ptr ds:[edx+0x2]
004011E0  |.  83F8 00       |cmp eax,0x0
004011E3  |.  7F 11         |jg short crackme2.004011F6
004011E5  |.  68 D8604000   |push crackme2.004060D8                  ; /Text = "nameless"
004011EA  |.  6A 01         |push 0x1                                ; |ControlID = 1
004011EC  |.  FF75 08       |push [arg.1]                            ; |hWnd
004011EF  |.  E8 0C020000   |call <jmp.&user32.SetDlgItemTextA>      ; \SetDlgItemTextA
004011F4  |.^ EB CB         \jmp short crackme2.004011C1
004011F6  |>  8D35 84624000 lea esi,dword ptr ds:[0x406284]
004011FC  |.  33C9          xor ecx,ecx
004011FE  |>  0FBE06        /movsx eax,byte ptr ds:[esi]
00401201  |.  8BD8          |mov ebx,eax
00401203  |.  2BF2          |sub esi,edx
00401205  |.  C1E0 04       |shl eax,0x4
00401208  |.  C1EB 05       |shr ebx,0x5
0040120B  |.  33C3          |xor eax,ebx
0040120D  |.  83C0 26       |add eax,0x26
00401210  |.  33C1          |xor eax,ecx
00401212  |.  03C8          |add ecx,eax
00401214  |.  46            |inc esi
00401215  |.  803E 00       |cmp byte ptr ds:[esi],0x0
00401218  |.^ 75 E4         \jnz short crackme2.004011FE
0040121A  |.  B8 EF0D0C00   mov eax,0xC0DEF
0040121F  |.  2BC1          sub eax,ecx
00401221  |.  0FAFC0        imul eax,eax
//当执行完这句后,大家注意eax和ecx的值,如图:
[ATTACH]64860[/ATTACH]

00401224  |.  50            push eax                                 ; /<%lX>
00401225  |.  51            push ecx                                 ; |<%lX>
00401226  |.  68 E1604000   push crackme2.004060E1                   ; |Format = "CM2-%lX-%lX"
0040122B  |.  68 B6624000   push crackme2.004062B6                   ; |s = crackme2.004062B6
00401230  |.  E8 9B010000   call <jmp.&user32.wsprintfA>             ; \wsprintfA

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (13)
雪    币: 13657
活跃值: (3997)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享   收藏学习
2012-2-23 07:12
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习一下,还不会这些呢
2012-2-23 08:46
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
VB、VC、C、Delphi等写一个也是非常容易的事。
2012-2-23 09:29
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享
2012-2-23 09:38
0
雪    币: 274
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢分享,呵呵!
2012-2-23 09:44
0
雪    币: 2329
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
长见识,学习了
2012-2-23 10:06
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢班主,以后可以方便的向大家学习和交流了!
2012-2-23 12:26
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢分享,看一下
2012-2-23 13:18
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
囧 我也做好了准备发帖 结果楼主先发了 那我把我的C代码发出来好了
    
    char z[10];
    int a,b,c = 0;
    scanf("%s",z);
    for(int i = 0;z[i];i++){
        a = z[i];
        b = a;
        a <<= 4;
        b >>= 5;
        a ^= b;
        a += 0x26;
        a ^= c;
        c += a;
    }
    a = 0x0C0DEF;
    a -= c;
    a *= a;
    printf("CM2-%x-%x\n",c,a);


谢谢13L指出错误 因为是直接十六进制输出 所以请把小写转换成大写哦 亲=w= 我这人懒。。。懒得转换成ASCII码了。。
2012-2-23 13:27
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我想请教一下,我现在发现注册机有问题,就是有些注册名出的注册码就不对了,能帮我看看是啥问题么?
比方说用户名是 ilove就不行 iknow也不行,iwant就行,还有2位的貌似都不行,求解。。
2012-2-23 13:31
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=夏式;1047200]囧 我也做好了准备发帖 结果楼主先发了 那我把我的C代码发出来好了
   
    char z[10];
    int a,b,c = 0;
    scanf("%s",z);
    for(int i = 0;z[i];i++){
        a = z[i];
   ...[/QUOTE]

谢谢你了,贴出来大家一起分享吧。我想说你也抢先我一步写了纯c代码,我正准备一俩天之内把这个给大家补上呢。
2012-2-23 13:32
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
找到原因了原来是多了一个0,
iknow 对应 CM2-0819-8C320EE4;第二部分的0是多余的,正确的是CM2-819-8C320EE4
ilove  对应  CM2-0979-6B23E664;正确的是CM2-979-6B23E664
iwant 对应  CM2-3769-23484E24;没问题
刚才试了一下10楼的代码,用户名生成的注册码也有问题。字母应该是大写的而不是小写的。
2012-2-23 14:00
0
雪    币: 37
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
问题都解决了,现在再贴个源码,真正的无bug注册机:谢谢“  T二十天²º¹² ”大哥给我的提示
void CKeyGenDlg::OnBnClickedButton1()
{

               char name[]={0};//="ilovecwq"
	LPSTR user=new char[32];
	TCHAR cCode[100]={0};
                 int x1,x2;

	::GetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT1,user,32); 
     wsprintf(name, "%s", user);
__asm 
	{
 xor edx,edx //新加语句
 lea esi,name
  xor ecx,ecx  
  L001:
  movsx eax,byte ptr ds:[esi]
  mov ebx,eax
  sub esi,edx//新加语句
  shl eax,04h
  shr ebx,05h
  xor eax,ebx
  add eax,026h
  xor eax,ecx
  add ecx,eax
  inc esi
  cmp byte ptr ds:[esi],00h

  jnz L001
  mov eax,00C0DEFh
  sub eax,ecx
  imul eax,eax	
  mov x1,ecx
  mov x2,eax
	  
 }

wsprintf(cCode,TEXT("CM2-%X-%.4X"),x1,x2);  //把第一个%.4X改成%X
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT2,cCode);


}


一共修个了3处,谢谢所有帮助我的人,继续努力学汇编啦!
2012-2-23 23:41
0
游客
登录 | 注册 方可回帖
返回
//