crackme_04

下载完程序运行一下:

 出现一个弹框,但是和以往不同的是它并没有确定按钮,只有输入用户名和密码然后下面一个框框,提示说如果注册成功将会出现一张朱茵的照片。然后随便输入了一些数字,既然没有确定按钮的话,那应该和其他东西有关,但是这里我们不知道注册码的算法是怎样的,所以我们导入OD看一下。

同样先搜索字符串:

发现有注册成功的字符串,跳转过去:

分析发现上面正好有一个跳转把我们最后注册成功的那一段给跳过了 ,然后我们可以看到跳转上面有一个计算,整个连起来就是如果那个内存地址里面的数等于0x85的话就继续往下执行,不等于就跳转到后面去执行。所以关键在那个DS:[ESI+0X30C]里面的数据,如果里面的数据为0x35的话程序就能继续往下运行,然后就会成功注册,所以我们现在应该去寻找上面的代码中是否有改变那个内存地址中数据的部分,但是从函数入口开始找一直到那里都没有改变那个地址中数据的部分。但是推理可以知道那个地址中的数据不可能是固定的,否则怎样都注册正确,所以可能会在其他地方有什么代码将0x85移入这个地址中或者其他的什么方法使里面的数据变成0x85,但是这个函数里面没有我们要找的代码,所以我们搜索看一下,我们通过查找>所有常量:

进去:

发现有一个mov 语句将0x85移入我们那个内存地址,应该就是我们要找的那一个了。点进去:

 

发现也是有一个跳转把它给要过了,而不跳的条件是上面那个指定内存DS:[ESI+0x30C]里面的值得是0x3e,也是发现上面的代码中没有改变这个内存地址中内容的部分。 所以预测还是要查找一下0x3e然后再跟进去看一下:

也有一个将0x3e移入内存地址的语句,跟进去:

 也是有一个跳转把它给跳过了,但是上面终于不再是cmp了。所以我们分析上面的代码:

 至于如何拼接,就是把我们用户名位数加上5之后的数字再加到Bird和dseloffc的中间,前面是:'黑头sun '然后后面接'-012-0k用户名'

但是还有一个问题,我们输入正确验证码要怎么办。在上面这个函数中只要我一输入密码,程序就中断了,所以判断它是输入框一有变化就检查,然后再到第一个函数下断点,其他断点都关掉,然后运行,发现需要单机才能使程序运行,而到第二个窗口需要双击才能运行,因为我们是反着推的,所以正确的应该是输入用户名,输入验证码,边输验证码程序边检查,输入完后,先双击,然后进入到第一个函数再单击,然后朱茵就出来了:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值