新160个crackme - 038-Eternal Bliss.3

news2024/9/23 9:23:28

运行分析

在这里插入图片描述

  • 需要输入注册码

PE分析

在这里插入图片描述

  • VB程序,32位,无壳

静态分析&动态调试

在这里插入图片描述

  • 使用VB Decompiler静态分析,找到关键函数入口点402AC4

  • ida跳转至402AC4,按F5反汇编,发现有407行代码,配合VB Decompiler得到的代码耐心分析
    在这里插入图片描述
  • 首先在137行得到var_44 = 101
    在这里插入图片描述
  • 动调至212行,发现v19 = 0x2DC

Private Sub Command1_Click() '402AC4
  Dim var_138 As Variant
  loc_00402B19: On Error GoTo loc_00403491
  loc_00402B93: Serial_1 = Serial
  loc_00402B9B: serial_2 = Serial_1
  loc_00402C27: For i = 1 To Len(Serial_1) Step 1           'serial每个字符ascii码乘2的值相加,最终值重命名为serial_sum
  loc_00402C2C:   var_184 = i
  loc_00402C42:   GoTo loc_00402D83
  loc_00402C77:   serial_1 = Serial
  loc_00402C7F:   serial_2 = serial_1
  loc_00402D21:   serial_i = Asc(CStr(Mid(serial_1, CLng(i), 1)))    
  loc_00402D2C:   serial_sum = serial_sum + serial_i
  loc_00402D34:   serial_sum = serial_sum + serial_i        '错误代码,删除
  loc_00402D78: Next i
  loc_00402D7D: var_184 = Next i
  loc_00402D83: ' Referenced from: 00402C42
  loc_00402D8A: If var_184 Then GoTo loc_00402C47
  loc_00402D93: var_20 = var_20 + var_44                  '通过动调得到var_44 = 0x65
  loc_00402D9C: var_20+var_44 = var_20+var_44 + var_50
  loc_00402DA5: var_20+var_44+var_50 = var_20+var_44+var_50 + var_44
  loc_00402DAE: var_20+var_44+var_50+var_44 = var_20+var_44+var_50+var_44 + var_34
  loc_00402DB7: var_20+var_44+var_50+var_44+var_34 = var_20+var_44+var_50+var_44+var_34 + var_3C
  loc_00402DD2: If serial_sum = var_20+var_44+var_50+var_44+var_34+var_3C+var_44 Then       '条件1:serial_sum要等于固定值,通过动调得到固定值为0x2dc
  loc_00402E08:   serial_1 = Serial
  loc_00402E10:   serial_2 = serial_1
  loc_00402E79:   serial_3 = Serial
  loc_00402E81:   serial_4 = serial_3
  loc_00402EEA:   serial_5 = Serial
  loc_00402EF2:   serial_6 = serial_5
  loc_00403090:   var_150 = (((Asc(CStr(Mid(serial_1, 2, 1))) - var_44) + 1 And (Asc(CStr(Mid(serial_3, 4, 1))) - var_44) + 1) And (Asc(CStr(Mid(serial_5, 7, 1))) - var_44) + 1)       '条件2:serial第2、4、7的ascii码值=var_44=0x65,即字母'e'
  loc_00403115:   If var_150 Then
  loc_0040313E:     var_48 = var_48 * var_20 * var_44
  loc_00403147:     If var_48 = var_4C Then               '动调得到var_48和var_4C为固定值,一定相等       
  loc_00403165:       var_138 = Form1.Text1
  loc_0040317E:       var_138.Text = "You have cracked it!!"
  loc_00403186:       serial_2 = var_138
  loc_004031DF:       var_138 = Form1.Text1
  loc_004031F5:       var_138.Enabled = False
  loc_004031FD:       serial_2 = var_138
  loc_00403256:       var_138 = Form1.Command1
  loc_0040326C:       var_138.Visible = False
  loc_00403274:       serial_2 = var_138
  loc_004032CD:       var_138 = Form1.Command3
  loc_004032E3:       var_138.Visible = True
  loc_004032EB:       serial_2 = var_138
  loc_00403344:       var_138 = Form1.Command3
  loc_0040335A:       var_138.Enabled = True
  loc_00403362:       serial_2 = var_138
  loc_004033BB:       var_138 = Form1.Command3
  loc_004033D4:       var_138.Caption = "&Again!"
  loc_004033D9:       serial_2 = var_138
  loc_0040342F:       var_138 = Form1.Command2
  loc_00403443:       var_138.SetFocus
  loc_0040344B:       serial_2 = var_138.SetFocus
  loc_00403491:     Else
  loc_00403491:     End If
  loc_00403491:   End If
  loc_004034A9:   var_138 = Form1.Text1
  loc_004034C2:   var_138.Text = "Wrong! Try Again!!"
  loc_004034CA:   serial_2 = var_138
  loc_00403523:   var_138 = Form1.Text1
  loc_00403539:   var_138.Enabled = False
  loc_00403541:   serial_2 = var_138
  loc_0040359A:   var_138 = Form1.Command1
  loc_004035B0:   var_138.Visible = False
  loc_004035B8:   serial_2 = var_138
  loc_00403611:   var_138 = Form1.Command3
  loc_00403627:   var_138.Visible = True
  loc_0040362F:   serial_2 = var_138
  loc_00403688:   var_138 = Form1.Command3
  loc_0040369E:   var_138.Enabled = True
  loc_004036A6:   serial_2 = var_138
  loc_004036FF:   var_138 = Form1.Command3
  loc_00403713:   var_138.SetFocus
  loc_0040371B:   serial_2 = var_138.SetFocus
  loc_0040375C: End If
  loc_0040375C: Exit Sub
  loc_00403766: GoTo loc_004037ED
  loc_004037EC: Exit Sub
  loc_004037ED: ' Referenced from: 00403766
End Sub
  • 对VB Decompiler得到的代码进行分析,满足正确Serial需满足以下条件:
  • 1、将serial每个字符ascii码的值相加,最终值为serial_sum = v19 = 0x2dc
  • 2、serial第2、4、7的ascii码值 = var_44=0x65,即字母’e’

算法分析

for serial_0 in range(33,127):
    for serial_2 in range(33,127):
        for serial_4 in range(33, 127):
            for serial_5 in range(33, 127):
                serial = chr(serial_0) + 'e' + chr(serial_2) + 'e' + chr(serial_4) + chr(serial_5) + 'e'
                serial_sum = 0
                for i in range(len(serial)):
                    serial_sum += ord(serial[i])
                if serial_sum == 0x2dc:
                    print('正确Serial为:' + serial)
  • 仅考虑serial为7位的情况
  • 仅考虑可见字符,即ascii码为33~127

在这里插入图片描述

  • 跑了几分钟,得到76076个结果

在这里插入图片描述

  • 随便找几个测试,验证成功

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

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

相关文章

力扣面试经典算法150题:跳跃游戏 II

跳跃游戏 II 今天的题目是力扣面试经典150题中的数组的中等难度题:跳跃游戏II。 题目链接:https://leetcode.cn/problems/jump-game-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个非负整数数组 nums&#xff0…

springboot框架中filter过滤器的urlPatterns的匹配源码

如下图所示,我使用WebFilter注解的方式定义了一个过滤器,同时定义了过滤器的过滤条件 urlPatterns为/*,可能很多人都知道filter的/*代表所有URL都匹配,但是源码在哪里呢 先打断点看一下调用链 然后跟着调用链慢慢点,看看哪里开始…

redis面试(二十)读写锁WriteLock

写锁WriteLock 和读锁一样,在这个地方执行自己的lua脚本,我们去看一下 和read没有多大的区别 KEYS[1] anyLock ARGV[1] 30000 ARGV[2] UUID_01:threadId_01:write hget anyLock mode,此时肯定是没有的,因为根本没这个锁 …

LangGPT结构化提示词编写实践 #书生大模型实战营#

1.闯关任务&#xff1a; 背景问题&#xff1a;近期相关研究发现&#xff0c;LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题&#xff0c;例如认为13.8<13.11。 任务要求&#xff1a;利用LangGPT优化提示…

电脑如何恢复删除的照片?4种实用恢复办法

在日常生活中&#xff0c;我们经常会因为各种原因误删电脑中的照片&#xff0c;而这些照片往往承载着珍贵的回忆。那么&#xff0c;如果不小心删除了照片&#xff0c;我们该如何恢复呢&#xff1f;下面就为大家介绍几种实用的恢复方法。 一、使用回收站恢复 当我们在电脑上删…

【C++】单例模式的解析与应用

C单例模式&#xff1a;深入解析与实战应用 一、单例模式的基本概念二、C中单例模式的实现方式2.1 懒汉式&#xff08;线程不安全&#xff09;2.2 懒汉式&#xff08;线程安全&#xff09;2.3 饿汉式2.4 静态内部类&#xff08;C11及以后&#xff09; 三、单例模式的优缺点四、实…

基于Transformer进行乳腺癌组织病理学图像分类的方法比较

为了提高视觉变压器的精度和泛化能力,近年来出现了基于Poolingbased Vision Transformer (PiT)、卷积视觉变压器(CvT)、CrossFormer、CrossViT、NesT、MaxViT和分离式视觉变压器(SepViT)等新模型。 它们被用于BreakHis和IDC数据集上的图像分类,用于数字乳腺癌组织病理学。在B…

【机器学习】4. 相似性比较(二值化数据)与相关度(correlation)

SMC Simple Matching Coefficient 评估两组二进制数组相似性的参数 SMC (f11 f00) / (f01f10f11f00) 其中&#xff0c;f11表示两组都为1的组合个数&#xff0c;f10表示第一组为1&#xff0c;第二组为0的组合个数。 这样做会有一个缺点&#xff0c;假设是比较稀疏的数据&…

readpaper在读论文时候的默认规定

红色代表主旨思想 蓝色代表专业名词解析

如何为你的SEO策略找到竞争对手的关键词

你有没有想过你的竞争对手是如何总是设法保持领先一步的&#xff1f;或者他们似乎如何扼杀了您所在行业的大部分搜索流量&#xff1f;他们成功的秘诀可能比你想象的要简单——关键词。 在本文中&#xff0c;我们将解释如何使用 SE Ranking、Google Keyword Planner 和 Bing Ke…

Qt坐标系统之三个坐标系和两个变换

前言 Qt坐标系统由QPainter类控制。它和QPaintDevice和QPaintEngine类一起构成Qt绘图系统的基础。QPainter用于执行绘图操作&#xff0c;QPaintDevice是QPainter用来绘制的一个二维空间的抽象&#xff0c;QPaintEngine提供在不同设备绘图的接口。 Qt 的坐标分为逻辑坐标和物理…

深度学习-局部最小值与鞍点【Datawhale X 李宏毅苹果书 AI夏令营】

在网络优化时&#xff0c;有时会出现随时参数不断更新&#xff0c;训练的损失可能不会再下降&#xff0c;但训练结果并不满意。为什么会出现这样的情况呢&#xff1f; 假设排除数据集优劣的问题&#xff0c;可能需要进一步考虑的是为什么网络不再有新的最优值了&#xff0c;在…

【记录】MICCAI BraTs 2020数据集

简介 本文 MICCAI 竞赛中公布的用于脑肿瘤分割 BraTS 2020数据集,根据官方统计,该数据集中共含有660例数据,训练集369、验证集125,测试集166。不过仅有训练集中给出了详细的分割标签,验证集虽然公布了 但是仅为了验证,没有给出具体的Ground Truth。所以如果进行实验主要还…

昇腾 - AscendCL C++应用开发 图像文件的解码时硬件对图像的宽度和高度的处理方式

昇腾 - AscendCL C应用开发 图像文件的解码时硬件对图像的宽度和高度的处理方式 flyfish 假如是这样的 输入图片格式&#xff08;YUV分量比例&#xff09; jpeg(420) 输出图片格式 YUV420SP NV12 8bit 输出图片宽、高对齐要求 宽2对齐 高2对齐 输出图片宽Stride、高St…

CMake构建学习笔记2-zlib库的构建

文章目录 1. 概述2. 详论2.1 设置构建目录2.2 配置构建2.3 构建项目2.4 安装项目2.5 清理构建目录 3. 总结 1. 概述 Zlib是一个数据压缩库&#xff0c;它提供了在内存中对数据进行压缩和解压缩的功能。这个库非常泛用&#xff0c;除了直接使用这个库之外&#xff0c;很多依赖库…

学历不高能进大厂么?

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

《终身学习——10个你必须掌握的未来生存法则》读书笔记

无论你遵守与否&#xff0c;大自然的法则是无法改变的&#xff0c;你若无视“重力法则”&#xff0c;从屋顶跳下&#xff0c;那给你善后的就不是“重力警察”了。同理&#xff0c;如果你不遵循成长法则&#xff0c;也不会有“成长警察”找你麻烦&#xff0c;你只会发现自己的成…

结合 curl 与住宅代理实现高效数据抓取

引言 什么是 curl&#xff1f;有哪些功能&#xff1f; 基本 curl 命令有哪些&#xff1f; 为什么要使用 curl 处理 HTTP 请求&#xff1f; 如何使用 curl 和住宅代理进行网络抓取&#xff1f; 总结 引言 在当今数据驱动的商业环境中&#xff0c;数据的获取和分析能力是企…

HttpMessageNotReadableException

项目本身用的全是JSON&#xff0c;但是对接MES的时候他们用的XML&#xff0c;就添加了对XML的支持&#xff0c;然后发现AGV发送任务的接口报下面的错误了。 Error while extracting response for type [class java.lang.String] and content type [application/json;charsetut…

77 智能卡ATR TA1通信速率计算

1 前言 智能卡读卡器在读卡前期会以默认标准通信速率9600与卡片交互&#xff0c;期间可通过卡片返回的ATR值中TA1字段获取卡片支持的最大通信速率&#xff0c;然后读卡器通过PPS指令与卡片协商更改通信速率&#xff0c;最后以协商的速率进行通信。 起初默认9600波特率是比较慢的…