查壳
ida 打开
先看第一部分
进入被hash加密那部分(当然一开始是不知道的,后面知道函数后改的注释,正确应该是进行了一些处理
百度一下把这些不知道的函数百度出来
这是一个hash加密
这里是关于cryptcreatehash的信息
看标识 ALG_ID
这里的参数是0x8004
在官方提供的文档中是 sha1 的加密
然后用 python 提供的hashlib模块进行解密
下面是例子
import hashlib
# 定义要哈希的字符串
string = "Hello, world!"
# 创建 SHA-1 对象
sha1_hash = hashlib.sha1()
# 更新哈希对象,传入要哈希的字节数据
sha1_hash.update(string.encode("utf-8"))
# 获取 SHA-1 哈希值的十六进制表示
result_sha1 = sha1_hash.hexdigest()
print("SHA-1 哈希值:", result_sha1)
下面是脚本
脚本有很多不同我会进行逐步分析
import hashlib
string = '@DBApp'
for i in range(100000, 999999):
flag = str(i) + string
x = hashlib.sha1(flag.encode("utf8"))
y = x.hexdigest()
if "6e32d0943418c2c33385bc35a1470250dd8923a9" == y:
print(flag)
break
这是脚本
123321@DBApp
这是结果
这么写的原因首先前面的条件是相等才会继续
100000,999999 是因为不能小于100000
所以设置一个很大范围
因为不知道具体数据但是知道一个范围,直接设置一个很大的范围进行比对
这是与原本hashlib sha1脚本的区别
然后可以看第二部分
老样子进入sub_401019看看
这次前面并没有提供范围,但还是需要对里面进行分析
看参数
这次是0x8003
官方文档给的是md5加密
没有范围就直接扔进md5加密试试看
发现前面就是第二部分的密码
很多网站上md5解出来都是错的我感觉有些奇怪
依此把密码输入在程序
自动给了一个文件
里面就是flag
还有第二种解法,不过待补充