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

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

2004-11-26 11:57
218622
收藏
免费 7
支持
分享
最新回复 (267)
雪    币: 255
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
151
呵呵
楼主啊
我现在能看懂了
不过,我反汇编出来的有很多不一样啊
比如说:那个停的地址之类的拉
我都把那个<加密和解密>背过了
可是,现实就是比理论残酷啊
有很多的知识需要我掌握,能指点一下不?
看汇编是没有问题
就是那个什么工具太多了,HEX什么的
不能加指令啊
比如 nop nop 不能加
2007-8-8 13:08
0
雪    币: 255
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
152
00401368 >/$  55            push    ebp                                    ;  (initial cpu selection)
00401369 >|.  8BEC          mov     ebp, esp                           ;  保存指针
0040136B  |.  6A FF         push    -1                                       ;  送最大树
0040136D  |.  68 E8404000   push    004040E8                    ;  送地址
00401372  |.  68 9C1E4000   push    00401E9C                    ;  SE handler installation
00401377  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]  ;  送参数
0040137D  |.  50            push    eax                                       ;  送数
0040137E  |.  64:8925 00000>mov     dword ptr fs:[0], esp  ;  送地址
00401385  |.  83EC 58       sub     esp, 58                               ;  调整指针
00401388  |.  53            push    ebx                                         ;  堆栈保护
00401389  |.  56            push    esi
0040138A  |.  57            push    edi
0040138B  |.  8965 E8       mov     dword ptr [ebp-18], esp               ;  堆栈保护
0040138E  |.  FF15 44404000 call    dword ptr [<&KERNEL32.GetVersion>]    ;                              kernel32.GetVersion                  ;一般都得得到版本信息,
2007-8-9 15:40
0
雪    币: 255
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
153
004013C2  |.  E8 A1090000   call    00401D68                              ;  调用初始化函数

00401D68  /$  33C0          xor     eax, eax                              ;  A寄存器清零
00401D6A  |.  6A 00         push    0                                     ; /参数1最大值
00401D6C  |.  394424 08     cmp     dword ptr [esp+8], eax                ; |比较EAX寄存器,影响正负标志
00401D70  |.  68 00100000   push    1000                                  ; |InitialSize = 1000 (4096.)
00401D75  |.  0F94C0        sete    al                                    ; |设置初始化大小
00401D78  |.  50            push    eax                                   ; |Flags
00401D79  |.  FF15 80404000 call    dword ptr [<&KERNEL32.HeapCreate>]    ; \HeapCreate
00401D7F  |.  85C0          test    eax, eax
00401D81  |.  A3 08594000   mov     dword ptr [405908], eax
00401D86      74 15         je      short 00401D9D
00401D88  |.  E8 F80C0000   call    00402A85
00401D8D  |.  85C0          test    eax, eax                              ;  eax寄存器是 零吗?
00401D8F  |.  75 0F         jnz     short 00401DA0                        ;  不是零的话就跳
00401D91  |.  FF35 08594000 push    dword ptr [405908]                    ; /hHeap = NULL
00401D97  |.  FF15 7C404000 call    dword ptr [<&KERNEL32.HeapDestroy>]   ; \HeapDestroy
00401D9D  |>  33C0          xor     eax, eax
00401D9F  |.  C3            retn
00401DA0  |>  6A 01         push    1                                     ;  对A寄存器返回1
00401DA2  |.  58            pop     eax
00401DA3  \.  C3            retn                                          ;  返回
2007-8-9 15:44
0
雪    币: 255
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
154
00401D88  |.  E8 F80C0000   call    00402A85
00402A85  /$  68 40010000   push    140                                   ; /HeapSize = 140 (320.)
00402A8A  |.  6A 00         push    0                                     ; |Flags = 0
00402A8C  |.  FF35 08594000 push    dword ptr [405908]                    ; |hHeap = 003C0000
00402A92  |.  FF15 2C404000 call    dword ptr [<&KERNEL32.HeapAlloc>]     ; \HeapAlloc
00402A98  |.  85C0          test    eax, eax
00402A9A  |.  A3 D8564000   mov     dword ptr [4056D8], eax
00402A9F  |.  75 01         jnz     short 00402AA2
00402AA1  |.  C3            retn
2007-8-9 15:45
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
155
非常感谢!很受用!!!刚开始学,所以很多不懂,这个刚刚好
2007-8-12 22:14
0
雪    币: 204
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
156
收藏,学习,谢谢!!
2007-8-15 17:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
157
多谢楼主,照着学了不少东西
2007-8-24 15:08
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
158
怎么我这里执行的时候对不上号啊
77E16544 > 55               PUSH EBP   <---停在这里
77E16545   8BEC             MOV EBP,ESP
77E16547   51               PUSH ECX
77E16548   833D 1893E477 00 CMP DWORD PTR DS:[77E49318],0
77E1654F   0F85 EA220100    JNZ USER32.77E2883F
77E16555   6A 00            PUSH 0
77E16557   FF75 14          PUSH DWORD PTR SS:[EBP+14]
77E1655A   FF75 10          PUSH DWORD PTR SS:[EBP+10]
77E1655D   FF75 0C          PUSH DWORD PTR SS:[EBP+C]
77E16560   FF75 08          PUSH DWORD PTR SS:[EBP+8]
77E16563   E8 04000000      CALL USER32.MessageBoxExA
77E16568   C9               LEAVE
77E16569   C2 1000          RETN 10
77E1656C > 55               PUSH EBP

我这里是
7E45058C     55                  push ebp
7E45058D     8BEC                mov ebp,esp
7E45058F     833D BC04477E 00    cmp dword ptr ds:[7E4704BC],0
7E450596     74 24               je short USER32.7E4505BC
7E450598     64:A1 18000000      mov eax,dword ptr fs:[18]
7E45059E     6A 00               push 0
7E4505A0     FF70 24             push dword ptr ds:[eax+24]
7E4505A3     68 240B477E         push USER32.7E470B24
7E4505A8     FF15 C812417E       call dword ptr ds:[<&KERNEL32.InterlockedC>; kernel32.InterlockedCompareExchange
7E4505AE     85C0                test eax,eax
7E4505B0     75 0A               jnz short USER32.7E4505BC
7E4505B2     C705 200B477E 01000>mov dword ptr ds:[7E470B20],1
7E4505BC     6A 00               push 0
7E4505BE     FF75 14             push dword ptr ss:[ebp+14]
7E4505C1     FF75 10             push dword ptr ss:[ebp+10]
7E4505C4     FF75 0C             push dword ptr ss:[ebp+C]
7E4505C7     FF75 08             push dword ptr ss:[ebp+8]
7E4505CA     E8 2D000000         call USER32.MessageBoxExA
7E4505CF     5D                  pop ebp
7E4505D0     C2 1000             retn 10
而且
我们要返回 crackme 的领空里,有几个方法

1. 不停接 F8 ,一步一步地执行直至程序遇上 retn ,这是返回指令,它会带我们回去
2. 按 Ctrl + F9 ,这样 OD 会不停执行,直至遇到 retn 停下
3. 按一下返回的 retn ,再按 F4 ,程序会执行到光标所在的地方
4. 打开 OD 的 call stack window,看看我们从那里飞来,便设一个断点在那地方,之后 F9 运行

我们按一下 F2 清除断点,再按一下 77E16569 (retn) 那行,按 F4 执行到那里,再按一下 F7 进入 retn。

这里F4,直接跳出failed 对话框
2007-8-27 18:03
0
雪    币: 14
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
159
好东西,谢谢了,收下!
2007-9-4 15:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
160
非常感谢,我是菜鸟来的,多谢你的教程
2007-10-25 21:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
161
几年前的贴子,我今天仍然用他入门,感谢
2007-11-4 12:00
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
162
又学习了一遍.次次有收获.
2007-12-3 20:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
163
真的好感谢楼主!
2008-1-18 09:16
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
164
04年的帖子被顶了起来,哈哈,好帖要顶过奥运,冲出世界
2008-1-18 10:06
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
165
学习啊。。。。
2008-1-23 20:37
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
166
学习ING...................
2008-1-26 21:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
167
拿了学习。。。。
2008-3-26 19:07
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
168
温故知新       温故知新
2008-3-27 13:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
169
写得太有价值了,我狂踩!
2008-4-1 11:05
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rmb
170
终于看明白了到00401293位置的算法部分,想通了参数压进栈的过程就很容易明白。

继续研究~
2008-4-15 11:49
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
171
哈哈,好好学习。
2008-4-15 22:30
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
172
讲的相当详细,像我这样初学起来确实不错啊
2008-4-17 21:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
173
非常感谢楼主,对我这样的初级学者,真是太好了
2008-6-2 20:41
0
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
174
00401072     /75 1B         JNZ SHORT ncrackme.0040108F            ; |

直接NOP掉,哈哈
只会爆破
2008-6-3 12:56
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
175
感謝分享^^!!!
2008-6-4 06:15
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册