首页
社区
课程
招聘
[旧帖] [原创]我的第一个crack分析~~ 0.00雪花
2007-12-8 10:28 3548

[旧帖] [原创]我的第一个crack分析~~ 0.00雪花

2007-12-8 10:28
3548
【文章标题】:我的第一个CrackMe算法分析
【文章作者】:今夜无雨
【作者邮箱】:89732558@qq.com
【作者主页】:想有,但没有~~
【作者QQ】:89732558
【破解工具】:OllyICE,Windows自带计算器
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
---------------------------------------------------------------
       
   今天轮到我在队里值班,一个字冷啊,没有办法,太无聊,打开电脑找几篇看雪精华看看,也学习了好久,在论坛上也逛了好久
今天来看看我到底学了多少东东,为了避免伤自信心,找个容易的吧,看到andy00大哥的一篇精华,先down下crack再说
(andy00大哥不会说我侵权吧~?~如果违规的话,请老大删除),一步步跟啊,最后发现我的注册名通过跟踪出来的注册码是正确的,
呵呵,嘻!!!就拿来献丑啦~~~
  开始啦~~~
点击   Ultra 字符串参考, 条目 地址=0040120B 反汇编=PUSH Crackme1.004020D9文本字符串=well done.well done.

呵呵 双击 向上拉啊拉啊,看到<JMP.&USER32.GetDlgItemTextA> 发现新大陆,直接在这按f2啊,运行,输入注册信息,断下
,嘻~~~开始f8啦~~

00401139   $  6A 32         PUSH 32                                  ; /Count = 32 (50.)
0040113B   .  68 F3204000   PUSH Crackme1.004020F3                   ; |Buffer = Crackme1.004020F3
00401140   .  68 C8000000   PUSH 0C8                                 ; |ControlID = C8 (200.)
00401145   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
00401148   .  E8 DE000000   CALL <JMP.&USER32.GetDlgItemTextA>       ; \GetDlgItemTextA
0040114D   .  83F8 00       CMP EAX,0                                ;  检查注册名是否输入
00401150   .  0F84 99000000 JE Crackme1.004011EF
00401156   .  83F8 04       CMP EAX,4                                ;  注册名大于4位
00401159   .  0F82 90000000 JB Crackme1.004011EF
0040115F   .  33C9          XOR ECX,ECX                              ;  ecx 清零
00401161   .  33DB          XOR EBX,EBX                              ;  ebx 清零
00401163   .  33F6          XOR ESI,ESI                              ;  esi 清零
00401165   .  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
00401168   >  0FBE81 F32040>MOVSX EAX,BYTE PTR DS:[ECX+4020F3]       ;  取注册名的第i位的ascii值 传给 eax
0040116F   .  83F8 20       CMP EAX,20                               ;  注册名的第i位ascii码值和20比较
00401172   .  74 07         JE SHORT Crackme1.0040117B               ;  相等跳走(参考andy00才知此处处理注册码中的空格的)
00401174   .  6BC0 04       IMUL EAX,EAX,4                           ;  EAX=i位的ascii码值(eax×4)(十六进制运算)
00401177   .  03D8          ADD EBX,EAX                              ;  将注册名的i位ascii码值×4  保存在ebx
00401179   .  8BF3          MOV ESI,EBX                              ;  将ebx赋值给 esi
0040117B   >  41            INC ECX                                  ;  控制循环
0040117C   .  3B4D FC       CMP ECX,DWORD PTR SS:[EBP-4]             ;  下面的JNE 由ecx 控制 什么时候 ecx=注册名的长度时 循环退出
0040117F   .^ 75 E7         JNZ SHORT Crackme1.00401168
00401181   .  83FE 00       CMP ESI,0                                ;  esi的值是各位ascii码的值×4 后相加得到的
00401184   .  74 69         JE SHORT Crackme1.004011EF
00401186   .  BB 89476500   MOV EBX,654789                           ;  ebx =654789
0040118B   >  0FBE81 F22040>MOVSX EAX,BYTE PTR DS:[ECX+4020F2]       ;  倒序取注册名
00401192   .  4B            DEC EBX
00401193   .  6BC3 02       IMUL EAX,EBX,2                           ;  ex=ebx×2
00401196   .  03D8          ADD EBX,EAX                              ;  EBX=ebx+eax
00401198   .  4B            DEC EBX
00401199   .  49            DEC ECX                                  ;  dec 影响zf 当ecx值为1时  下面的跳转结束
0040119A   .^ 75 EF         JNZ SHORT Crackme1.0040118B
0040119C   .  56            PUSH ESI                                 ; /将上面的esi经过运算的值 压栈
0040119D   .  53            PUSH EBX                                 ; |将上面的ebx经过运算的值 压栈
0040119E   .  68 C7204000   PUSH Crackme1.004020C7                   ; |bs-%lx-%lu
004011A3   .  68 BB214000   PUSH Crackme1.004021BB                   ; |s = Crackme1.004021BB
004011A8   .  E8 6C000000   CALL <JMP.&USER32.wsprintfA>             ; \wsprintfA
004011AD   .  58            POP EAX                                  ;  注册码出现的地方(注意啦~!~)
004011AE   .  58            POP EAX
004011AF   .  58            POP EAX
004011B0   .  58            POP EAX
004011B1   .  E8 01000000   CALL Crackme1.004011B7
004011B6   .  C3            RETN
004011B7   $  33C9          XOR ECX,ECX
004011B9   .  6A 32         PUSH 32                                  ; /Count = 32 (50.)
004011BB   .  68 57214000   PUSH Crackme1.00402157                   ; |Buffer = Crackme1.00402157
004011C0   .  68 C9000000   PUSH 0C9                                 ; |ControlID = C9 (201.)
004011C5   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004011C8   .  E8 5E000000   CALL <JMP.&USER32.GetDlgItemTextA>       ; \GetDlgItemTextA
004011CD   .  83F8 00       CMP EAX,0
004011D0   .  74 1D         JE SHORT Crackme1.004011EF
004011D2   .  33C9          XOR ECX,ECX
004011D4   >  0FBE81 572140>MOVSX EAX,BYTE PTR DS:[ECX+402157]       ;  取注册码的i为ascii码
004011DB   .  0FBE99 BB2140>MOVSX EBX,BYTE PTR DS:[ECX+4021BB]       ;  这里出现明码比较
004011E2   .  3BC3          CMP EAX,EBX                              ;  出现一位可以记录一位 ,虽然你的注册码和他不                                                                        一样,你可以更改标志位(zf的值)来达到继续跟踪的目的
004011E4   .  75 09         JNZ SHORT Crackme1.004011EF              ;  爆破的关键位置
004011E6   .  83F8 00       CMP EAX,0
004011E9   .  74 19         JE SHORT Crackme1.00401204
004011EB   .  41            INC ECX
004011EC   .^ EB E6         JMP SHORT Crackme1.004011D4
004011EE   .  C3            RETN
004011EF   >  6A 10         PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
004011F1   .  68 E4204000   PUSH Crackme1.004020E4                   ; |nope
004011F6   .  68 E9204000   PUSH Crackme1.004020E9                   ; |try again
004011FB   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
004011FE   .  E8 34000000   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA
00401203   .  C3            RETN
00401204   >  6A 40         PUSH 40                                  ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401206   .  68 D2204000   PUSH Crackme1.004020D2                   ; |solved
0040120B   .  68 D9204000   PUSH Crackme1.004020D9                   ; |well done.
00401210   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
00401213   .  E8 1F000000   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA
00401218   .  C3            RETN

这是我的注册信息
free_day
BS-23AE2AE9-3324

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mickytom 2007-12-13 13:25
2
0
可以啊,恭喜一下。
游客
登录 | 注册 方可回帖
返回