新160个crackme - 026-KeygenMe

运行分析

在这里插入图片描述

  • 需要破解Name和Serial

PE分析

在这里插入图片描述

  • ASM程序,32位,无壳

静态分析&动态调试

在这里插入图片描述

  • ida搜索字符串,找到关键字符串

在这里插入图片描述

  • 先静态分析,结果如上

在这里插入图片描述

  • 动调后发现,byte_403037为Name[-1]的地址
  • *(_DWORD *)Serial表示取出Serial的32位bit,因为大小端存储,取值时为倒序,举例:01020304变为04030201

算法分析

import binascii

Name = 'A'
Serial = ''

v5 = 0
for i in range(len(Name)):
    v5 = 2 *(ord(Name[i]) * ((ord(Name[i]) >> 1) + 3) - ord(Name[i]) + ord(Name[i]) * ord(Name[i])+ v5)
Serial = binascii.a2b_hex(hex(v5)[2:]).decode()[::-1]

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

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

  • 因为结果涉及不可见字符,不是所有Name都有可见字符的Serial,这里找了个Name='A’满足要求
  • 验证成功(验证前要重启程序,否则可能因之前输入的数据导致结果不正确)
  • 想找到更多Name和Serial组合可以进行爆破,这里就不写了
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值