新160个crackme - 042-crackme

2024-08-31 01:04
文章标签 crackme 160 042

本文主要是介绍新160个crackme - 042-crackme,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运行分析

在这里插入图片描述

  • 提示需要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] ^= lengthkey[0] ^= 0x54key[1] ^= 0x4dkey[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] ^ lengthprint("".join([chr(i)for i in res]))

在这里插入图片描述

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

这篇关于新160个crackme - 042-crackme的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122447

相关文章

新160个crackme - 051-Keygenning4newbies

运行分析 需要破解Name和Serial PE分析 C++程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入函数 静态分析得到以下结论:1、Name长度要大于4,小于502、v5 += Name[i] ^ (i + 1)3、v7 = 最后一个Name[i] ^ (i + 1)4、Serial = (v5<<7) + 6* v7 的16进制

新160个crackme - 050-daxxor

运行分析 需要破解Name和Serial PE分析 C++程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入函数 通过静态分析发现:1、Name通过计算得到Name12、对Name1第3、5、6分别插入byte_401290、byte_401290、word_401292,得到Name23、双击byte_401290,发现值为0x2D;双

static_隐式参数_继承_重写_toString_组合JAVA036-042

来源:http://www.bjsxt.com/ 1、S01E036_01static变量和方法 static变量和方法存放在方法区中 2、S01E037_01隐式参数this和super 类的构造方法调用自己的无参构造方法this()或有参构造方法this(a[,b…]):必须位于第一行 3、S01E038_01面向对象的三大特征(继承、封装、多态)之一:继承(extends)

【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 胡桃夹子优化算法(Nutcracker Optimization Algorithm, NOA)是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中,胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。在优化算法的语境下,这个过程被比喻为寻找问题解决方案的过程,即如何有效地“破开”问题的“坚硬外壳”以到达其核心或最优解。 灵

新160个crackme - 045-CyTom-crackme

运行分析 需要破解Name和Serial PE分析 Delphi程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入 动调主函数,函数sub_4251A0作用未知 函数sub_4251A0作用:Name每个字符ascii相乘 算法分析 Name = 'concealbear'a1 = 1for i in range(le

新160个crackme - 043-riijj_cm_20041121

运行分析 除了主程序还有一个dll文件,应该是要加载pf1.dll这个动态链接库运行主程序,需破解Name和Serial,点击注册无反应 PE分析 C++程序,32位,无壳 静态分析&动态调试 尝试ida动调加载动态链接库pf1.dll,弹出错误,推测存在反反调试 使用OD的StrongOD插件绕过反反调试,设置参数如上 程序拖入OD,点击F9,

Leetcode 160. 相交链表-----python

160. 相交链表 题目描述: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 解题思路: python代码实现: class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""if he

新160个crackme - 041-genocide1

运行分析 提示未找到Reg.dat文件 同目录下创建Reg.dat即可打开程序点击About -> Register,打开注册窗口,但是无法点击OK键 PE分析 upx壳,32位 upx -d crackme.2.exe脱壳 发现是Delphi程序 静态分析&动态调试 DeDeDark打开程序进行分析,发现了注册窗体OK按钮:Butto

【手撕OJ题】——160. 相交链表

目录 🕒 题目⌛ 方法① - 遍历记录链表长度⌛ 方法② - 双指针 🕒 题目 🔎 160. 相交链表【难度:简单🟢】 🔎 面试题 02.07. 链表相交 🔎 剑指 Offer 52. 两个链表的第一个公共节点 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表

UnityShader源码2017---学习笔记与自我拓展042

源自Skybox,Skybox-Cubed,Skybox-Procedural 先看一下SkyBox这个shader里的一个方法 float3 RotateAroundYInDegrees (float3 vertex, float degrees){float alpha = degrees * UNITY_PI / 180.0;float sina, cosa;sincos(alpha,