新160个crackme - 091-DOSKEY-CRACKME2

运行分析

  • 需破解Name和Password

PE分析

  • upx壳,32位

手动脱壳

  • x32dbg打开程序,按一下F8,根据ESP定律,在此处下断点
  • 按一下F9,两下F8,来到OEP处00401000
  • 打开Scylla,点击转储保存文件
  • 点击IAT自动搜索,点击获取导入,点击恢复转储,选择上一步保存的文件

  • 使用DIE查看,发现脱壳成功,程序为MFC程序

静态分析&动态调试

  • ida搜索字符串,双击进入

  • 通过静态分析,逻辑如上

  • 3个变量的值如上

算法分析

python 复制代码
username = 'concealbear'
str_1 = 'biq2jrxc-ape3*dsynhz8gt5o7f0uml4v19w6+/k'
str_2 = '-apeoiq2jrml4xcsw6ynh7f0uv19+3/k*dbz8gt5'
str_3 = 'h7f0uv19+3/kjrml4xcsw6yn*dbz8gt5-apeoiq2'

username_encode_1 = []
for k in range(len(username)):
    v5 = 41 * ord(username[k]) % 40;
    v5 = str_1[v5];
    username_encode_1.append(v5)

for i in range(len(username)):
    v8 = 31 * ord(username[i]) % 40;
    v8 = str_2[v8];
    username_encode_1.append(v8)

for j in range(len(username_encode_1)):
    username_encode_1[j] = str_3[11 * ord(username_encode_1[j]) % 40]

print("".join(username_encode_1))
  • 验证成功
相关推荐
xixiaoyunya1 分钟前
局域网多电脑文件互备:从传统痛点到自动化方案的技术路径
网络·安全
荆棘鸟智能1 分钟前
AI算法持续学习与迭代怎么做?从数据闭环到灰度发布的MLOps工程实践
人工智能·算法·架构·边缘计算
Lyyaoo.6 分钟前
【二分查找】【中等】搜索二维矩阵/排序数组的第一位和最后位置/搜索旋转排序数组/旋转排序数组中的最小值
java·数据结构·算法
yume_sibai7 分钟前
11-Rust 不安全编程(unsafe 关键字 + 裸指针 + FFI + 内联汇编 + 内存安全保证)
汇编·安全·rust
土司大王14 分钟前
LeetCode hot100——153.寻找旋转排序数组中的最小值:Java 二分模板与 O(log n) 分析
java·算法·leetcode
光电的一只菜鸡16 分钟前
isp中关于锐化对图像清晰度的影响
算法
AngusKit16 分钟前
开源扫描器拼盘 vs AngusSecurity
安全·安全性测试·代码安全·漏洞检测·trivy·安全扫描·gitleaks
山东科恩光电21 分钟前
安全触边在自动化设备中的应用与风险控制方案分析
安全
汇智信科30 分钟前
企业综合信息门户设计:基于 CMS 扩展的全要素内容与知识生态方案
安全·汇智信科·hsim·fastclaw·汇智龙虾
土司大王37 分钟前
LeetCode hot100——4.寻找两个正序数组的中位数:Java 二分第K小 递归裁剪
java·算法·leetcode