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

新160个crackme - 109-Jony-crackme

运行分析

在这里插入图片描述

  • 需破解用户名和密码

PE分析

在这里插入图片描述

  • Delphi程序,32位,无壳

静态分析&动态调试

在这里插入图片描述

  • 用x32dbg查找中文字符串,发现关键字符串地址0x408649

在这里插入图片描述

  • 回到ida的0x408649位置,进行动态调试,逻辑如下:
  • 1、先输入Name和Serial
  • 2、func_1是对Name进行处理,得到v71
  • 3、func_2是将v71第一位转str
  • 4、最后比较Serial和func_2得到函数对比,相等则返回成功

在这里插入图片描述

在这里插入图片描述

  • 对func_1进行动调调试分析,逻辑如下:
  • 1、取得循环次数v4 = v3 + 1 = (length(v2) >> 1) - 1 + 1
  • 2、func_3作用是获得Name
  • 3、ida未分析部分代码,切换至汇编代码进行分析:
  • (1)bl = Name[2^esi]
  • (2)al = Name[(esi^2)-1]
  • (3)bl = bl | al
  • (4)bl = bl + len(Name)
  • 4、最后执行func_4,将上面bl存放在结果中

算法分析

Name = 'concealbear'

length = (len(Name) >> 1)
Name_calc = [0] * length

for i in range(length):
    if (i ^ 2) - 1 == -1:
        Name_calc[i] = ((ord(Name[i ^ 2]) | 0) & 0xff) + len(Name)
    else:
        Name_calc[i] = ((ord(Name[i ^ 2]) | ord(Name[(i ^ 2) - 1]))&0xff) + len(Name)

Serial = str(Name_calc[0])

print(Serial)

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

  • 验证成功

http://www.kler.cn/a/427977.html

相关文章:

  • [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器
  • 集合的奇妙世界:Python集合的经典、避坑与实战
  • 关于bash内建echo输出多行文本
  • 记录一次Sqoop从MySQL导入数据到Hive问题的排查经过
  • Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
  • 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
  • ElementUI:el-tabs 切换之前判断是否满足条件
  • docker-3.docker权限问题
  • 开发一个AMT(automatic multicast tunnel)协议库 C++版本,Client,Server详细的设计
  • STM32F103单片机使用STM32CubeMX创建IAR串口工程
  • mac 安装python3和配置环境变量
  • 【Leetcode Top 100】146. LRU 缓存
  • Octo—— 基于80万个机器人轨迹的预训练数据集用于训练通用机器人,可在零次拍摄中解决各种任务
  • 网络资源模板--Android Studio 实现绿豆通讯录
  • 【springboot】 多数据源实现
  • 塑胶模具基本结构及塑胶成型原理
  • ubuntu 使用USB转TTL线连接树莓派4B
  • 【Android】ARouter源码解析
  • Python 信息科技赛课区一等奖教案(语音合成技术)
  • 【Elasticsearch】初始化默认字段及分词
  • Python中的数据可视化实战
  • spring-boot-starter-validation校验启动器简述
  • 基于SpringBoot校园台球厅人员与设备管理系统设计与实现
  • JavaScript Server-Sent Events (SSE) 教程
  • 国产GPU中,VLLM0.5.0发布Qwen2.5-14B-Instruct-GPTQ-Int8模型,请求返回结果乱码
  • 宝塔控制面板phpMyadmin打开卡主加载中状态