首页
社区
课程
招聘
[原创]s3rh47的cm8 算法分析+注册机编写
发表于: 2010-7-5 15:02 6559

[原创]s3rh47的cm8 算法分析+注册机编写

2010-7-5 15:02
6559

标 题: [原创] s3rh47的cm8 算法分析+注册机编写
作 者:kkmylove
时 间:2010年7月5日
链 接:http://bbs.pediy.com/showthread.php?t=116256
 
【文章标题】: s3rh47的cm8 算法分析+注册机编写
【文章作者】:kkmylove
【软件名称】: KeygenMe.exe
【软件大小】: 183 KB
【下载地址】: 见以下附件 
【编写语言】: MASM32 / TASM32
【使用工具】: PEID,OD
【操作平台】: D-Windows XP2
【连接地址】: http://bbs.pediy.com/showthread.php?t=116256
【程序介绍】: 一个简单的cm

上http://www.crackmes.de/   逛逛 发现了这个CM,便有了这个文章,第一次写破文,不足之处希望各位朋友多多指点。

先试着跑了一下程序,错误的注册码没有任何反应,首先尝试万能断点,没有断下来,不知道是不是万能断点只使用与汇编以外的程序,嘎嘎。
Ctrl+N 找程序读取控件文本的函数

名称位于 KeygenMe, 条目 5
 地址=00402040
 区段=.rdata
 类型=输入    (已知)
 名称=user32.GetDlgItemTextA
点右键->在每个参考上设置断点, 运行程序,输入用户名kkmylove,注册码0123456789
单击check Serial 程序段了下来  一直F8 到0040112c处


0040112C   > \68 00344000   push KeygenMe.00403400                   ;  0123456789
00401131   .  68 70324000   push KeygenMe.00403270                   ;  kkmylove
00401136   .  E8 88000000   call KeygenMe.004011C3
0040113B   .  83F8 01       cmp eax,0x1
0040113E   .  75 14         jnz short KeygenMe.00401154
00401140   .  6A 30         push 0x30                                ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401142   .  68 8C304000   push KeygenMe.0040308C                   ; |Super
00401147   .  68 4F304000   push KeygenMe.0040304F                   ; |Your Registration was successful. Please Make a Keygen now.
0040114C   .  FF75 08       push dword ptr ss:[ebp+0x8]              ; |hOwner
0040114F   .  E8 88010000   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
00401154   >  C9            leave
00401155   .  C2 1000       retn 0x10
00401158   >  3D EF030000   cmp eax,0x3EF
0040115D   .  75 20         jnz short KeygenMe.0040117F
0040115F   .  68 00000900   push 0x90000                             ;  Case 3EF of switch 004010E7
00401164   .  68 BC020000   push 0x2BC
00401169   .  FF75 08       push dword ptr ss:[ebp+0x8]
004011C3  /$  55            push ebp
004011C4  |.  8BEC          mov ebp,esp
004011C6  |.  8D35 48324000 lea esi,dword ptr ds:[0x403248]
004011CC  |.  8B7D 08       mov edi,[arg.1]
004011CF  |.  B9 88130000   mov ecx,0x1388
004011D4  |.  DBE3          finit
004011D6  |.  D9EE          fldz
004011D8  |>  33C0          /xor eax,eax
004011DA  |.  AC            |lods byte ptr ds:[esi]
004011DB  |.  85C0          |test eax,eax
004011DD  |.  75 08         |jnz short KeygenMe.004011E7
004011DF  |.  8D35 48324000 |lea esi,dword ptr ds:[0x403248]
004011E5  |.^ EB F1         |jmp short KeygenMe.004011D8
004011E7  |>  83F8 2D       |cmp eax,0x2D
004011EA  |.  75 02         |jnz short KeygenMe.004011EE
004011EC  |.^ EB EA         |jmp short KeygenMe.004011D8
004011EE  |>  8BD8          |mov ebx,eax
004011F0  |>  0FB607        |/movzx eax,byte ptr ds:[edi]
004011F3  |.  47            ||inc edi
004011F4  |.  85C0          ||test eax,eax
004011F6  |.  75 05         ||jnz short KeygenMe.004011FD
004011F8  |.  8B7D 08       ||mov edi,[arg.1]
004011FB  |.^ EB F3         |\jmp short KeygenMe.004011F0
004011FD  |>  33C3          |xor eax,ebx                             ;  eax = reg^key
004011FF  |.  F7E9          |imul ecx                                ;  eax = ecx * eax
00401201  |.  50            |push eax
00401202  |.  DA0424        |fiadd dword ptr ss:[esp]                ;  st0 = st0 + eax
00401205  |.  81F9 DC050000 |cmp ecx,0x5DC
0040120B  |.  74 15         |je short KeygenMe.00401222
0040120D  |.  81F9 EE020000 |cmp ecx,0x2EE
00401213  |.  74 0D         |je short KeygenMe.00401222
00401215  |.  81F9 45010000 |cmp ecx,0x145
0040121B  |.  74 05         |je short KeygenMe.00401222
0040121D  |.  83F9 64       |cmp ecx,0x64
00401220  |.  75 0B         |jnz short KeygenMe.0040122D
00401222  |>  BB 88190000   |mov ebx,0x1988
00401227  |.  F7EB          |imul ebx
00401229  |.  50            |push eax
0040122A  |.  DA0424        |fiadd dword ptr ss:[esp]
0040122D  |>  51            |push ecx
0040122E  |.  DA0424        |fiadd dword ptr ss:[esp]                ;  st0= st0 + ecx
00401231  |.^ E2 A5         \loopd short KeygenMe.004011D8
00401233  |.  33DB          xor ebx,ebx
00401235  |.  33C0          xor eax,eax
00401237  |.  8B75 0C       mov esi,[arg.2]
0040123A  |.  8A1E          mov bl,byte ptr ds:[esi]
0040123C  |.  46            inc esi
0040123D  |>  80EB 30       /sub bl,0x30
00401240  |.  8D0480        |lea eax,dword ptr ds:[eax+eax*4]
00401243  |.  03C0          |add eax,eax
00401245  |.  03C3          |add eax,ebx
00401247  |.  8A1E          |mov bl,byte ptr ds:[esi]
00401249  |.  46            |inc esi
0040124A  |.  84DB          |test bl,bl
0040124C  |.^ 75 EF         \jnz short KeygenMe.0040123D
0040124E  |.  05 E4C5BE00   add eax,0xBEC5E4
00401253  |.  50            push eax
00401254  |.  DA2424        fisub dword ptr ss:[esp]
00401257  |.  83EC 08       sub esp,0x8
0040125A  |.  DF3C24        fistp qword ptr ss:[esp]
0040125D  |.  58            pop eax
0040125E  |.  5A            pop edx
0040125F  |.  0BC0          or eax,eax
00401261  |.  75 02         jnz short KeygenMe.00401265
00401263  |.  B0 01         mov al,0x1
00401265  |>  C9            leave
00401266  \.  C2 0800       retn 0x8

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持,虽然看不懂算法
注册机
2010-7-5 15:42
0
雪    币: 897
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
学习了,这么快就加精了。。
2010-7-6 17:21
0
雪    币: 897
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我在00401233处下断,输入用户名和密码后运行到断点,此时查看ST0  的值,在密码输入并不能成功,
“如果和值1一样 ,就表示成功了”那这句该怎么理解,,断的地方应该可以看到你说的计算出来的值1吧。
2010-7-6 22:12
0
雪    币: 338
活跃值: (103)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
断下之后  st0的值减去0xBEC5E4 就是注册码
2010-7-7 08:11
0
游客
登录 | 注册 方可回帖
返回
//