新160个crackme - 028-ArturDents-CrackMe#3

运行分析

在这里插入图片描述

  • 需破解Name和Serial,点击Verify无反应

PE分析

在这里插入图片描述

  • PEtite 2.x壳,32位

手动脱壳

  • 因为是win7及之后的系统存在ASLR,将随机化进程的内存地址空间布局,所以这里使用windows xp虚拟机 + OD进行脱壳

在这里插入图片描述

  • 用VMware打开windows xp虚拟机,将程序拖入OD
  • ESP定律找OEP(程序入口点):按2下F8,发现寄存器仅ESP变红,根据ESP定律判断不变,在这里右键->HW break[ESP]下硬件断点

在这里插入图片描述

  • 接下来按F9后观察,标题栏显示当前模块为ntdll系统模块,直接跳过

在这里插入图片描述

  • 继续按2下F9跳过ntdll系统模块,来到AD_CM#8模块,观察无OEP特征,跳过
  • 接下来又是ntdll系统模块,2下F9跳过

在这里插入图片描述

  • 终于来到疑似OEP处,发现8BEC前面还有一个55,一般55是函数头,判断004584C0为OEP

在这里插入图片描述
在这里插入图片描述

  • 右键 -> 用OllyDump脱壳调试进程 -> 修正为:584C0 -> 脱壳 -> 保存为1.exe

在这里插入图片描述

  • 发现壳已去除,是Delphi程序

静态分析&动态调试

在这里插入图片描述

  • ida搜索字符串,发现关键字符串


在这里插入图片描述

在这里插入图片描述

  • 先静态分析,发现两个弹窗函数,但未知函数还是很多
  • 发现aAdcm3 = “ADCM3-”

  • 程序分析结果如下:
  • 将Name每个字符的ascii值整除3,再转十进制字符串,拼接起来
  • Serial 与 "“ADCM3-” + 上一步计算的值比较,相等则弹出成功

算法分析

Name = 'concealbear'
Serial = ''
aAdcm3 = "ADCM3-"

Serial = aAdcm3
for i in range(len(Name)):
    Serial += str(ord(Name[i])//3)

print(Name + '的Serial为:\n' + Serial)

在这里插入图片描述
在这里插入图片描述

  • 验证成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值