新160个CrackMe算法分析-003-Cruehead-CrackMeV3

🍬 博主介绍
👨‍🎓 博主介绍:大家好,我是 JTZ_ ,很高兴认识大家~
✨主攻领域:【WEB 安全】
✨兼攻领域:【逆向分析】【SSM 网页制作】【应用程序编写】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!



全文参考 B 站视频 新160个CrackMe算法分析
下载链接: 链接:https://pan.baidu.com/s/1BaROP5e9UbJMSN1sgOOKbA
提取码:z2i6

开始破解

  1. 使用 OD 打开软件后进行分析
    在这里插入图片描述

  2. 对代码区的代码进行分析
    在这里插入图片描述

    在圈中的一段代码中,要求我们需要有一个名为 : CRACKME3.KEY 的文件,
    如果没有这个文件,我们可以看到 在下一条语句中的 cmp eax ,0x1 ,就会将 EAX 的值变为 FFFFFFFF, 下一条的指令 JNZ 会判断是否为 零,如果不是就跳转,如果是就不跳转

  3. 我已经在电脑上创建了 CRACKME3.KEY 的文件, 并在其中书写内容为: abcdefghijklmnopqrstuvwxyz

  4. 现在我们照常进行,运行到 cmp eax,0x1 附近, 很明显这里发生了跳转
    在这里插入图片描述

  5. 我们查看下方代码:
    在这里插入图片描述

    可以发现,下方有一个 ReadFile 是读取文件的意思,那么意思也很明显,就是读取我们所创建的文化中的内容

  6. 我们执行完指令可以发现如下情况:
    在这里插入图片描述

    1. 为什么值读取了 18 个字符,这是因为在这些语句上面我们执行了一句 mov eax,0x12 , 而 0x12 的十进制就是 18 ,所以我们可以猜测这里是根据这个值来判断读取几个值的
  7. 继续执行到下面这一步,然后按 F7 步入
    在这里插入图片描述

  8. 步入后,我们对其中代码进行分析
    在这里插入图片描述

00401319  |.  B3 41         mov bl,0x41  		# 将 BL 的值修改为 41
0040131B  |>  8A06          /mov al,byte ptr ds:[esi] # 我们从文件中读取的数据被放在栈中,ds 的值就是栈底的位置,esi  就是相对于栈底的数据偏移地址,这里的意思是按照 abcdefghijklm 顺序读取,并将结果赋值给 AL
0040131D  |.  32C3          |xor al,bl  # 将 AL 和 BL 的值进行异或,并将值存放在 AL 中
0040131F  |.  8806          |mov byte ptr ds:[esi],al  # 将 AL 中的值存放到 ds  的 ESI 处
00401321  |.  46            |inc esi     # ESI 的值自增 1                            
00401322  |.  FEC3          |inc bl      # BL 的值自增 1
00401324  |.  0105 F9204000 |add dword ptr ds:[0x4020F9],eax # 将 EAX 的值和 ds:[0x4020F9](初始为 0) 值相加,并存储到 ds:[0x4020F9]
0040132A  |.  3C 00         |cmp al,0x0  # 判断字符串是否读完
0040132C  |.  74 07         |je short Cruehead.00401335 # 字符串读完跳转
0040132E  |.  FEC1          |inc cl # CL 的值自增 1
00401330  |.  80FB 4F       |cmp bl,0x4F  # Bl 的值和 0x4F  比较,这里的意思是限制计算的最长字符个数,限制为 15
00401333  |.^ 75 E6         \jnz short Cruehead.0040131B # 跳出循环
00401335  |> \890D 49214000 mov dword ptr ds:[0x402149],ecx # 
0040133B  \.  C3            retn
  1. 执行完毕按 F8 返回
    在这里插入图片描述

    我们可以看到原先的字符串之剩下了四位,

  2. 继续执行命令 这是一条异或指令
    在这里插入图片描述

    有人可能会对这里的 ds:[0x4020F9] 的值感到懵,建议滑到 八点 查看代码

  3. 继续运行指令
    在这里插入图片描述

    这里的 EAX 的值的解释:
    在这里插入图片描述

  4. 现在我们已经知道了这个程序的大致执行流程,那么我们也就可以编写代码来进行编写破解码了

编写代码,输出文件

我本来计划用 JAVA 写一下,奈何本人水平不够,粘贴老师的代码吧
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值