首页
社区
课程
招聘
[原创]riijj Crackme (1) 的详解
发表于: 2004-11-26 11:57 218447

[原创]riijj Crackme (1) 的详解

2004-11-26 11:57
218447
收藏
免费 7
支持
分享
最新回复 (267)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
176
在 OD 上方的 Plugins ,选 Commandline ,这里可以像 softice 一样输入命令行

设下一个断点 :  

bp MessageBoxA

我的上面 怎么没有 Commandine 只有 CommandBer
2008-6-7 18:05
0
雪    币: 357
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
177
我才学这个,虽然看不太懂,不过还是很感谢.
2008-6-26 13:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
178
谢谢,看了学到很多
2008-7-23 22:57
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
179
经典!好!!
2008-7-24 08:58
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
180
哈哈,好好学习。
2008-7-24 15:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
181
适合初学者,收藏
2008-8-5 19:49
0
雪    币: 21
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
182
注册机:
[COLOR=#0000ff][FONT=Times]#include [/FONT][/COLOR][COLOR=#808000][FONT=Times]<stdio.h>[/FONT][/COLOR]
[COLOR=#0000ff][FONT=Times]#include [/FONT][/COLOR][COLOR=#808000][FONT=Times]<conio.h>[/FONT][/COLOR]
[COLOR=#0000ff][FONT=Times]#include [/FONT][/COLOR][COLOR=#808000][FONT=Times]<[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]Windows[/FONT][/COLOR][COLOR=#808000][FONT=Times].h>[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]int [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]int Sum()[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]{[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]int [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] * [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x343FD[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] += [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x269EC3[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] = ( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] >> [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x10[/FONT][/COLOR][COLOR=#808000][FONT=Times] ) & [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x7FFF[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]return [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
 
[COLOR=#808000][FONT=Times]}[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]void main( )[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]{[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]char[/FONT][/COLOR][COLOR=#808000][FONT=Times] [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#808080][FONT=Times]20[/FONT][/COLOR][COLOR=#808000][FONT=Times]];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]char[/FONT][/COLOR][COLOR=#808000][FONT=Times] [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#808080][FONT=Times]40[/FONT][/COLOR][COLOR=#808000][FONT=Times]];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]int [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nLastNum[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]system[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "COLOR 0A" );[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]printf[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "\t\t\tThe Keygen for CrackMe1\n" );[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]printf[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "Please Input The UserName:\n" );[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]scanf[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "%s", [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times] );[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#808080][FONT=Times]0xFFFFFFFF[/FONT][/COLOR][COLOR=#808000][FONT=Times] / ( ( ( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times]] % [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#808080][FONT=Times]1[/FONT][/COLOR][COLOR=#808000][FONT=Times]] ) * [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#808080][FONT=Times]2[/FONT][/COLOR][COLOR=#808000][FONT=Times]] ) + [/FONT][/COLOR][COLOR=#808080][FONT=Times]1[/FONT][/COLOR][COLOR=#808000][FONT=Times] ) ;[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]for ( int [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times]; [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] < [/FONT][/COLOR][COLOR=#808080][FONT=Times]0xF[/FONT][/COLOR][COLOR=#808000][FONT=Times]; [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] ++ )[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]{[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]szTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times]] = ( Sum() %  [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x1A[/FONT][/COLOR][COLOR=#808000][FONT=Times] ) + [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x41[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]}[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]for ( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times]; [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times] < (int)[/FONT][/COLOR][COLOR=#ff8000][FONT=Times]strlen[/FONT][/COLOR][COLOR=#808000][FONT=Times]( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times] ); [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times]++ )[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]{[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]int [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szName[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times]] >> [/FONT][/COLOR][COLOR=#808080][FONT=Times]5[/FONT][/COLOR][COLOR=#808000][FONT=Times]; [/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] = (( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] + [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times]*[/FONT][/COLOR][COLOR=#808080][FONT=Times]4[/FONT][/COLOR][COLOR=#808000][FONT=Times] ) * [/FONT][/COLOR][COLOR=#808080][FONT=Times]8[/FONT][/COLOR][COLOR=#808000][FONT=Times]) + [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] += [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times]*[/FONT][/COLOR][COLOR=#808080][FONT=Times]2[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]do [/FONT][/COLOR]
[COLOR=#808000][FONT=Times]{[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]Sum();[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times]--;[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]} while ( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] );[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] = Sum();[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] = ( [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] % [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x1a[/FONT][/COLOR][COLOR=#808000][FONT=Times] ) + [/FONT][/COLOR][COLOR=#808080][FONT=Times]0x41[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] = [/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times] ^ [/FONT][/COLOR][COLOR=#808080][FONT=Times]0[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]szTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times]] = ([/FONT][/COLOR][COLOR=#00ffff][FONT=Times]char[/FONT][/COLOR][COLOR=#808000][FONT=Times])[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]nEax[/FONT][/COLOR][COLOR=#808000][FONT=Times];[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]}[/FONT][/COLOR]
[COLOR=#00ffff][FONT=Times]szTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times][[/FONT][/COLOR][COLOR=#00ffff][FONT=Times]i[/FONT][/COLOR][COLOR=#808000][FONT=Times]] = '\0';[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]printf[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "[FONT=宋体]注册码是 = %s\nHave Fun!! ^_^ \n", [/FONT][/FONT][/COLOR][COLOR=#00ffff][FONT=Times]szTemp[/FONT][/COLOR][COLOR=#808000][FONT=Times] );[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]printf[/FONT][/COLOR][COLOR=#808000][FONT=Times]( "Please Press any key to Continue!\n" );[/FONT][/COLOR]
[COLOR=#ff8000][FONT=Times]_getch[/FONT][/COLOR][COLOR=#808000][FONT=Times]();[/FONT][/COLOR]
[COLOR=#808000][FONT=Times]}[/FONT][/COLOR]

Keygen.rar
上传的附件:
2008-8-17 11:53
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
183
2004年的东东,真好,来这里太晚了!!!!
2008-8-17 12:13
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
184
我是刚开始只学了几天的超级菜鸟,  我有如下问题
2.retn(隐含)指令 具体的要执行那些操作?
3.eax,ebx,ecx,edx这个几个是通用寄存器可以存储任何数据吗?
4.edi,esi等不通用的寄存器各有什么作用
5.cmp test等比较操作的结果放在什么寄存器,或者什么地方?
6.jnb,jnz,jne等条件跳转指令是根据那个地方的值来判断是否应该跳转(test指令和jnb指令隔很远)
希望路过的大鸟举手之劳解决小小菜的菜的不行的问题
本人不胜感激!
2008-8-17 13:05
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
185
第二步 我用 F4 然后F7 没有跳到你的那个地方。
2008-8-21 14:52
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
186
发现个小缺陷!

如果名字输入""的话,不包括双引号。程序就出错了。出错原因除数不能为零!

"" = 03 02 FF

00401230  /$ 8B0D BC564000  MOV ECX,DWORD PTR DS:[4056BC]
00401236  |. 83EC 30        SUB ESP,30                        // 在 stack 划出空间,作为变量
00401239  |. 8D4424 00      LEA EAX,DWORD PTR SS:[ESP]
0040123D  |. 53             PUSH EBX
0040123E  |. 56             PUSH ESI
0040123F  |. 8B35 94404000  MOV ESI,DWORD PTR DS:[<&USER32.GetDlgIte>;  USER32.GetDlgItemTextA
00401245  |. 6A 10          PUSH 10                                  ; /Count = 10 (16.)
00401247  |. 50             PUSH EAX                                 ; |Buffer                   //  <---- 注意这里,
00401248  |. 68 E8030000    PUSH 3E8                                 ; |ControlID = 3E8 (1000.)  //  可以看出存放字符串的地方
0040124D  |. 51             PUSH ECX                                 ; |hWnd => NULL            
0040124E  |. 33DB           XOR EBX,EBX                              ; |
00401250  |. FFD6           CALL ESI                                 ; \GetDlgItemTextA
00401252  |. 83F8 03        CMP EAX,3                         // 找到注册名字,如果字名的长度不小于 3,便跳,否则便完结
00401255  |. 73 0B          JNB SHORT ncrackme.00401262
00401257  |. 5E             POP ESI
00401258  |. B8 01000000    MOV EAX,1
0040125D  |. 5B             POP EBX
0040125E  |. 83C4 30        ADD ESP,30
00401261  |. C3             RETN                              // 如果来了这里,便完结了
00401262  |> A1 BC564000    MOV EAX,DWORD PTR DS:[4056BC]     // 从 JNB 来了这里
00401267  |. 8D5424 28      LEA EDX,DWORD PTR SS:[ESP+28]
0040126B  |. 6A 10          PUSH 10
0040126D  |. 52             PUSH EDX                          // <----- 注意这里,可以看出存放序号字符串的地方
0040126E  |. 68 E9030000    PUSH 3E9
00401273  |. 50             PUSH EAX
00401274  |. FFD6           CALL ESI                          // 再用 GetDlgItemTextA ,得到序号
00401276  |. 0FBE4424 08    MOVSX EAX,BYTE PTR SS:[ESP+8]     // 把名字的第一个位,放入 EAX
0040127B  |. 0FBE4C24 09    MOVSX ECX,BYTE PTR SS:[ESP+9]     // 把名字的第二个位,放入 ECX
00401280  |. 99             CDQ                               // 把 EAX 扩展,成为 EDX:EAX 的 QWORD(64 位长)
00401281  |. F7F9           IDIV ECX                          // 把 EDX:EAX 除以 ECX,余数放在 EDX
00401283  |. 8BCA           MOV ECX,EDX                       
00401285  |. 83C8 FF        OR EAX,FFFFFFFF                   // EAX = 0xffffffff
00401288  |. 0FBE5424 0A    MOVSX EDX,BYTE PTR SS:[ESP+A]     // 把名字的第一个位,放入 EDX
0040128D  |. 0FAFCA         IMUL ECX,EDX                      // 把刚才的余数乘以 EDX
00401290  |. 41             INC ECX                           // ECX 增加 1
00401291  |. 33D2           XOR EDX,EDX                       // EDX = 0
00401293  |. F7F1           DIV ECX                           // 以 0xffffffff 除以 ECX
2008-8-25 23:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
187
收藏学习啊  再爆:
上传的附件:
2008-8-30 22:38
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
188


这个地方错了吧,应该是把用户的第三位放入寄存器

俺也是初学者,说错话不要见怪。
上传的附件:
2008-9-25 20:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
189
谢谢楼主写出如此详细的说明,对象我这样的新手确实有很大帮助
我也跟楼主的思路走了一遍,前后用了4天时间,当然中间也有其它事间断,但有时间就花在这上面(可能是水平太低),我的感觉是楼主水平太高,把每段都分析得很透,但这对初学者不一定是好事,我主要的时间是花在理解他对加密算法的分析上,到现在都没搞清楚,我主要是想学会方法,而不是单针对这个程序,所以总爱问为什么会这么想,我的水平没这么高,遇到别的程序我肯定分析不出它的算法的,所以在找适合我水平的方法来破这个程序。
现在回想起来,楼主的第一段和最后段的分析是最有用最关键的,破解这个程序我只用上了这两段分析,中间对算法的分析适合水平高一点的人去学习。
所以,建议有这样的分析文章能突出重点地分析:比如这个破解,可先介绍最直接有效的方法,再提出进阶分析,这样,象我这样的初学者可少走弯路。
再次感谢楼主。
另想请教:
1、如何看某一地址里的数据,我的方法:在命令行输出 d [adress],这是自已摸索出来的,还有其它更好的方法吗?
2、想对某一地址里的数据的读,写动作设中断,应如何设
2008-10-10 11:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
190
收藏先¥  慢慢学习
2008-10-19 17:02
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
191
向高手学习。
很有用的。不过有些地方还是没看懂。
2008-11-6 01:55
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
192
004012A5  |. 99             |CDQ                              // 把那个值扩展成 EDX:EAX
004012A6  |. B9 1A000000    |MOV ECX,1A                       // ECX = 1a
004012AB  |. F7F9           |IDIV ECX                         // 把 EDX:EAX 除以 1a
004012AD  |. 80C2 41        |ADD DL,41                        // 把余数加 41,说起来,41 是 ASCII 的大写 A
004012B0  |. 885434 18      |MOV BYTE PTR SS:[ESP+ESI+18],DL  // 把这个余数的下 8 位,放入 SS:[ESP+ESI+18] 的地方
004012B4  |. 46             |INC ESI                          // ESI 增加 1 了
004012B5  |. 83FE 0F        |CMP ESI,0F                       // 检查 ESI 是否已经等于 0f
004012B8  |.^72 E6          \JB SHORT ncrackme.004012A0       // 跳回上面,这像是一个小型 loop

我们在 OD 下方的数值窗口,把数值打开来看

版主,问你一个问题,为什么我看到的都是乱码
而不是这些的?

0012FC34  50 49 5A 49 56 4A 45 44  PIZIVJED
0012FC3C  42 47 5A 41 50 53 49 00  BGZAPSI

我是菜鸟,是不是我用的方法错了?
我试过在commandbar里打dd 0012fc34也是看到乱码
2008-12-14 10:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
193
谢谢楼主分享
2008-12-16 09:02
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
194
终于成功破解了,好高兴了
哈哈,开始OD--->..load riijj crackme..
在 cmdbar 打 bp 401304.....F9... 然后打用户名和注册码
00401304  add dl,41     <----停在这里
00401307  movsx eax,dl
然后按F8, 我们可以在消息窗口看到我们第一个的注册码
一直重复F4在00401304,再F8,最后就可以得到所有注册码
比如:
konica
BQWVFA
这个crackme不难,就是我们的用户名有六个字,注册码就六个,但是有个bug就是比如:konica   注册码 BQWVFA后面打多几个字都显示成功。。。

我是个菜鸟,希望这些可以帮到新人
^_^
2008-12-16 22:52
0
雪    币: 400
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
195
楼主写的非常细,对初学者来说这太重要了,谢谢了
2008-12-18 13:12
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
196
从 OD 查看,SS:[ESP+ESI+1C] 是那一组特别字符的位置,

    0012FC34  50 49 5A 49 56 4A 45 44  PIZIVJED
    0012FC3C  42 47 5A 41 50 53 49 00  BGZAPSI.

这里怎么看才是啊===================>>> 我的如下:
2009-2-26 01:53
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
197
这里:0012FC28                                      16 88 D1 77
0012FC38  3F E5 D3 77 C2 04 22 00 11 01 00 00 EA 03 00 00           ?逵w?"...?..
2009-2-26 01:55
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
198
好贴留名

注册机

int base = 0;

int GetRand()
{
        base = base * 0x343FD + 0x269EC3;
        return ( base >> 16 ) & 0x7FFF;
}

void CKeygenDlg::OnOK()
{
        // TODO: Add extra validation here

        char szName[256] = {0};
        this->GetDlgItemText( IDE_USERNAME, szName, sizeof( szName )- 1 );
       
        base = (int)( 0xFFFFFFFF / (        1 + ( ( szName[0] % szName[1] ) * szName[2] ) ) );

        char m[16] = {0};
        for( int i=0; i < 15; i++ ) {
               
                m[i] = ( GetRand() % 0x1A ) + 0x41;
        }

        char szKey[256] = {0};
        for( i=0; i < (int)strlen( szName ); i++ ) {
                int t = szName[i] >> 5;
                int t1 = t*5;
                t = t+ t1*8;
                t = t * 3;
                while( t > 0 ) {
                        GetRand();
                        t--;
                }
                szKey[i] = ( GetRand() % 0x1A ) + 0x41;
        }
       
        SetDlgItemText( IDE_KEY, szKey );
       
       
        //CDialog::OnOK();
};
2009-2-28 01:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
199
非常不错的文章 照着葫芦画瓢都恩那个学到不少啦 哈哈
2009-3-3 17:08
0
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
200
这个挺好。非常适合新手学习,虽然帖子老了,但是技术仍然非常适合我啊。赫赫。谢谢LZ
2009-3-7 11:52
0
游客
登录 | 注册 方可回帖
返回
//