Cruehead-CrackMe-3保姆级教程

使用工具:ollydbg(动态分析工具)、ultraedit(编辑工具,可以编辑十六进制)

第一步:

在放Cruehead-CrackMe-3.exe的地方新建一个CRACKME3.KEY文件,如下:

为什么要建一个这样的文件,而且文件名不能改?看接下来的代码截图,我会给出详细介绍。

图中标出的函数会比较你创的文件文件名是不是CRACKME3.KEY,如果是,则会返回88,并保存到eax中,不是则返回-1,也保存在eax中,看这行代码的下一行,eax中的值会和-1比较,如果不相等,则失败;相等,就进行下一步。

第二步:

这一步是判断CRACKME3.KEY文件中字符串的长度,大于等于18(先随便放18个字符),会进入下一步;否则失败。如何判断呢?接下来细说。

 上边截图所指出的那一行,里边的函数你可以理解为是为了获得CRACKME3.KEY这个文件中字符串的长度(这个函数也只会将文件的前18个字符保存到内存空间,18个以后的自动忽略),并把这个长度保存在ds:[0x4021A0],下一行代码就是和0x12(即十进制的18)比较,再接下来一行就是跳转了,不相等则跳转到失败处;相等就下一步。

第三步:

这一步会对CRACKME3.KEY文件中的前18个字符进行限定,前14个字符随意,后4个字符是由前14个字符算出。怎么算呢?往下看。

上边截图中有两个call,这两个call不能直接F8跳过,要按F7进入到函数内部看其中的逻辑。

①第一个call,先放截图:

这里边的逻辑是一个14层的循环,会将 CRACKME3.KEY中的前14个字符分别和A~N进行异或(第一个字符和A异或,第二个字符和B异或,以此类推),并将异或的结果相加放到ds:[0x4020F9]这个内存空间中,这是这个call主要做的事。

②第二个call,就是取出CRACKME3.KEY中的第15~18的字符,并将其放到EAX中,但是倒放,不是正放,即如果是文件中的是abcd,则eax中的是dcba。

重点!!!两个call中间有一个异或,是将ds:[0x4020F9]和0x12345678异或,这次异或结束,就是所需要的后4个字符了,这4个字符还是在ds:[0x4020F9]内存地址中,这四个字符是以十六进制的形式保存在内存空间中,所以再将其写进CRACKME3.KEY中可能有困难,这时候就用到了ultraedit编辑工具,具体怎么使用找度娘。

成功截图:

 

认真看完,你会知道这个crackme的大致思路,然后你再去看它,就会知道哪一步是在做啥了。

有什么看不明白的地方可以直接留言。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值