huowangwu1949 发表于 2013-5-11 06:57

160个CrackMe编号002[Afkayas]我会努力更新到160哒 来点热心吧

本帖最后由 huowangwu1949 于 2013-5-11 07:01 编辑

{:300_965:}我会努力更新哒 给点热心吧亲{:300_965:}
【文章标题】: 160个CrackMe编号002.1
【文章作者】: huowangwu1949
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
载入 运行 crackme
输入用户名和假码 确定 弹出错误
F12暂停 ALT+F9执行到用户返回 点击错误提示框 返回到这里
00402622   .8D4D E8       lea ecx,dword ptr ss:
从这里往上看是错误提示
004025E5   > \68 C81B4000   push Afkayas_.00401BC8                   ;UNICODE "You Get Wrong"

在网上是正确提示
0040258B   . /74 58         je short Afkayas_.004025E5
0040258D   . |68 801B4000   push Afkayas_.00401B80                   ;UNICODE "You Get It"
00402592   . |68 9C1B4000   push Afkayas_.00401B9C                   ;ASCII "\r"
看到这里大家最喜欢的jnz 或者je有出现了 nop掉 或者标志位爆破
这个crack很简单 但是下面有提示
004025A1   .68 A81B4000   push Afkayas_.00401BA8                   ;UNICODE "KeyGen It Now"

找到我的注册码 keygen it now
别着急 大家记着往上找 这就是要细心了

00402533   .FF15 28414000 call dword ptr ds:[<&MSVBVM50.__vbaStrCm>;msvbvm50.__vbaStrCmp

可以看到这一句
注意 关键的字符“strcmp” 这句的意思就是字符串string cmp 字符串比较
可以猜想到是比较真码和假码的字符串
我们在这里下断 试一下
继续运行 输入假码
断下来了
00402533   .FF15 28414000 call dword ptr ds:[<&MSVBVM50.__vbaStrCm>;msvbvm50.__vbaStrCmp
注意寄存器窗口 里面弹出了 AKA-1268007 测试后这就是用户名对应的注册码 (这个crackme好像就是死码 输入什么都是这个好像

我们可以继续逆推 这里弹出了注册码 那上面可能就是算法
我们继续往上面找 可以看到
00402530   .FFD3          call ebx                                 ;msvbvm50.__vbaStrMove; <&MSVBVM50.__vbaStrMove>

strmove 传递字符串到什么地方
在网上 有
0040251D   .68 701B4000   push Afkayas_.00401B70                   ;UNICODE "AKA-"
00402522   .51            push ecx                                 ; /String = "$R"
00402523   .FFD7          call edi                                 ; \__vbaStrCat
00402525   .8B1D 70414000 mov ebx,dword ptr ds:[<&MSVBVM50.__vbaSt>;msvbvm50.__vbaStrMove

看到AKA- 可以猜到上面就是对算出来的注册码嵌套上 AKA- 作为开头
我们可以下断 跑一下
0040250A   .FF15 04414000 call dword ptr ds:[<&MSVBVM50.__vbaHresu>;msvbvm50.__vbaHresultCheckObj

在这里下断 运行再一次
发现直接跑到了
00402533   .FF15 28414000 call dword ptr ds:[<&MSVBVM50.__vbaStrCm>;msvbvm50.__vbaStrCmp

004024FC   . /7D 12         jge short Afkayas_.00402510
004024FE   . |68 A0000000   push 0xA0
00402503   . |68 5C1B4000   push Afkayas_.00401B5C
00402508   . |56            push esi
00402509   . |50            push eax
0040250A   . |FF15 04414000 call dword ptr ds:[<&MSVBVM50.__vbaHresu>;msvbvm50.__vbaHresultCheckObj

jge 跳过了我们刚才下断的地方
我们可以在jge下断或者段首
00402310   > \55            push ebp

下断来继续调试
就可以看到 这个很2的算法的过程 取huowangwu1949 用户名的 h 到xxxx 算出一个数字 然后retn返回到一个call的下方
几次之后 就出来了这个 AKA-1268007
至此 这个crackme结束了
- -其实算法我根本不懂 只知道他是从那里开始取用户名的一部分开始 算。。。到算出结果
就是这样
为什么呢 大家找一下就可以发现一个判断



--------------------------------------------------------------------------------
【经验总结】
仔细观察 对英文单词敏感 strcmp strmove

--------------------------------------------------------------------------------
【版权声明】: 本文原创于huowangwu1949, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2013年05月10日 19:24:52



静观生命 发表于 2013-5-19 21:42

看不懂呀~好纠结!载入进去不知道该怎么做了

wgz001 发表于 2013-5-11 13:49

期待算法分析篇{:1_921:}

120609515 发表于 2013-5-11 13:04

哟西哟西·!!收藏一下

ebaodi 发表于 2013-5-11 08:09

支持下
这些CrackMe有一些我前几天做过,只不过没你分析得这么细,而且都是搜字符出来的。
期待着下一期。

流浪的猫眼石 发表于 2013-5-11 07:54

恩,不错不错~~加油吧

0xpeng 发表于 2013-7-19 13:37

AfKayAs.2.Exe楼主这个Nag去掉了吗,搞两天了一点思路都没有

Once_upon_a_tim 发表于 2013-8-26 13:53

必须学习学习

:-) 发表于 2013-9-9 17:24

0xpeng 发表于 2013-7-19 13:37 static/image/common/back.gif
AfKayAs.2.Exe楼主这个Nag去掉了吗,搞两天了一点思路都没有

现在搞定了没?我也纠结了好久,现在还是搞不定啊~搞定的话交流下吧

tisx89 发表于 2013-9-11 16:10

支持原创!!!
页: [1] 2
查看完整版本: 160个CrackMe编号002[Afkayas]我会努力更新到160哒 来点热心吧