160个CrackMe之002

本文介绍了通过下载Msvbvm50.dll解决程序依赖问题后,进行程序逆向分析的过程。利用Ollydbg调试工具,找到报错的跳转指令并修改,简化了爆破步骤。文章还详细解析了程序中的算法,包括字符串长度计算和特定数值的生成,最后展示了如何编写简单的注册机来生成序列号。
摘要由CSDN通过智能技术生成

这道题就很简单

有了第一道题目的支持 我们就能做

首先 我们先要下载Msvbvm50.dll

Msvbvm50.dll下载_Msvbvm50.dll最新版下载[修复系统丢失文件]-下载之家

然后我们可以运行程序了

 比之前那个还简单

就是输入 然后比对 报错或者成功

开始逆向分析

先去常量中进行查找

 找到了 这里就是我们输入错误的报错

爆破

所以我们进去看看

 这里一下就能看懂 ollydbg给我们了 je的跳转 就是跳转到报错

我们只需要把跳转改为nop即可

 这道题的爆破相当简单

算法

算法才是头疼的 但是也不难 我们发现爆破的je跳转 我们就在上面找到

这个程序运行的开头

 一般都是先压入ebp来保存前面的地址 然后调用程序

我们重新开始运行 然后输入一个自己这次记住的id

 我选择12313

出发断电

触发断点

 开始F8进行单步调试

 运行到这个的时候 出现了12313 说明读取了我们的id

 我们能发现这里 eax为5

经过尝试 这个就是读取长度 或者我们可以直接搜索上面的函数

 说明就是长度 len(12313)=5

 

 这里发生计算

我们可以自己计算一下 就是5*17CFB

 

 发现是 770E7

 这里就是把 EDX变为 31 不管你换一个id 也是一样 说明就是把常量31存入edx

下一条就是把edi和31进行加法 edi里面是 770E7

 

 得出来是77118

然后是10进制是487704

然后在后面的爆破中 能发现就是10进制的 加上AKA-的前缀

 于是我们可以开始写注册机

a=input("输入你的用户名来取得序列号:")
b=len(a)
c=b*0x17CFB
d=c+0x31
print('AKA-'+str(d))

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值