新160个crackme -044-tsrh-crackme

news2024/12/24 0:14:16

运行分析

在这里插入图片描述

  • 提示去除NAG

在这里插入图片描述

  • 不去除NAG也能进入主窗口,需要破解Name和Serial

PE分析

在这里插入图片描述

  • ASM程序,32位,壳未知

去除NAG

在这里插入图片描述

  • ida搜索字符串,发现NAG弹窗标题字符串,双击进入函数

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

  • 找到了messagebox,即NAG位置00401079

在这里插入图片描述

  • 打开x64dbg,定位到该位置

在这里插入图片描述

  • ctrl + 9 使用NOP填充

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

  • 点击菜单栏下方的修补按钮
  • 在弹出来的窗口中点击修补文件,另存为1.exe

在这里插入图片描述

  • 打开1.exe,发现NAG去除成功

静态分析&动态调试

在这里插入图片描述

  • 回到ida最底部,对关键函数进行分析,注释如上,还需要对几个未知函数进行分析

在这里插入图片描述

  • sub_4011F3作用是给String赋值
  • String = ‘tsrh-’ + (Name_length+2003) + ‘-’

在这里插入图片描述

  • sub_40122E作用是,将Name每个字符进行计算,结果拼接在String后面

在这里插入图片描述

  • sub_401287的作用是,将Name每个字符串进行和String11位以后得字符进行计算,结果赋值给String第9位之后

在这里插入图片描述

  • sub_4012D8作用是判断Seirl和String前(10+length(Name))位是否相等

算法分析

Name = 'concealbear'
String = 'tsrh-' + str(len(Name) + 2003) + '-'

# sub_40122E
for i in range(len(Name)):
    v4 = ord(Name[i]) + 12
    String += hex((v4 + v4 - 17 - len(String)) ^ v4)[2:].upper()

# sub_401287
Strings = [ord(i) for i in String]
i = 1
while i != 16:
    if i == 1:
        j = Strings[i + 11] ^ (ord(Name[i - 1]) + 1)
    else:
        j = ord(Name[i - 1]) + 1
    while j < 65:
        j += 8
    while j > 90:
        j -= 3
    v2 = i + 9
    Strings[v2] = j
    i = v2 - 8
    if i == len(Name) + 1:
        break

Serial = "".join([chr(Strings[i]) for i in range(len(Name) + 10)])	      # 取String的前(len(Name) + 10)位

print(Name + '的Serial为:\n' + Serial)

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

  • 需要注意的是,验证时要重启程序,否则会因之前内存导致验证失败
  • 重启程序,输入Name和Serial,验证成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络压缩之动态计算(dynamic computation)

动态计算希望网络可以自由 地调整它需要的计算量。为什么期待网络可以自由地调整它需要的计算量呢? 因为有时候我 们可能同样的模型会想要跑在不同的设备上面&#xff0c;而不同的设备上面的计算资源是不太一样的。所以期待训练好一个网络以后&#xff0c;放到新的设备上面&am…

Python编程基础知识,让编程基础更加扎实(输出个人简介)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

考研--数学(相关公式)

解析几何 知识点1 A(x1,y1) B(x2,y2) 则AB长度 |AB| A、B中点的坐标 &#xff08;&#xff0c;) 知识点2 方程求解 ①点斜式&#xff1a; y-y0k(x0-x) ②斜率式&#xff1a; ykxb ③两点式&#xff1a; …

【笔记篇】Davinci Configurator CanNm模块

目录 1 简介1.1 架构概览2 功能描述2.1 特性2.2 初始化2.3 状态机2.3.1 网络模式2.3.1.1 重复报文状态2.3.1.2 正常状态2.3.1.3 准备休眠状态2.3.2 预休眠模式2.3.3 总线休眠模式2.4 被动模式(对于被动节点)2.5 NM报文格式2.6 NM报文发送2.6.1 重试第一次报文请求2.7 降低总线…

集成电路学习:什么是I2C内部集成电路总线

I2C&#xff1a;内部集成电路总线 I2C&#xff0c;全称Inter-Integrated Circuit&#xff0c;即内部集成电路总线&#xff0c;是由飞利浦公司&#xff08;现为恩智浦半导体&#xff09;在上世纪八十年代初开发的一种同步的串行通信总线。它以其接线简单、硬件实现容易、可扩展性…

Mysql8利用binlog实现数据恢复

文章目录 1binlog基本概念2 binlog相关常用命令3 binlog工具mysqlbinlog4 测试数据准备&导入数据5 模拟误删表6 数据恢复方式说明7 数据恢复分析(偏移量方式恢复)8 数据恢复9 验证10 数据恢复的局限性11 总结 1binlog基本概念 binlog即binary log&#xff0c;二进制日志文件…

【React原理 - 任务调度之中断恢复】

概览 本文紧接上文介绍React调度的时间分片中任务中断和恢复&#xff0c;由于篇幅过长&#xff0c;所以拆成了两篇。上文主要介绍了调度器中的优先级和调度任务的触发、注册和调度循环。本文主要从任务调度入手介绍调度任务之后发送了什么&#xff0c;即在协调器中如何进行到f…

【matlab】数组操作:寻找最大值和最小值及其位置ind2sub函数

【matlab】数组操作&#xff1a;寻找最大值和最小值及其位置ind2sub函数 本文将介绍如何在MATLAB环境中使用内置函数来创建数组&#xff0c;以及如何找到数组中的最大值和最小值及其对应的位置。通过示例代码&#xff0c;我们将一步步展示这一过程&#xff0c;帮助读者更好地理…

探索Python的测试之道:unittest库的奥秘

文章目录 探索Python的测试之道&#xff1a;unittest库的奥秘背景&#xff1a;为何选择unittest&#xff1f;什么是unittest库&#xff1f;如何安装unittest库&#xff1f;简单库函数使用方法场景应用场景一&#xff1a;测试数学运算场景二&#xff1a;测试异常处理场景三&…

armv8 memory model概述

概述 在armv8 架构中&#xff0c;它引入了更多的维度来描述内存模型&#xff0c;从而在此基础上进行硬件优化(但其中一些并未被主流的软件所接受)&#xff0c;在此做一些简单的整理&#xff0c;更多信息请参考 Arm spec 以及 AMBA 协议。下文主要是对Memory 和 Device 两大类的…

Python 算法交易实验86 QTV200日常推进-获取A股日交易额并统计

说明 上一篇说到&#xff0c;交易量可能可以作为策略规则的支持度分析&#xff0c;但是(我现在还不想付费买数据)现成的接口似乎并没有这样的统计。获取某一只股票的日交易数据是相对简单的&#xff0c;市场上也就不到5000只的股票&#xff0c;总数据量应该也不会超过18M(5000…

面向整个价值链的高可信度卫星测试解决方案

在动态行业格局中增强卫星任务能力 在罗德与施瓦茨&#xff0c;我们利用专业知识和量身定制的测试和测量解决方案为卫星行业提供支持。这包括帮助行业参与者满足完整测试路径的要求&#xff0c;以实现完美的系统性能&#xff0c;确保符合最新技术和标准。此外&#xff0c;我们…

2024年8月文章一览

2024年8月编程人总共更新了3篇文章&#xff1a; 1.2024年7月文章一览 2.《Programming from the Ground Up》阅读笔记&#xff1a;p95-p102 3.《Programming from the Ground Up》阅读笔记&#xff1a;p103-p116 8月&#xff0c;对自己而言是糟糕的一个月&#xff0c;两个项…

4-8 进入C语言,并跳转到loarder(1)

1 总体的逻辑。 从这里开始 写 loader 代码了。 1 首先是 从汇编跳转到 C原因呢&#xff0c; 2 然后是 &#xff0c; 再源码中新建新的loader 目录。 3 一直跳转到 loader 目录的C语言函数里面&#xff0c; 做循环操作。 2 代码&#xff1a; 首先 是从 start.s 跳转到 boot…

论文阅读:MicroNet: Towards Image Recognition with Extremely Low FLOPs

论文地址&#xff1a;https://arxiv.org/pdf/2011.12289 发表时间&#xff1a;2022 项目地址&#xff1a;https://github.com/liyunsheng13/micronet MicroNet是一种有效的卷积神经网络&#xff0c;使用极低的计算成本&#xff08;例如&#xff0c;在ImageNet分类上的6M FLOPs…

基于STM32的无线语音放大系统设计

本设计基于STM32设计了一种无线语音放大系统。该系统由语音采集模块、STM32核心控制模块、NRF24L01无线通信模块和语音放大模块组成。语音采集模块承担着对采集到的语音信号进行预处理的任务。STM32单片机负责控制整个系统的运行过程&#xff0c;包括数据处理、发送端的模数转换…

华为云征文|华为云Flexus X实例ultralytics模型yolov10深度学习AI部署与应用

目录 前言&#xff1a; 环境准备 购买服务器配置 连接服务器 安装Python 安装Pytorch 部署YOLOv10 拉取YOLOv10代码并安装相关依赖 数据集准备 Detect目标检测模型训练 训练数据集的配置文件 训练命令 识别命令 前言&#xff1a; 本实验演示从0到1部署YOLOv10深度…

tecplot宏批量导入数据

Tecplot新手进阶——使用tecplot宏操作批量处理数据输出图片&#xff08;详细步骤&#xff09; tecplot 宏的使用方法及代码改写 第一步&#xff1a;首先点击Scripting–>Record Macro&#xff0c;生成一个脚本文件&#xff0c;即.mcr文件 点击保存&#xff0c;会出现这个…

Activity的优雅跳转

需求1&#xff1a;跳转到下一个界面&#xff1a;NextActivity startActivity(Intent(this,NextActivity::class.java))需求2&#xff1a;跳转到下一个界面(并传参数)&#xff1a;NextActivity startActivity(Intent(this,NextActivity::class.java).apply { putExtra("pa…