新160个crackme - 042-crackme

news2024/9/24 11:24:52

运行分析

在这里插入图片描述

  • 提示需要key.dat文件
    在这里插入图片描述
  • 同目录下创建一个key.dat,提示key.dat内容不对

PE分析

在这里插入图片描述

  • C++程序,32位,无壳

静态分析&动态调试

在这里插入图片描述

  • ida搜索字符串,找到关键字符串双击进入关键函数

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

  • 对关键函数进行分析,注释如上
  • 当满足67行公式时,将会执行下面函数
  • 发现89行有个VirtualProtect,即SMC
  • SMC(Self-Modifying Code,自修改代码)是一种特殊的代码技术,通过在运行时修改自身代码,使得程序的实际行为与反汇编结果不符。可以通过动态调试绕过

在这里插入图片描述

  • 一共有4个循环计算,其中第二个循环
  • 第一个循环:key内容每一位与key长度亦或
  • 第二个循环:决定key[3/4]
  • 第三个循环:计算byte_405030
  • 然后需满足byte_405030 * byte_405031 * byte_405032 != 2788340
  • 第四个循环:key中需含有0x20

算法分析


byte_405030 = [0x1E, 0xBF, 0xA2, 0x1A, 0xF3, 0x0B, 0xB7, 0x34, 0x4E, 0x4B,
  0x34, 0xC5, 0x0E, 0x38, 0x88, 0x4B, 0x32, 0xC5, 0x06, 0x38,
  0x88, 0x0A, 0x35, 0x43, 0xC0, 0x61, 0x42, 0x8D, 0x76, 0x4C,
  0x45, 0xBF, 0x0B, 0x47, 0xF2, 0x0E, 0x48, 0x3A, 0xC5, 0x06,
  0x38, 0x88, 0x0A, 0x30, 0x52, 0xC0, 0x61, 0x42, 0x8D, 0x76,
  0x4B, 0x1F, 0xBF, 0x0B, 0x47, 0xF2, 0x0E, 0x4D, 0x0A, 0xC5,
  0x06, 0x38, 0x88, 0x0A, 0x33, 0x68, 0xC0, 0x61, 0x42, 0x8D,
  0x76, 0x46, 0x63, 0xBF, 0x0B, 0x47, 0xF2, 0x0E, 0x42, 0x17,
  0xC5, 0x06, 0x38, 0x88, 0x0A, 0x3E, 0x33, 0xC0, 0x61, 0x42,
  0x8D, 0x76, 0x45, 0x6B, 0xBF, 0x0B, 0x47, 0xF2, 0x0E, 0x47,
  0x33, 0xC5, 0x06, 0x38, 0x88, 0x0A, 0x39, 0x1D, 0xC0, 0x61,
  0x42, 0x8D, 0x76, 0x40, 0x6B, 0xBF, 0x0B, 0x47, 0xBE, 0x46,
  0xCB, 0xC5, 0x1A, 0xC0, 0x61, 0x42, 0xC3, 0x3E, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x35, 0xCE, 0xBA, 0x5C, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x35, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x36, 0xCE,
  0xBA, 0x5D, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x36, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x37, 0xCE, 0xBA, 0x53, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x37, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x30, 0xCE,
  0xBA, 0x5B, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x30, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x31, 0xCE, 0xBA, 0x14, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x31, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x32, 0xCE,
  0xBA, 0x6F, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x32, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x33, 0xCE, 0xBA, 0x60, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x33, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x3C, 0xCE,
  0xBA, 0x79, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x3C, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x3D, 0xCE, 0xBA, 0x73, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x3D, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x3E, 0xCE,
  0xBA, 0x69, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x3E, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x3F, 0xCE, 0xBA, 0x60, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x3F, 0xC5, 0x0E, 0x38, 0xC4, 0x03, 0x38, 0xCE,
  0xBA, 0x5C, 0xC5, 0x1E, 0x38, 0xC6, 0x01, 0x38, 0xC5, 0x0E,
  0x38, 0xC4, 0x03, 0x39, 0xCE, 0xBA, 0x5D, 0xC5, 0x1E, 0x38,
  0xC6, 0x01, 0x39, 0x89, 0x0E, 0xC8, 0x4E, 0x4B, 0x34, 0x4E,
  0xC0, 0x71, 0x42, 0x48, 0x71, 0xB2, 0xC0, 0x79, 0x46, 0x48,
  0x79, 0xB2, 0xC1, 0x25, 0xC6, 0x1B, 0x3B, 0xC5, 0x0E, 0xC8,
  0xCD, 0x8B, 0x35, 0xC7, 0x0E, 0xC8, 0xC5, 0x06, 0x3C, 0x4D,
  0x06, 0xC8, 0x41, 0xF5, 0x25, 0xCB, 0x99, 0x41, 0x97, 0xC0,
  0x71, 0x42, 0x48, 0x71, 0xB2, 0x8D, 0x74, 0x41, 0x4B, 0xBF,
  0xAB, 0x16, 0xF7, 0xFF]
v8 = [0] * len(byte_405030)

# 假设key为4位,其中最后一位为'0'
for key_0 in range(32,128):
    for key_1 in range(32,128):
        for key_2 in range(32,128):
            for length in range(4,5):
                key = [key_0,key_1,key_2]
                res = [key_0,key_1,key_2,0]

                # 第一个循环
                for i in range(0,3):
                    key[i] ^= length
                key[0] ^= 0x54
                key[1] ^= 0x4d
                key[2] ^= 0x47

                # 第三个循环
                for i in range(0,3):
                    v8[i] = byte_405030[i] ^ key[i]

                if v8[0] * v8[1] * v8[2] == 2788340:
                    res[3] = 0x20 ^ key[0] ^ length
                    print("".join([chr(i)for i in res]))

在这里插入图片描述

  • 假设key为4位,进行算法爆破,得到2个结果
    在这里插入图片描述
  • 修改key.dat内容,双击程序运行,发现未弹出界面,是因为VirtualProtect导致的,后续分析难度过大,以后再分析

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

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

相关文章

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中,最大公因数(Greatest Common Divisor, GCD)是一个核心概念,它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述: 一、定义 设a和b是两个非零整数,若整数d同…

论文阅读——Compact Single-Feed Dual-Mode Antenna for Active RFID Tag Application

文章目录 摘要一、天线设计A. 天线结构B. 天线演进 二、天线仿真与测试总结 论文来源:https://ieeexplore.ieee.org/document/7247651 摘要 文章提出了一种用于主动射频识别(RFID)标签应用的紧凑型单馈双模天线。该天线由一个位于FR4基板上的…

【读点论文】Scene Text Detection and Recognition: The Deep Learning Era

Scene Text Detection and Recognition: The Deep Learning Era Abstract 随着深度学习的兴起和发展,计算机视觉发生了巨大的变革和重塑。场景文本检测与识别作为计算机视觉领域的一个重要研究领域,不可避免地受到了这波革命的影响,从而进入…

ARM32开发——(二十一)ADC系统工作原理

1. ADC硬件结构 内部结构简化框图 2. ADC转换模式 2.1 单次转换,非扫描模式 2.2 连续转换,非扫描模式 2.3 单次转换,扫描模式 2.4 连续转换,扫描模式 3. 规则组和注入组 4. ADC数据对齐 5. ADC转换时间 总转换时间采样时间12 个 CK_ADC 周期 6. ADC内部校准 ADC有一个内置自…

前端速通面经八股系列(六)—— Vue(下)

接上ueue Vue下篇 四、路由1. Vue-Router 的懒加载如何实现2. 路由的hash和history模式的区别1. hash模式2. history模式3. 两种模式对比 3. 如何获取页面的hash变化4. $route 和$router 的区别5. 如何定义动态路由?如何获取传过来的动态参数?6. Vue-rou…

读书笔记:《深入理解Java虚拟机》(2)

Java内存区域与内存溢出异常 Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里 面的人却想出来。 对于从事C、C程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”&#xf…

[Leetcode 435][Medium]-无重叠区间-贪心

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 题目地址 二、整体思路 要求移除区间的最小个数,也就是要求使得剩余区间互不重叠的最大区间数。 可以先将区间按右端点的值进行升序排序,然后遍历数组,在此基础上保留左端点>最小右端点的值…

【C++ Primer Plus习题】7.7

问题: 解答: #include <iostream> using namespace std;#define SIZE 10double* fill_array(double* begin, double* end) {for (begin; begin < end; begin){cout << "请输入值:";cin >> *begin;if (cin.fail()){cout << "非法数字…

PCIE-校验和纠错

各种编码&#xff1a; &#xff08;1&#xff09;ECRC/LCRC (为什么需要ECRC?) &#xff08;3&#xff09;PCRC&#xff08;Plaintext CRC&#xff0c;纯文本 CRC&#xff09;&#xff1a;是 IDE TLP 中的概念&#xff0c;在大多数方面&#xff0c;PCRC的计算方法与ECRC相…

【论文阅读】为大规模航空图像应用神经辐射场

【论文阅读】为大规模航空图像应用神经辐射场 ABSTRACTI. INTRODUCTIONV. EXPERIMENTSA. Evaluations on the entire datasetsA.1. State-of-the-Art comparisonA.2. Cloud-to-Cloud comparisonA.3. Accuracy and completeness B. Evaluations on the selected regionsB.1. Fi…

时序预测相关论文阅读笔记

笔记链接&#xff1a; 【有道云笔记】读论文&#xff08;记录&#xff09;https://note.youdao.com/s/52ugLbot用于个人学习记录。

Python-MNE-源空间和正模型07:修复BEM和头表面

有时在创建BEM模型时&#xff0c;由于可能出现的一系列问题(例如&#xff0c;表面之间的交叉)&#xff0c;表面需要手动校正。在这里&#xff0c;我们将看到如何通过将表面导出到3D建模程序blender&#xff0c;编辑它们&#xff0c;并重新导入它们来实现这一点。我们还将给出一…

峟思大坝安全监测系统:科技筑牢工程稳定的基石

在全球工程建设的宏伟蓝图中&#xff0c;大坝安全始终占据着举足轻重的地位。随着科技的日新月异&#xff0c;大坝安全监测系统作为守护工程稳定的“哨兵”&#xff0c;正步入一个前所未有的创新与发展阶段。这一系统不仅是大坝健康管理的关键工具&#xff0c;更是确保民生安全…

使用pgdump、pgrestore迁移数据表到docker部署的postgis

将本地数据同步到内网服务器&#xff0c;使用的postgis&#xff0c;表含空间字段 备份 本地使用pgadmin 4进行备份&#xff0c;pgrestore的命令参数找起来麻烦&#xff0c;这个可以界面操作&#xff0c;比较方便 说明 说明的截图来自pgadmin&#xff0c;点击这个打开 …

搭建数据库启前后端环境

1、 安装postgre&#xff0c;修改pg_hba.conf文件 2、安装dbeaer 3、任务管理器-服务&#xff1a;查看是否启动postgresql-x64-11 4、连接测试&#xff1a;新建数据库连接 http://127.0.0.1:14269/browser/# pgAdmin等于dbeaver 5、创建数据库&#xff1a; 6、启动后端…

数博会 | 百度智能云千帆大模型数据安全解决方案获优秀科技成果

8月28日&#xff0c;由国家数据局主办、贵州省人民政府承办的2024中国国际大数据产业博览会在贵阳盛大开幕。期间&#xff0c;2024中国国际大数据产业博览会领先科技成果发布会在贵阳国际生态会议中心举行。百度智能云千帆大模型数据安全解决方案&#xff0c;凭借大模型全生命周…

可信捐赠系统的设计与开发论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统可信捐赠系统信息管理难度大&#xff0c;容错率低&#x…

面试经典算法150题系列-找出字符串中第一个匹配项的下标

找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#xff1a…

前缀和差分【算法 13】

在算法领域中&#xff0c;前缀和与差分数组是两种高效处理区间问题的技术。它们能在特定问题场景下将时间复杂度从 (O(n)) 降到 (O(1))&#xff0c;适用于频繁的区间查询与修改操作。本文将简要介绍这两种技术及其应用。 1. 前缀和 (Prefix Sum) 前缀和是指一个数组的第 (i)…

【微信小程序】小程序的 MobX 绑定辅助库

小程序的 MobX 绑定辅助库 小程序的 MobX 绑定辅助库。 此 behavior 依赖开发者工具的 npm 构建。具体详情可查阅 官方 npm 文档 。 可配合 MobX 的小程序构建版 npm 模块 mobx-miniprogram 使用。 使用方法 需要小程序基础库版本 > 2.2.3 的环境。 也可以直接参考这个代码…