首页
社区
课程
招聘
KeyGenMe:Crack入门系列
发表于: 2006-10-26 10:18 113325

KeyGenMe:Crack入门系列

2006-10-26 10:18
113325
收藏
免费 7
支持
分享
最新回复 (223)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
101
一个算法也不会 不过全给暴了
2007-3-26 12:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
102
在00401175处,把je 00401242 nop掉,就爆破了,,,算法慢慢研究,
2007-3-26 22:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
103
跟了一个晚上,得出下列结论

注册码要19位数,经过

004010B8  |> /33C0          /xor     eax, eax
004010BA  |. |BB 1A000000   |mov     ebx, 1A
004010BF  |. |8A840C 040200>|mov     al, byte ptr [esp+ecx+204]
004010C6  |. |03C7          |add     eax, edi
004010C8  |. |99            |cdq
004010C9  |. |F7FB          |idiv    ebx
004010CB  |. |41            |inc     ecx
004010CC  |. |3BCE          |cmp     ecx, esi
004010CE  |. |8A92 30D04000 |mov     dl, byte ptr [edx+40D030]
004010D4  |. |88540C 0F     |mov     byte ptr [esp+ecx+F], dl
004010D8  |.^\7C DE         \jl      short 004010B8

这些运算后,得到的19位和"QONVPWYIUYZZRFKUPFB"相比较,,如果符合条件,可能就ok,,否则不成功,更具体的结论,有没有高人分析一下,要睡觉了....明晚继续来研究一下.
2007-3-26 23:58
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
104
第一个给暴破了,算法不太懂啊
2007-3-28 21:16
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
105
写了keygen4的注册机(附源码),用户名大于2即可
上传的附件:
2007-4-1 19:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
106
谢谢了,我学习学习1
2007-4-2 22:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
107
先下一个慢慢看,呵呵
2007-4-3 14:55
0
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
108
非常感谢happydown,如果能有破文就很完美了
2007-4-4 08:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
109
谢谢,下来练习练习
2007-4-4 23:23
0
雪    币: 209
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
110
@ Happytown

看您的Keygenme的文章有好几天了,觉得很好。
但终究有很多学习破解的人不具备好的编程的基础。至今还记得论坛上有人提议用visual studio产生的cod文件来学习高级语言编程和汇编。个人觉得这是非常好的方法。我在国外的一些论坛上也看到过支持类似学习方法的帖子。

对于用变动的堆栈来执行特殊功能的代码不是newbie能够搞懂的。

所以,恳请HappyTown蒋keygen源代码也打包共享。

谢谢
2007-4-5 21:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
111
这么多资源,要好好学习一下啊!
2007-4-6 17:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
112

一定要好好学
2007-4-6 21:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
113
爆破差不多都可以破,不过算法的话就不知道了
2007-4-15 11:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
114
用一个下午全部爆破完毕,不过算法呢!不行!!
2007-4-15 17:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
115
我是个新手。请问一下,我试了01和07两个,在OllyDbg下查看字符串参考都什么也没发现,为什么到W32Dasm无极版下都可以看到参考字符串,所以我只能先在W32Dasm无极版下查看字符串再到OllyDbg下分析关键跳。结果07给爆了,01还是爆不了,关键跳找不着啊。
2007-4-18 10:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
116
先解决了前3个~第4个正努力中~爆破这些都没什么难度~推注册码中,对算法不大了解,不会写注册机....
2007-4-19 22:45
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
117
爆掉,不会算法,没有办法,努力学习~!

再多说一句,像我一样的菜鸟同志们,可以尝试着找下按钮事件,个人认为VB程序找按钮事件追码的方法很不错~!
2007-5-4 11:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
118
谢谢,努力去破喽,但愿成功
2007-5-6 09:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
119
KeyGenMe_08
大概穷举了一下 貌似算法是这样的:

1.Serial必须是20位的,可以是空格
2.Name只算位数, 也可以是空格
3.具体算法:
  用 "QWYZIUPWQONNESGCJDJDB" 的ACSII码(81,87,89,90,73,85,80,87,81,79,78,78,69,83,71,67,74,68,74,68,66) - "Name位数" + "13" +/- "26的整数倍" 算得的数 再转换为符号就是正确的序列号.

  如:Name  : cyan    -------   4位
     Serial: QWYZIUPWQONNESGCJDJDB - 4 + 13 = "ZFHIR^Y`ZXWWN\PLSMSMK" (由于输入框不能输入小写,我把几个小写符号换了)
  这样,考虑到高位ACSII码和小写字母无法显示的问题, 4 位的 Name 算下来起码会有 4^20 种 Serial ......

  不知道是不是真的算法, 小人班门弄斧了, 如果哪有不对的地方, 还请作者多多指正.
  关键跳在下面 可以爆破
  00401175     /0F84 C7000000 JE KeyGenMe.00401242
  
  基本看了一下算法, 有一个循环, 还有几个跳转.
  脑袋一直不好使, 看到一堆代码就头疼, 连编程都不会了 , 还是请大虾们做个注册机出来, 毕竟电脑比人脑好啊......
2007-5-8 22:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
120
好东西!好东西!
2007-5-8 22:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
121
 工具:OD 
   这两天看精华8,看到了moodsky的利用万能断点找出关键跳转,我也来试试。
  先运行下,看看能不能找到什么信息,输入name:repefe,serial:787878。按check,没有反应,看来只有正确的
serial才会有信息。
  用peid查一下,没壳。
  用OD打开KeyGenMe_05.exe,右键单击汇编区域在“查看”菜单里选择“模块USER32”。利用Ctrl+B快捷键,
查找F3 A5 8B C8 83 E1 03 F3 A4 E8,点击确定。记下到达的地址(这个就是我们要找的万能断点)
 CTRL+F2重新加载一下程序,F9运行。首先填写好注册信息,不要点注册。然后快捷键CTRL+G,在出现窗口中填入刚才记下的地址。
按F2下断。回到Crackme窗口点击注册,程序被OD断了下来,看右上的寄存器窗口出现了用户名(repefe)。点击F9键出现注册码,在EDI寄存
器上单击右键,选择“在转存中跟随”。按F8到下面第一个CALL处,看转存中数据。在伪注册码(787878)上下内存访问断点,F9运行。在00404247处被OD断下
00404243  |. /74 26         je      short 0040426B
00404245  |> |8B0E          /mov     ecx, dword ptr [esi]
00404247  |. |8B1F          |mov     ebx, dword ptr [edi]   --被断
00404249  |. |39D9          |cmp     ecx, ebx         --比较
0040424B  |. |75 58         |jnz     short 004042A5
0040424D  |. |4A            |dec     edx
0040424E  |. |74 15         |je      short 00404265
00404250  |. |8B4E 04       |mov     ecx, dword ptr [esi+4]
寄存器中看到
EAX 00000000
ECX 3A5C2F5C   --(ASCII "\/\:^/")
EDX 00000001   
EBX 38373837   --(ASCII "787878")  
ESP 0012F608
EBP 0012F660
ESI 00952630 ASCII "\/\:^/"
EDI 009525FC ASCII "787878"
EIP 00404249 KeyGenMe.00404249

按F8到了 004501A6 看到Good job,man!猜想是正确时的信息,改为jz,F8,输出信息。
0045019E  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
004501A1  |.  E8 7640FBFF   call    0040421C
004501A6  |.  75 13         jnz     short 004501BB    不等就跳,跳就错
004501A8  |.  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004501AA  |.  68 20024500   push    00450220                         ; |Title = "Congratulations"
004501AF  |.  68 30024500   push    00450230                         ; |Text = "Good job,man!"
004501B4  |.  6A 00         push    0                                ; |hOwner = NULL
004501B6  |.  E8 E562FBFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
004501BB  |>  33C0          xor     eax, eax
004501BD  |.  5A            pop     edx

看来这个程序是利用用户名计算,然后直接与注册码比较的。验证一下,运行KeyGenMe_05.exe,输入name:repefe,serial:\/\:^/
按check,正确。

找出算法:
CTRL+F2重新加载一下程序,F9运行。填写好注册信息,点注册。被断(寄存器窗口出现了用户名repefe),在EDI寄存
器上单击右键,选择“在转存中跟随”。按F8到下面第一个CALL处,看转存中数据。在repefe上下内存访问断点,F9运行。在0045012e处被OD断下
这一部分代码就是处理用户名的算法了。单步
00450123  |> /33C0          /xor     eax, eax
00450125  |. |8945 DC       |mov     dword ptr [ebp-24], eax
00450128  |. |8B45 F8       |mov     eax, dword ptr [ebp-8]     
0045012B  |. |8B55 E0       |mov     edx, dword ptr [ebp-20] 
0045012E  |. |0FB64410 FF   |movzx   eax, byte ptr [eax+edx-1]    --第一个字母送入eax(72)
00450133  |. |C1E0 02       |shl     eax, 2             --左移2位  (1C8)
00450136  |. |B9 1A000000   |mov     ecx, 1A            --1A送入ecx 
0045013B  |. |33D2          |xor     edx, edx                       --清0
0045013D  |. |F7F1          |div     ecx              --eax/ecx商到eax余数到ebx 
0045013F  |. |8955 DC       |mov     dword ptr [ebp-24], edx    --保存余数 (E)
00450142  |. |8D45 CC       |lea     eax, dword ptr [ebp-34]
00450145  |. |8B55 F0       |mov     edx, dword ptr [ebp-10]    --ASCII "~!@#$%^&*()_+|\=-/?.,><;:`"
00450148  |. |8B4D DC       |mov     ecx, dword ptr [ebp-24]    --余数
0045014B  |. |8A140A        |mov     dl, byte ptr [edx+ecx]     --~!@#$%^&*()_+|\=-/?.,><;:`中的第余数+1个字符
0045014E  |. |E8 A53EFBFF   |call    00403FF8
00450153  |. |8B55 CC       |mov     edx, dword ptr [ebp-34]
00450156  |. |8D45 EC       |lea     eax, dword ptr [ebp-14]
00450159  |. |E8 7A3FFBFF   |call    004040D8
0045015E  |. |8B45 F8       |mov     eax, dword ptr [ebp-8]
00450161  |. |8B55 E0       |mov     edx, dword ptr [ebp-20]
00450164  |. |0FB60410      |movzx   eax, byte ptr [eax+edx]    --第二个字母送入eax(65)  
00450168  |. |8D0440        |lea     eax, dword ptr [eax+eax*2]   --65+65*2=(12F) 
0045016B  |. |B9 1A000000   |mov     ecx, 1A            --1A送入ecx
00450170  |. |33D2          |xor     edx, edx            --清0
00450172  |. |F7F1          |div     ecx              --eax/ecx商到eax余数到ebx
00450174  |. |8955 DC       |mov     dword ptr [ebp-24], edx    --保存余数(11)
00450177  |. |8D45 C8       |lea     eax, dword ptr [ebp-38]
0045017A  |. |8B55 F0       |mov     edx, dword ptr [ebp-10]    --ASCII "~!@#$%^&*()_+|\=-/?.,><;:`"
0045017D  |. |8B4D DC       |mov     ecx, dword ptr [ebp-24]    --余数
00450180  |. |8A140A        |mov     dl, byte ptr [edx+ecx]     --~!@#$%^&*()_+|\=-/?.,><;:`中的第余数+1个字符
00450183  |. |E8 703EFBFF   |call    00403FF8
00450188  |. |8B55 C8       |mov     edx, dword ptr [ebp-38]
0045018B  |. |8D45 EC       |lea     eax, dword ptr [ebp-14]
0045018E  |. |E8 453FFBFF   |call    004040D8
00450193  |. |FF45 E0       |inc     dword ptr [ebp-20]
00450196  |. |FF4D D4       |dec     dword ptr [ebp-2C]
00450199  |.^\75 88         \jnz     short 00450123       循环(用户名长度/2次,用户名长度是奇数的在用户名后加*)
                                    
2007-5-10 10:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
122
支持,支持
2007-5-11 14:43
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
123
这是只有成功提示的.可以查找"Good job,man!"
下断就很容易了!
2007-5-13 22:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
124
楼主老大,为什么下载下来就出现解压错误呢/
2007-5-16 15:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
125
建议把KeyGenMe的回复发在对应的KeyGenMe分支下,查看方便一些
2007-5-24 07:57
0
游客
登录 | 注册 方可回帖
返回
//