Crackme6-笔记

大神的链接:https://www.52pojie.cn/thread-610580-1-1.html
一、爆破思路
1、根据Dede找到输入用户名事件的入口处,0x442E04,OD下断,载入运行,输入用户名“52pojie.cn”,则在该处断下,找到关键跳转和关键函数处,noop关键跳转,则确定键可用
这里写图片描述
这里写图片描述
这里写图片描述
2、保存文件。发现输入用户名后,确定键可用;但是当输入验证码后,确定键不能用了,说明程序输入验证码后就立即判断是否正确了。根据Dede找到输入验证码事件的入口处,0x442C78,OD载入,在该处断下。
找到关键跳转,nop掉,则确定键可以用了
这里写图片描述
这里写图片描述
3、保存文件。当输入用户名和注册码后,点击确定键发现注册码重新变为0了!说明点击确定键后,程序就比较注册码是否正确啦!同理,找到确定键点击事件的入口处下断,找到关键跳转处,需要修改两处
这里写图片描述
这里写图片描述
4、保存文件。同理,来到点击清除按钮处,下断,找到关键跳转nop掉,成功啦!
这里写图片描述
这里写图片描述

二、破解算法
1、在输入用户名处下断,进入关键函数
这里写图片描述
发现算法是:循环,用户名的相近的两个字母的ascii相乘,并乘以第几个循环,+ 用户名的长度,累加,得到的结果-注册码处理后的结果,判断是否等于0x29A,如果等于则确定键可用,如果不等于则确定键不可用。
python实现:

#第1个算法:找到正确的注册码使确定键可用
string = "52pojie.cn"
list = []
for i in string:
    list.append(ord(i))
print list   #list = [53, 50, 112, 111, 106, 105, 101, 46, 99, 110]

sum = 10
i = 0
while i < 9:  # for循环不可以的,因为会超出边界!
    sum = sum + list[i] *  list[i+1] * (i + 1)
    i = i + 1
print sum # 384464
print sum -666 # 0x29A = 666; 注册码为383798

验证一下:
这里写图片描述

2、在输入注册码383798处下断,进入关键函数
发现关键函数和输入用户名的关键函数相同!说明二者的输入都和确定键是否可用有关!
这里写图片描述

3、输入用户名和正确的注册码,进入点击确定事件的关键函数,
这里写图片描述
算法是:循环,从注册码的最后一个字母开始,用其ascii自乘,再乘以其长度,除以0x19,得到的余数+0x41,转为字母,得到的结果与用户名相比较,如果相同则可以点击隐藏
结果为:“BWDAUQ”

4、进入清除按钮事件的关键函数:
这里写图片描述
算法为:用户名的第5个字母的ascii形式/7,得到的余数+2,求其阶乘;循环,用户名的每个字母的ascii形式乘以刚刚得到的结果(此题为6),加上第几次循环-1,得到的结果-0x7A69,如果等于注册码则成功,否则失败!
结果为:0x14EE-0x7A69 = -25979
python实现:

#第2个算法:根据用户名计算出注册码,实现清除键的隐藏
import math
name = "52pojie.cn"
char = ord(name[4])%7 + 2
b = math.factorial(char) # 阶乘

list = [] #[53, 50, 112, 111, 106, 105, 101, 46, 99, 110]
for i in name:
    list.append(ord(i))

sum = 0
j = 0
for i in list:
    sum += i * b
    i += 1
result = sum - 31337
print result # -25979

输入用户名和注册码后,ok键变为可用,同时点击清除按钮,按钮消失;但是点击ok键无反应,说明这个注册码只能隐藏清除按钮无法隐藏ok按钮
这里写图片描述

5、输入用户名和上个注册码后,重新在ok点击事件处下断,进入关键函数,发现结果为:“AACVAT”
这里写图片描述
python实现:

# 第3个算法:根据注册码计算出用户名,实现确定键的隐藏
code = '-25979'
list = [] # [45, 50, 53, 57, 55, 57]
for i in code:
    list.append(ord(i))
print list
i = 0
c = ""
while i < len(list):
    a = list[i]*list[i]*(i + 1)
    b = a % 25 + 65
    i += 1
    c += chr(b)
print c # AACVAT

则将此作用户名输入,成功隐藏
这里写图片描述
综上,程序的流程是输入用户名和注册码点击清除键,实现隐藏同时ok键可用,再输入用户名实现ok键的隐藏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值