tuts4you上lena‘s40个crackme(1)

news2024/11/26 4:28:23

        本来是不打算写文章了,因为懒,想以后通过录屏的形式保存一下自己学的路程。但奈何开学后一直没找到机会,在宿舍也不愿意大吼大叫的讲东西,只好再写写文章了

        最近学了一些汇编语言和逆向工程,所以就想通过这40给题目来看一看成效,这篇文章是第一题。博主很菜,半个月速学了一遍汇编语言,逆向工程刚开始学,只学到了IAT。

---------------------------------------------------------------------------------------------------------------------------------

        本题都是再Ollydbg下进行的 

        并且

博主会通过汇编语言来进行讲解 

         

第一题只有一个exe文件,打开这个文件

会弹出一个窗口, 提示我们要获得正确的许可证。

因为是以弹窗的形式,并且有相关的字符串提示,所以我们可以猜测那是不是就有对应的正确的字符串。

通过Ollydbg打开文件

 右键查看所有参考字符串

 可以看到有刚才错误的

字符串,也有正确的字符串。我们双击转到显示正确字符串的内存地址

 

观察可知 

MessageBox函数为弹出一个windows对话框,该函数可能为c语言也可能为VB语言

因为这几串指令的前后都是DB:0,即0数据,所有这几条语句可能是转移过来的,我们向上翻滚。

 

可以看到有这么一串指令,这也就是我们要调试的主要 内容

观察红字部分的Createfile和Readfile函数可以确定为c语言编写的程序。

这一步部分为检测是否有Keyfile.dat文件,如果没有的话就会打印出刚才出现的那一段字符串

 

这一段是读取Keyfile.dat文件 的内容

以上内容的汇编语言没什么可以说的,无非就是入栈出栈创建栈内空间。

后面的汇编语言比较重要,会详细说说

 

TEST EAX,EAX检测两个值是否相等

JNZ指令入对上面的TEST检测,如果TEST指令相等,则跳转到内存地址为004010B4

即XOR EBX,EBX指令,这个指令为异或指令,在这条命令下即为将EBX寄存器的值清零

然后下一条指令将ESI寄存器中的值清零

CMP DS:[402173],10指令,其中10为十六进制,转换为十进制为16。

内存地址4022173即将读取文件的内容存放到内存中的地址

所以上面的指令的意思即为比较文件中的数据的长度 

JL指令为如果小于则进行指定位置的跳转,在这个题目中跳转的位置为004010F7,我们看一下这个跳转位置的内容:

会给我们一个错误的弹窗,所以我们不因该进行这个跳转

所以我们创建文件里面的内容的字节数必须大于16

 

这样就会 跳转执行下一个命令

下一个命令为mov转移指令,将EBX+40211A的值传给AL值

这时候观察右边EBX寄存器中的值会发现为0

然后将AL中的值与0作比较,因为我们之前给40211A内存地址也就是文件的内容添加了至少16个字符,所以JE为等于则跳转,肯定不会跳转到对应内存地址,而是继续执行下一条指令,

这些指令是一串循环指令,其中47是16进制,转换为十进制再转换为ASCII值为G

INC是加一指令,综合下来来说就是让 文件中的内容中有8个或8个以上的G字符,因为当AL和G做比较相等才会执行ESP加一,而程序调试到这里时ESP的初始值为0,所以要满足ESP大于或等于8。

所以我们创建文件名为Keyfile.dat文件,里面填充内容为

然后我们调试文件或者直接运行exe文件

 

可以看到和我们第一次的弹窗不一样了。并且弹窗的内容为提示我们输入的正确

至此,程序调试结束

--------------------------------------------------------------------------------------------------------------------------------

后记:方法2

        同样的程序可以有不同的调试方法,这里只在另外介绍一种,实际情况可能还有很多种。

我们将Keyfile.dat的内容修改为

 

这样程序就会报错

 

这里是对ESP的内容做检测,还记得要想成功必须让ESP=或者>8吗?

那我们还记得前面 将ESP清零的指令吗?如果我们没有执行这条指令是不是就成功了?

 

将XOR ESP,ESP 

修改为NOP空指令填充

然后调试程序

 

 可以看到返回给了我们和刚才一样的正确信息

 

 

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

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

相关文章

hashCode 和 equals 的处理

文章目录hashCode 和 equals 的处理1. 阿里巴巴编程规范要求2. equals和hashcode的分析2.1 Object方法2.2 只覆写(Override)equals带来的问题问题演示问题分析问题处理hashCode 和 equals 的处理 1. 阿里巴巴编程规范要求 2. equals和hashcode的分析 2…

python实战应用讲解-【numpy专题篇】函数(附python示例代码)

NumPy 数学函数 NumPy 包含大量的数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。 三角函数 NumPy 提供了标准的三角函数:sin()、cos()、tan()等 import numpy as npa = np.array([0, 30, 45, 60, 90]) print(不同角度的正弦值:) # 通过乘 pi/180 转化…

园区智慧能源管理系统

实现对园区的用能情况实时、全方位监测,重点设备进行数据自动采集并智能统计、分析,根据需要绘制各种趋势曲线、能源流向图和分析报表。将物联网、大数据与全过程能源管理相融合,提供全生命周期的数字化用能服务,实现用能的精细化…

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮

导入elasticsearch依赖在pom.xml里加入如下依赖&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>非常重要&#xff1a;检查依赖版本…

邮件发送,正文内容格式h5,模板字符串拼接使用及赋值,原生js

一、邮件发送 需求不难&#xff0c;传指定的参数给后端&#xff0c;调接口就直接发送了 就是参数里有个正文部分&#xff0c;一定要用h5写 写vue写习惯了&#xff0c;原生的都快忘光了&#xff0c;走了些弯路 二、h5 在页面上有个邮件发送的按钮&#xff0c;点击按钮打开弹窗…

10分钟搞定win11安卓子系统

10分钟搞定win11安卓子系统Android子系统的要求一、安装 Windows 虚拟化支持二、Win11 正式版安装安卓子系统方法教程 (离线包安装)三、在Win11 安卓子系统安装 APK 软件包教程Windows 11 WSA 安装 APK 方法&#xff1a;Windows 11上成功运行安卓APP安装国内的 Android 应用商店…

windows系统无法保存文件的解决方案

❤关注我&#xff0c;不迷路❤ 点击进入PC常见故障汇总专栏 近期收到部分反馈&#xff0c;在windows的电脑上保存一个文件的时候&#xff08;另存为&#xff09;&#xff0c;选择完目标文件夹后无法保存&#xff0c;点击系统的保存按钮&#xff08;有些系统展示为打开按钮&…

2023最新谷粒商城笔记之订单服务篇(全文总共13万字,超详细)

订单服务 页面环境搭建 配置动静环境 在服务器的mydata/nginx/html/static 路径下创建一个 order 文件夹&#xff0c;在order路径下分别创建以下几个文件夹&#xff0c;用来存放对应的静态资源 detail 文件夹下存放 等待付款的静态资源&#xff0c; 并将等待付款文件夹下的页…

DC-4 靶场学习

信息搜集&#xff1a; 首先获取靶场ip&#xff0c;和之前一样。 arp-scan -l nmap -sP 192.168.28.0/24然后访问。 发现需要登录。 漏洞分析: 直接用bp爆破&#xff0c;爆破出来密码为happy&#xff0c;登录。 发现执行了命令&#xff0c;抓包。 修改命令可以执行&#xff…

客户案例|FPGA研发管理解决方案:UniPro瀑布+敏捷 打造高效能组织

2023开年以来&#xff0c;新享科技项目管理软件UniPro收获一波客户侧的点赞好评。在过去一年中&#xff0c;UniPro不断与客户保持高频沟通&#xff0c;满足客户需求为出发点&#xff0c;以产品功能实现为落脚点&#xff0c;不断打磨产品。 以UniPro客户京微齐力为例&#xff0…

Vulnhub靶场----9、DC-9

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-9下载地址&#xff1a;https://download.vulnhub.com/dc/DC-9.zip kali&#xff1a;192.168.144.148 DC-9&#xff1a;192.168.144.158 二、渗透流程 1、信息收集nmap -T5 -A -p- -sV -sT 192.168.144.158思路&am…

IDEA Android 网格布局(GridLayout)示例(计算器界面布局)

网格布局(GridLayout&#xff09; 示例程序效果&#xff08;实现类似vivo手机自带计算器UI&#xff09; 真机和模拟器运行效果&#xff1a; 简述&#xff1a; GridLayout(网格布局)和TableLayout&#xff08;表格布局&#xff09;有类似的地方&#xff0c;通俗来讲可以理解为…

搜广推 Product-based Neural Networks (PNN) - 改进特征交叉的方式

😄 PNN:2016年上海交通大学提出。 文章目录 1、PNN1.1、原理1.2、创新点:product层1.3、product层z部分的输出:l~z~ 的计算方式:1.4、product层z部分的输出:l~p~ 的计算方式:1.4.1、IPNN1.4.2、OPNN1.5、优点1.6、缺点Reference1、PNN PNN:Product-based Neural Netwo…

Spark 故障排除

1 故障排除一&#xff1a;控制reduce端缓冲大小以避免OOM 在Shuffle过程&#xff0c;reduce端task并不是等到map端task将其数据全部写入磁盘后再去拉取&#xff0c;而是map端写一点数据&#xff0c;reduce端task就会拉取一小部分数据&#xff0c;然后立即进行后面的聚合、算子…

colletions学习和链式调用,以及优雅的展示代码

1&#xff0c;python 中尽量减少缩进可以直接 if code ! 1: return {msg:2003} 继续写下面的逻辑 2&#xff0c;关于&#xff08;1&#xff09;&#xff0c;&#xff08;1&#xff0c;&#xff09;区别 &#xff08;1&#xff09;表示直接计算运行 &#xff08;1*2*345&a…

Leetcode.2359 找到离给定两个节点最近的节点

题目链接 Leetcode.2359 找到离给定两个节点最近的节点 Rating &#xff1a; 1715 题目描述 给你一个 n个节点的 有向图 &#xff0c;节点编号为 0到 n - 1&#xff0c;每个节点 至多 有一条出边。 有向图用大小为 n下标从 0开始的数组 edges表示&#xff0c;表示节点 i有一条…

数字档案室测评的些许感悟

我是甲方&#xff0c;明明我家是档案“室”&#xff0c;为什么申请的是数字档案“馆”&#xff1f; 笔者正对着手里的一份方案苦笑&#xff0c;甲方爸爸是某机关单位档案室&#xff0c;方案最后的附件赫然写着几个大字&#xff1a;“申请国家级数字档案馆……“。这样的事屡见…

SpringMVC再学习

基于原生的Servlet&#xff0c;通过了功能强大的前端控制器DispatcherServlet&#xff0c;对请求和相应进行统一处理 如今我们不再去web.xml中去主持servlet 而是直接创建一个配置类ServletContainersInitConfig去基础AbstractDispatcherServletInitializer createServletApp…

高性能 WPF 图表控件LightningChart.NET:支持从 Web 服务器获取数据 | 附最新版试用下载

LightningChart.NET 是一款高性能 WPF 和 Winforms 图表,可以实时可视化多达1万亿个数据点。可有效利用CPU和内存资源&#xff0c;实时监控数据流。同时&#xff0c;LightningChart使用突破性创新技术&#xff0c;以实时优化为前提&#xff0c;大大提升了实时渲染的效率和效果&…

Python的面向对象,详细讲解Python之用处等基本常识

目录 Python 面向对象 面向对象技术简介 创建类 实例 实例 self代表类的实例&#xff0c;而非类 实例 创建实例对象 访问属性 实例 Python内置类属性 实例 python对象销毁(垃圾回收) 实例 实例 类的继承 实例 方法重写 实例 基础重载方法 运算符重载 实例…