运行分析

在这里插入图片描述

  • 点击check,提示注册失败

PE分析

在这里插入图片描述

  • ASM程序,32位,无壳

静态分析&动态调试

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

  • ida搜索到关键字符串
  • 发现注册文件reg.key

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

  • 通过动态调试,获得计算机名称为’CONCEALBEAR’
  • 通过计算得到int_2

在这里插入图片描述

  • 接下来有一个剪贴板判断,将剪贴板的内容和int_2进行计算,得到int_1,要求int_1=0

在这里插入图片描述

  • 最后一步,获得key文件内容,长度大于7,头4为和后4位亦或的值要等于int_2

算法分析

ComputerName = 'CONCEALBEAR'

# 计算int_2
int_2 = 0
for i in range(len(ComputerName)):
    int_2 += ord(ComputerName[i])

# 得到Colipdata
Colipdata = ''
for i in range(len(ComputerName)-1):
    Colipdata += chr(int_2 // len(ComputerName))
Colipdata += chr(int_2//len(ComputerName) + int_2%len(ComputerName))

print("剪贴板内容为:" + Colipdata)

import binascii
regdata = '1234'    # regdata前4位

# 大小端序转换
def changes(input):
    res = []
    for i in range(len(input) // 4):
        res.append('0x' + hex(input[i * 4 + 3])[2:].zfill(2) + hex(input[i * 4 + 2])[2:].zfill(2) + hex(input[i * 4 + 1])[2:].zfill(2) + hex(input[i * 4])[2:].zfill(2))
        return res[0]

# 计算regdata后4位
reglist = [ord(i)for i in regdata]
regdata_changes = int(changes(reglist),16)
regdata2_changes = hex(int_2 ^ regdata_changes)[2:]
regdata2_list = []
for i in range(0,4):
    regdata2_list.append(int(regdata2_changes[i*2:i*2+2],16))
regdata2 = changes(regdata2_list)[2:]

print("regdata为:"+binascii.b2a_hex(regdata.encode()).decode() + regdata2)

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

  • 复制剪贴板内容,点击check,第一步通过,提示让我们注册,下面注册按钮变为可点击

在这里插入图片描述

  • 同目录下创建文件,名称为reg.key,用010编辑器打开,输入上面内容

在这里插入图片描述

  • 点击注册,发现返回成功字符串

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部