新160个crackme - 089-fornixcrackme1

运行分析

在这里插入图片描述

  • 需要破解Name和Serial

PE分析

在这里插入图片描述

  • ASM程序,32位,无壳

静态分析&动态调试

在这里插入图片描述

  • ida搜索找到关键字符串

在这里插入图片描述

  • 动态分析关键函数,逻辑如上图,通过Name计算得到char_1,亦或后对比Serial,相等则返回成功信息

在这里插入图片描述

  • 分析func_1,作用是提取Volume_Name和Name前5位进行计算,得到char_1前5位

在这里插入图片描述

  • 分析func_2,作用是提取Volume_Name和Name前5位进行计算,得到char_1后4位

在这里插入图片描述

  • 分析cmp函数
  • 先提取Serial每一位,亦或9后得到char_2
  • 再判断char_2与char_1是否相等,相等返回成功

算法分析

Name = 'concealbear'

import win32api
Volume_Name = win32api.GetVolumeInformation("c:\\")[0]	# 获得c盘卷名称

Volume_Name += Name
char_1 = []
Serial = []
def func_1():
    for i in range(0,5):
        char_1.append(((ord(Name[i]) ^ ord(Volume_Name[i])) & 0x1F | 0x40) ^ 9)
    char_1[-1] = 36
func_1()

def func_2():
    for i in range(0,5):
        char_1.append(((ord(Volume_Name[i]) ^ ord(Name[i])) & 0xF | 0x30) ^ 9)
    char_1[-1] = 0
func_2()

for i in range(len(char_1)):
    Serial.append(char_1[i] ^ 9)

print(Name + '的Serial为:\n' + "".join([chr(i)for i in Serial]))

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

  • 验证成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值