当前位置: 首页 > news >正文

新160个crackme - 041-genocide1

运行分析

在这里插入图片描述

  • 提示未找到Reg.dat文件

在这里插入图片描述

  • 同目录下创建Reg.dat即可打开程序
  • 点击About -> Register,打开注册窗口,但是无法点击OK键

PE分析

在这里插入图片描述

  • upx壳,32位

在这里插入图片描述

  • upx -d crackme.2.exe脱壳

在这里插入图片描述

  • 发现是Delphi程序

静态分析&动态调试

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

  • DeDeDark打开程序进行分析,发现了注册窗体
  • OK按钮:Button1Click(00437EA0)
  • Cancel按钮:Button2Click(00437DFC)
  • Serial输入框:EditChange1-4(00437E70、00437E7C、00437E88、00437E94)

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

  • 对上面地址逐个分析
  • 发现ida跳转至00437E70,再进入sub_437D1C函数按F5,疑似关键函数

在这里插入图片描述

  • 动调发现按serial右边按钮时会触发sub_437D1C函数,继续向下动调找到关键函数sub_437BDB
    在这里插入图片描述
  • 继续动调分析,发现两个循环
  • 第一个是将Name前4个字母分别整除10,若结果大于10就再整除10
  • 第二个是判断Name前四位计算后的值,要分别与4个serial相等

算法分析

Name = 'concealbear'
Serial = ''for i in range(0,4):if ord(Name[i]) // 10 >= 10:Serial += str(ord(Name[i])//100)else:Serial += str(ord(Name[i]) // 10)print(Name + '的Serial为:\n' + Serial)

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

  • 用按钮填入正确serial后,OK按钮编程可点击了,点击OK弹出破解成功提示

http://www.mrgr.cn/news/11757.html

相关文章:

  • Servlet
  • linux 安装kafaka单体服务
  • 每日一问:GET请求和POST请求的区别
  • 仓颉语言:静态类型与垃圾收集,让编程更安全高效
  • 《JavaEE进阶》----2.<Spring前传:Maven项目管理工具>
  • 深入解析 Tomcat 的六大核心组件
  • Quartz定时任务
  • 项目策划书六度自由双足机器人
  • K-means算法原理及应用场景
  • 数学建模学习(119):基于R型聚类法与Q型聚类法的分类分析
  • nacos的配置更改了还要重启服务才生效
  • 李宏毅 机器学习与深度学习【2022版】 02
  • 【Leetcode 1876 】 长度为三且各字符不同的子字符串 —— 直接比较
  • AI学习记录 - 怎么理解 torch 的 torch.nn.BatchNorm2d
  • JavaScript 动画库
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • 37 使用LDT(3)
  • 03_React 收集表单数据和 组件生命周期
  • 【Qt】容器类控件GroupBox
  • Python自动化办公2.0 课程更新