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

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

2004-11-26 11:57
218447
收藏
免费 7
支持
分享
最新回复 (267)
雪    币: 400
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
断点下不了
2005-3-13 18:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
用OD载入后,请问ncrackme.004040E8,FS:[0],DS:[EAX+EAX*4],DS:[<&USER32.MessageBoxA>]这些东东该怎么理解呢?WIN32下不是已经没有段的概念了吗?呵呵,新手的问题,先谢过大家了....

2005-3-22 14:28
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
53
段是需要的

举例说 :
SS 指向 stack 段, SS:ESP 是现在的 stack 位置
FS 指向 TIB (thread information block) , FS:[0] 是 SEH 的位置
CS 在保护模式下,它是当前程序的虚空间 (virtual space) 的 selector ,详细资料可以参考谈保护模式的文章
2005-3-22 15:52
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
54
很不错 适合我们菜鸟
2005-3-22 19:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
就这个程序而言,用OD载入后,把窗口向上卷,程序入口点00401368以上的00401000-00401368部分依然为程序ncrackme的领空,那个00401000应该就是程序的装载地址吧,我知道程序入口点就是指程序从这里开始执行,程序的装载地址就是指程序被映射到从00401000开始的内存地址,但对于这此个概念心里始终比较模糊,呵,哪个老大能讲一下他的理解不....thx....
2005-3-23 08:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
版主,我按照你所说的,"我们按右键选 Go to,在 expression 输入 00401230 这个位置",现在我们到了00401230这个位置,然后按F7单步跟踪,但我按F7的时候,却跑到了77E003D7(在我的机子上是这个位置,这是怎么搞的?呵呵,第一次用OD,问题多了点.
2005-3-24 17:20
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
57
最初由 freshman 发布
版主,我按照你所说的,"我们按右键选 Go to,在 expression 输入 00401230 这个位置",现在我们到了00401230这个位置,然后按F7单步跟踪,但我按F7的时候,却跑到了77E003D7(在我的机子上是这个位置,这是怎么搞的?呵呵,第一次用OD,问题多了点.


经过 API 的时候,改用 F8 便不会进入系统呼叫里

F7 : 会进入程序的 call
F8 : 同样是单步,但不会进入 call 里

如果走进了 API call ,可以按 Alt+ F9 返回 crackme
2005-3-24 19:45
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
问一下
设置内存访问断点找到调用处,怎么找呢!?
2005-3-25 12:01
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
59
最初由 k99992002 发布
问一下
设置内存访问断点找到调用处,怎么找呢!?


在左下方,到达位置,按右键,选设置硬体断点

也可以命令行,用 hr (read ) , hw (write ) 或 he (execute) 来设硬体断点

例如  hr 1200ff
2005-3-25 23:27
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
我也是刚入门的~
我来说明一下
bp和bpx是不同的~
比如说bp MessageBoxA只会停在系统里面也就是MessageBoxA的真正代码(已经进入),而bpx MessageBoxA就只停在我们自己的程序调用MessageBoxA的地方(还没进入),它的下一步才会进到MessageBoxA的真正代码里面去.
2005-4-9 21:14
0
雪    币: 207
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
很完美哦
感谢版主的无私贡献
2005-4-15 13:36
0
雪    币: 5
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
62
收了
2005-4-22 08:00
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
63
楼主提供的破文有一处地方有问题:
假如a是一个32位的有符号整数,以下的四句(A,B句在破文中出现)
mov  eax,a
cdq            //A
xor  eax,edx   //B
mov  a,eax
不是求a的绝对值
如果是正数,最后结果还是这个数
如果是负数,结果是这个数取反的结果,例如原来a是-5,执行后a是4
不过这不影响破解的结果,感谢楼主提供CrackMe和破文!
2005-4-25 20:25
0
雪    币: 195
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
厉害的说啊
2005-4-28 14:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
汇编太差了(是还没有学),只能看,学习ing
2005-5-16 09:38
0
雪    币: 90
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
好贴!
先下来试着做一次,有问题在请教!
谢谢!~~
2005-5-31 12:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
谢谢版主
让我学到了很多东西
2005-7-18 00:04
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
看完这个贴,俺哭了...

这贴太牛了,太适合我啦..
2005-7-22 16:40
0
雪    币: 207
活跃值: (84)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
69
学了一个下午
看懂了一部分
有的地方还是不太懂
以后努力
2005-7-30 16:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
斑竹,你的破文里面,把
在 OD 上方的 Plugins ,选 Commandline ,这里可以像 softice 一样输入命令行

设下一个断点 :  

bp MessageBoxA

改成   bpx bp MessageBoxA 就可以省好几步了,
直接到

00401050    .  817C24 08 1101000>cmp dword ptr ss:[esp+8],111
00401058    .  75 74             jnz short ncrackme.004010CE
0040105A    .  8B4424 0C         mov eax,dword ptr ss:[esp+C]
0040105E    .  66:3D EA03        cmp ax,3EA
00401062    .  75 42             jnz short ncrackme.004010A6
00401064    .  E8 C7010000       call ncrackme.00401230
00401069    .  85C0              test eax,eax
0040106B    .  6A 00             push 0                              ; /Style = MB_OK|MB_APPLMODAL
0040106D    .  68 80504000       push ncrackme.00405080              ; |Title = "ncrackme"
00401072    .  75 1B             jnz short ncrackme.0040108F         ; |
00401074    .  A1 B8564000       mov eax,dword ptr ds:[4056B8]       ; |
00401079    .  68 64504000       push ncrackme.00405064              ; |Text = "Registration successful."
0040107E    .  50                push eax                            ; |hOwner => 003609CE ('Newbie smallsize crackme - v1',class='myWindowClass')
0040107F    .  FF15 C0404000     call dword ptr ds:[<&USER32.Message>; \MessageBoxA
00401085    .  E8 A6020000       call ncrackme.00401330
0040108A    .  33C0              xor eax,eax
0040108C    .  C2 1000           retn 10
0040108F    >  8B0D B8564000     mov ecx,dword ptr ds:[4056B8]       ; |
00401095    .  68 50504000       push ncrackme.00405050              ; |Text = "Registration fail."
0040109A    .  51                push ecx                            ; |hOwner => 003609CE ('Newbie smallsize crackme - v1',class='myWindowClass')
0040109B    .  FF15 C0404000     call dword ptr ds:[<&USER32.Message>; \MessageBoxA
2005-8-2 16:31
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
学习,,,,,,,,,,,,,,,,,,
2005-8-4 01:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
我断点截下来后就这样了
77D504EA U>  8BFF            mov edi,edi
77D504EC     55              push ebp
77D504ED     8BEC            mov ebp,esp
77D504EF     833D BC04D777 0>cmp dword ptr ds:[77D704BC],0
77D504F6     74 24           je short USER32.77D5051C
77D504F8     64:A1 18000000  mov eax,dword ptr fs:[18]
77D504FE     6A 00           push 0
77D50500     FF70 24         push dword ptr ds:[eax+24]
77D50503     68 240BD777     push USER32.77D70B24
77D50508     FF15 C812D177   call dword ptr ds:[<&KERNEL32.Interlocke>; kernel32.InterlockedCompareExchange
77D5050E     85C0            test eax,eax
77D50510     75 0A           jnz short USER32.77D5051C
77D50512     C705 200BD777 0>mov dword ptr ds:[77D70B20],1
77D5051C     6A 00           push 0
77D5051E     FF75 14         push dword ptr ss:[ebp+14]
77D50521     FF75 10         push dword ptr ss:[ebp+10]
77D50524     FF75 0C         push dword ptr ss:[ebp+C]
77D50527     FF75 08         push dword ptr ss:[ebp+8]
77D5052A     E8 2D000000     call USER32.MessageBoxExA
77D5052F     5D              pop ebp
77D50530     C2 1000         retn 10
77D50533     90              nop
77D50534     90              nop
2005-8-8 19:54
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
73
最初由 hahaCrack 发布
我断点截下来后就这样了
77D504EA U> 8BFF mov edi,edi
77D504EC 55 push ebp
77D504ED 8BEC mov ebp,esp
77D504EF 833D BC04D777 0>cmp dword ptr ds:[77D704BC],0
........


当你看见自己身处在位置  7xxxxxxx 那些地方的时候,其实你身处在系统 dll 的领空

你可以用 Alt + F9 返回
2005-8-8 20:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
看不懂看不懂
2005-8-10 21:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
什么我用bp MessageBoxA中断后,按ctrl+f9运行到retn,然后f4,f7 跟进就来到这里的004010A1。
004010A1    .  33C0              xor eax,eax
004010A3    .  C2 1000           retn 10
004010A6    >  66:3D EB03        cmp ax,3EB
004010AA    .  75 22             jnz short ncrackme.004010CE
004010AC    .  A1 C0564000       mov eax,dword ptr ds:[4056C0]
004010B1    .  85C0              test eax,eax
004010B3    .  74 19             je short ncrackme.004010CE
004010B5    .  8B15 B8564000     mov edx,dword ptr ds:[4056B8]

然后按f8就由004010A3的retn跳到了
77D3647D    /0F85 885B0100       jnz USER32.77D4C00B
77D36483    |6A 00               push 0
77D36485    |FF7424 14           push dword ptr ss:[esp+14]
77D36489    |FF7424 14           push dword ptr ss:[esp+14]
77D3648D    |FF7424 14           push dword ptr ss:[esp+14]
77D36491    |FF7424 14           push dword ptr ss:[esp+14]
77D36495    |E8 03000000         call USER32.MessageBoxExA
77D3649A    |C2 1000             retn 10
77D3649D U> |55                  push ebp
77D3649E    |8BEC                mov ebp,esp
77D364A0    |6A FF               push -1

好象是又回到了user32.dll的领域!!

      

  

lnn1123
lnn1123
查看公开的个人资料
给lnn1123发送Email
查找lnn1123更多帖子
列出lnn1123的精华帖  

初级会员

资 料:
注册日期: Nov 2004
来自:
帖子: 158
精华: 1  26楼 2004-12-06,13:05      

--------------------------------------------------------------------------------
好,不错,是精辟啊,多写给小菜们看看

_____________________________@
Cracker+programmer+hacker=lnn1123

      

  

HillCat
HillCat
查看公开的个人资料
给HillCat发送Email
查找HillCat更多帖子

初级会员

资 料:
注册日期: Apr 2004
来自:
帖子: 51
精华: 0  27楼 2004-12-06,13:47      

--------------------------------------------------------------------------------
说实话,都要分析比较复杂的算法了,不太像是给刚入门的初学者的吧

_____________________________@
没必要跟生活一般见识,
就当是与现实开开玩笑。

      

  

riijj
riijj
查看公开的个人资料
给riijj发送Email
查找riijj更多帖子
列出riijj的精华帖  

『CrackMe & ReverseMe』版主

资 料:
注册日期: May 2004
来自:
帖子: 655
精华: 3  28楼 2004-12-06,15:22      

--------------------------------------------------------------------------------

引用:
--------------------------------------------------------------------------------
最初由 布丁 发布
为什么我用bp MessageBoxA中断后,按ctrl+f9运行到retn,然后f4,f7 跟进就来到这里的004010A1。
004010A1    .  33C0              xor eax,eax
004010A3    .  C2 1000           retn 10
004010A6    >  66:3D EB03        cmp ax,3EB
004010AA    .  75 22             jnz short ncrackme.004010CE
........
--------------------------------------------------------------------------------

004010A3的retn 是这段程序的完结
你在 retn 后继续跟踪的话, crackme 停止工作,返回系统,所以你会走进 user32.dll

( 这段程序的开始是源于使用者按下按钮 ,产生 WM_COMMAND 系统信息,系统依照 crackme 窗口的信息处理程序位置 (winproc 的位置),呼叫 crackme 的信息处理程序。当这段程序执行完毕,便返回系统。)

_____________________________@
好网页
http://www.securityfocus.org

      

  

easyweng
easyweng
查看公开的个人资料
给easyweng发送Email
查找easyweng更多帖子

初级会员

资 料:
注册日期: Dec 2004
来自:
帖子: 5
精华: 0  29楼 2004-12-08,17:44  好     

--------------------------------------------------------------------------------
楼主牛,菜鸟就需要这样的文章,哈哈

      

  

987654321
987654321
查看公开的个人资料
给987654321发送Email
查找987654321更多帖子

初级会员

资 料:
注册日期: Aug 2004
来自:
帖子: 45
精华: 0  30楼 2004-12-08,19:25      

--------------------------------------------------------------------------------
向你学习 谢谢你
2005-8-10 21:58
0
游客
登录 | 注册 方可回帖
返回
//