新160个crackme - 057-bbbs-crackme04

运行分析

在这里插入图片描述

  • 因软件版本老旧,需使用windows XP虚拟机运行
  • 有个SystemID,值为12345678
  • 需破解User ID和Password

PE分析

在这里插入图片描述

  • yC壳,32位

OD手动脱壳

在这里插入图片描述

  • 使用windows XP虚拟机,将程序拖入OD
  • 按一下F8,ESP变红,根据ESP定律设置硬件断点
  • 按一下F9,然后持续F8跟进,直到4017AC,发现上面有个push 0x60,判断4017AC为OEP
  • 右键 -> 用Ollydump脱壳调试进程,将修正为地址改为17AA,点击脱壳,保存为1.exe

在这里插入图片描述

  • 脱壳成功,发现是C++程序

静态分析&动态调试

在这里插入图片描述

  • ida搜索字符串,进入关键函数

在这里插入图片描述

  • 还需直到关键判断函数sub_4011B0的逻辑

在这里插入图片描述

  • 进入sub_4011B0,注释如上图,逻辑如下:
  • 1、Password长度为8
  • 2、提取Name每个字符进行计算,得到v6
  • 3、将system_id和Password转int
  • 4、若v8^v9==v6,返回1,即可弹窗成功

算法分析

from ctypes import *

UserID = 'concealbear'
SystemID = '12345678'

v6 = c_uint32(305419896)
for i in range(len(UserID)):
    v6.value = ((2 * v6.value) | (v6.value >> 7)) ^ ord(UserID[i])

Password = hex(int(SystemID,16) ^ v6.value)[2:]

print(UserID + '的Password为:\n' + Password)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值