“破解我!“---160个CrackMe练习001-Acid buen.exe

news2025/2/26 5:18:04

文章目录

  • 前言
  • 题目分析
  • 破解过程
    • Serial/Name验证方式
      • 爆破
      • 注册机 追码
    • Serial验证

前言

想开个系列,160个Crackme的练习,这个在52pojie上有个精华帖总结,写的特别好,推荐!写这个系列主要还是记录一下自己的学习记录,目前就完成了几十个,还有好多/(ㄒoㄒ)/~~,加油。坚持每天至少练一题,希望可以帮到你。

52pojie上用的是OD,OD很老了已经,而且我自己之前练的时候照着做也有几次出bug解决不了,后面改用的xdbg,所以推荐用xdbg来调试。

CrackMe 翻译是 破解我 ,我觉得蛮有趣的,可以很好的锻炼到逆向思维和动态调试能理,最主要的还是好玩,毕竟我觉得学习还是要以兴趣为主的。

题目在52pojie可以免费下载。
https://www.52pojie.cn/thread-709699-1-1.html

题目分析

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

  • 文件位数:32bit
  • 编程语言:Delphi
  • 壳:无壳

要逆向或者破解一个程序,首先要了解它,先运行程序看看
在这里插入图片描述
在这里插入图片描述
俩个窗口,第一个无关紧要,第二个窗口有俩种验证方式。分别是:

  • Serial/Name
  • Serial

破解过程

Serial/Name验证方式

爆破

随便输入点东西运行看一下
在这里插入图片描述

打开x32dbg,搜索字符串,也可以点击上面工具栏。找到输入错误的提示。
在这里插入图片描述
在这里插入图片描述
双击过去,可以看到我们进入的位置是 0042FA63,我们一直往上翻可以找到一个 push ebp,对于一个程序的入口,一般都是push ebp,我们在程序入口打个断点方便调试。
在这里插入图片描述

打完断点就可以 Ctrl + F2 重启一下程序了,这次输入 sciurdae 123456看看,F9运行
在这里插入图片描述

点击 check后就会发现程序断在了 push ebp处。
这个时候就 F8 单步走,边走边看。

走到第一处错误信息,也是cmp 和 jge处
在这里插入图片描述
这里上面一直在调用sciurdae ,下面 cmp 用eax 和 4比较, jge 是大于等于就跳转的指令, 这里小于4的话就会直接错误了,可以知道这里是在要求name的长度要大于等于4。(爆破的话,讲jge改成jmp无条件跳转(按空格就可以修改))

再一直往下

在这里插入图片描述
这里可以看到我们输入的密码,和一串很可疑的字符串。
并且下面就是正确结果,有一个call 和一个 jne 跳转 ;jne指令的意思是 不等于就跳转

(我们也知道我们输入的肯定不是正确的serial,所以这里 就是 用 正确的和我们 的比较,最后验证会失败)

爆破就是将jne指令直接nop掉就好。
在这里插入图片描述

注册机 追码

在这里插入图片描述

刚刚在爆破的过程中,我们发现了一串可以的字符串,用它也可以完成注册;但是如果我们换一下name,这串serial就没有用了,说明,serial 是在程序中动态生成了,那么问题就来了?

如何在不改变程序的情况下,成功破解程序呢,这就是注册机了。

Keygen(注册机)是短语密钥生成器的缩写形式。这是一个小型程序,可为软件生成有效的CD密钥或序列号(注册)。

如何来实现这个注册机。

输入 123456 的name 方便调试。继续运行程序,让程序断在 push ebp处。

0042FA87 | 8B45 F0                  | mov eax,dword ptr ss:[ebp-10]           | [dword ptr ss:[ebp-10]]:"123456"      
0042FA8A | 0FB600                   | movzx eax,byte ptr ds:[eax]             | 这里就是取了 '1' 出来存到 eax中;
0042FA8D | F72D 50174300            | imul dword ptr ds:[431750]              |0x31'1') 去乘以 29 (ds:[431750]中的值)
0042FA93 | A3 50174300              | mov dword ptr ds:[431750],eax           | 
0042FA98 | A1 50174300              | mov eax,dword ptr ds:[431750]           | 
0042FA9D | 0105 50174300            | add dword ptr ds:[431750],eax           | 前面用eax覆盖了ds:[431750]中,现在又加上eax,实际上就是 * 2 的操作
0042FAA3 | 8D45 FC                  | lea eax,dword ptr ss:[ebp-4]            |
0042FAA6 | BA ACFB4200              | mov edx,acid burn.42FBAC                | 42FBAC:"CW"
0042FAAB | E8 583CFDFF              | call acid burn.403708                   |
0042FAB0 | 8D45 F8                  | lea eax,dword ptr ss:[ebp-8]            | # 这里就是 连接上这俩个字符串
0042FAB3 | BA B8FB4200              | mov edx,acid burn.42FBB8                | 42FBB8:"CRACKED"

在这里插入图片描述

刚执行完 movzx后,的情况。
在这里插入图片描述
小端序存储,所以要读 07D9 ; 07D9 等于 0x29 * 0x31

在这里插入图片描述

执行add后, 0FB2 ; 0FB2 等于 07D9 * 2; 0x0FB2转换为十进制就是 4018

往下看验证一下,

在这里插入图片描述
没有问题!

Keygen:

def keygen(serial):
    key = ord(serial[:1])
    print(key)
    if key > 0x21:                # 要可见字符
        key = key * 0x29 * 2
        print(f"Serial: CW-{key}-CRACKED")
    else:
        print('input error !')


if __name__ == '__main__':
    serial = input('please input something here:')
    keygen(serial)

之前用C写的,试一试用 python写。

Serial验证

在这里插入图片描述
也是通过搜索字符串。往上看push ebp

在这里插入图片描述
爆破的话就是nop掉 jne 不让它跳到报错去就好。 这里serial也已经给出来了。

在这里插入图片描述

这个验证是固定的验证码,不用keygen了。

搞定。

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

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

相关文章

Apollo模块:开源配置管理的明日之星

Apollo模块 概述目录结构功能模块编译福利活动 主页传送门:📀 传送 概述 目录结构 按照功能模块划分: |-cyber 消息中间件,替换ros作为消息层 |-docker 容器相关 |-docs 文档相关 |-modules 自动驾驶模块,主要的定位…

Android 主题 vs 样式

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关知识3.1 theme! st…

YUV的红蓝颠倒(反色)的原因及解决

原因 UV排列反了。 比如说,NV21和YUV420SP的Y排列相同,UV则相反。给你YUV420SP,你当作NV21保存JPG,就会发生红蓝拿起。 解决办法 就是把UV互换一下。具体代码: NV21转YUV420SP的代码_nv21转yuv420格式-CSDN博客 …

[毕设记录]@开题调研:一些产品

我感觉产品能代表落地的一些实际应用,会和研究的角度有些差别,但是需求和兴趣往往是从现实中来的,在上一篇blog里面看外国blog的时候顺着搜搜到了很多国外的智慧校园chatbot解决方案 文章目录 Comm100streebomodern campusUniBuddy Comm100 …

git建仓库小记

git建仓库小记 1.新建远端git仓库2.新建本地仓库3.添加ssh key4.将本地仓库关联到远端5.push & pull 每次新建git项目的时候都要翻翻之前收藏的几篇帖子,索性自己汇总一下记录,以后一次粘贴搞定。 1.新建远端git仓库 这个比较简单,网页…

Rust编程基础之变量与可变性

1.Rust变量 在Rust语言中, 变量默认是不可改变的(immutable), 这是Rust提供给我们的众多优势之一, 让我们可以充分利用Rust提供的安全性和简单并发性来编写代码。 当变量不可变时, 一旦值被绑定在一个名称上, 就不能改变这个值。下面是一段代码的例子: fn main() {let x 1;…

vue3-访问本地json文件

将json文件放在public文件夹中 用fetch可以直接访问public下的文件 fetch(/tab-3-data/costOverhaul.json).then(response > response.json()).then(res > {console.log(res)//数据});

[云原生1.] Docker--harbor私有仓库部署与管理

文章目录 1. Harbor概述1.1 什么是Harbor1.2 Harbor的组织构成1.2.1 Proxy1.2.2 Registry1.2.3 Core services1.2.4 Database(harbor-db)1.2.5 Job services1.2.6 Log collector(harbor-log) 1.3 Harbor的特点 2. 部署Harbor服务2…

基于SSM的会员卡管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

2022年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 运行下列程序,输出的结果是?( ) tup1 (苏炳添, 谷爱凌, 北京冬奥会, …

【linux】麒麟v10安装openjdk8

openjdk的官网 点我就到官网 jdk8的网址 安装 yum install -y java-1.8.0-openjdk-devel 出现Complete! 就是安装完成。 验证 java -version配置环境变量 查找安装路径 find / -name java 修改配置文件 vim /etc/profile 增加内容 export JAVA_HOME/usr/lib/jvm/j…

java项目之驾校预约管理系统(ssm框架)

项目简介 校预约管理系统实现了以下功能: 管理员:首页、个人中心、学员管理、驾校教练管理、驾校车辆管理、预约管理、取消预约管理、驾校公告管理、系统管理。驾校教练:首页、个人中心、驾校教练管理、预约管理、取消预约管理。学员&#…

YUV编码格式解析

YUV 颜色编码 YUV 颜色编码采用的是 明亮度 和 色度 来指定像素的颜色。 其中,Y 表示明亮度(Luminance、Luma),而 U 和 V 表示色度(Chrominance、Chroma)。 而色度又定义了颜色的两个方面:色…

【Go入门】GO语言基础快速入门

Go基础 这小节我们将要介绍如何定义变量、常量、Go内置类型以及Go程序设计中的一些技巧。 定义变量 Go语言里面定义变量有多种方式。 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面: //定义一个名称为“variabl…

2023年腾讯云服务器地域节点选择指南(亲自整理)

腾讯云轻量应用服务器地域是指轻量服务器数据中心所在的地理位置,如上海、广州和北京等地域,如何选择地域?腾讯云百科txybk.com建议地域选择遵循就近原则,用户距离轻量服务器地域越近,网络延迟越低,速度就越…

从0到1之微信小程序快速入门(02)

目录 页面导航 - 声明式导航 1. 导航到 tabBar 页面 2. 导航到非 tabBar 页面 3. 后退导航 ​编辑 页面导航 - 编程式导航 页面导航 - 导航传参 页面事件 - 下拉刷新事件 监听下拉刷新事件 停止下拉刷新的效果 页面事件 - 上拉触底事件 监听页面的上拉触底事件 配置…

python实战项目基于Django的高校大学生宿舍管理系统 寝室维修保修管理系统(源码调试 开题报告lw ppt)

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统+论文

项目描述: 本系统旨在为宿舍管理人及其用户提供一个 功能齐全、使用方便的管理系统,以代替现有人 工管理方法,采用Bootstrap框架结合MySQL 数据库。 系统的主要用户分为系统管理员、宿舍管理人员和学生用户。宿舍网站管理系统主要实现了对学校…

前端 :用HTML ,JS写一个 双色球彩票中将机制,因为时间不够,加上本人懒没有用CSS美化界面,多包涵

1.HTML <body><div id"content"><div id "top"><div id "username">用户号码&#xff1a;</div><div id "qiu"><span id "red">红球&#xff1a;</span><input id…

一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)

本文主要讲述了一体化模型进行去噪、去雨、去模糊&#xff0c;也就是说&#xff0c;一个模型就可以完成上述三个任务。实现了良好的图像复原功能&#xff01; 先来看一下美女复原.jpg 具体的&#xff1a; 在图像恢复任务中&#xff0c;需要在恢复图像的过程中保持空间细节…