看程序的时候碰到这么一行没见过的代码,简单记录一下

00427AC8  |.  6215 3C7B4200 |bound edx,qword ptr ds:[0x427B3C]

这里是用到了bound指令,这是 x86 汇编中的指令,用于检查数组索引是否在有效范围内。

指令解析

bound edx, qword ptr ds:[0x427B3C]
BOUND 指令:
- 语法:BOUND reg, mem
- 功能:检查寄存器值是否在内存指定的边界范围内
- 操作:如果 mem[0] ≤ reg ≤ mem[1] 则继续执行,否则触发异常(INT 5)
操作数:
edx:要检查的寄存器(32位)
qword ptr ds:[0x427B3C]:包含边界值的内存地址
qword 表示 64 位(8 字节)数据
ds:[0x427B3C] 是数据段中偏移量为 0x427B3C 的内存位置

具体功能

  1. 从内存地址0x427B3C 读取 8 字节数据:
    • 4 字节[0x427B3C]是下界
    • 4 字节[0x427B3C+4]是上界
  2. 检查 edx 的值是否满足:
    • 下界 ≤ edx ≤ 上界
  3. 如果检查失败:
    • 触发边界检查异常(INT 5)
    • 通常会导致程序崩溃或被调试器捕获

实际作用:

  1. 安全防护:
    • 确保余数在有效范围内(0-9)
    • 防止可能的整数溢出或计算错误
  2. 反调试/反篡改:
    • 如果程序被修改导致余数超出范围
    • 会触发异常使程序崩溃
    • 增加逆向工程难度
  3. 冗余检查:
    • 在正常情况下,余数总是 0-9
    • 这可能是防御性编程或遗留代码
  4. 在注册机中的处理:
    • 在注册机实现中,不需要模拟这条指令,因为余数计算(% 10)自然会产生 0-9 的值,边界检查不会改变程序逻辑或计算结果,它只是安全防护措施,不影响核心算法

在这里插入图片描述
最后这里看到下界是0,但是上界居然是0xC,原因大概是因为那个题当中,要取字符串的值,而这个字符串为LANNY5646521,其有12个字符,而bound指令的上界是12,所以最后取不到21两个字符。
例子1
在这里插入图片描述
例子2
在这里插入图片描述
例子3
在这里插入图片描述
经测试,上述猜想应该为正确的,嗯,研究了个寂寞

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【web应用】若依框架中,使用Echarts导出报表为PDF文件

文章目录前言一、Echarts准备工作1、查看是否安装了Echarts2、Echarts导入script 中3、使用Echarts创建图表二、报表制作打印html2canvas和jsPDF准备工作1、安装html2canvas和jsPDF依赖包2、html2canvas和jsPDF引用到script中3、制作并打印报表三、导出结果前言 若依框架前端中…

优选算法 --(双指针算法 1~8)

引言:此专栏为记录算法学习,本专题作为算法学习的第一部分,优选算法专题共计100题,分为不同小模块进行,算法学习需坚持积累,时代不会辜负长期主义者,仅以此句,与君共勉。 讲解算法分…

XRDMatch代码复现与分析报告

XRDMatch代码复现与分析报告 1. 项目概述 XRDMatch是一个用于X射线衍射(XRD)数据匹配和分析的开源工具,由zhengwan-chem开发并托管在GitHub上。本项目旨在复现XRDMatch的核心功能,并对其实现进行详细分析。 X射线衍射是材料科学中用于确定晶体结构的重要技术,通过分析衍射…

SpringAI×Ollama:Java生态无缝集成本地大模型实践指南

摘要 随着大语言模型(LLM)的普及,数据隐私和技术栈统一性成为企业级AI应用的核心挑战。本文系统阐述如何通过SpringAI框架与Ollama本地化模型引擎的结合,构建安全高效的生成式AI应用。通过实战案例解析配置优化、流式响应、工具调用等关键技术,为Java开发者提供零Python依…

从采购申请到报废核销:如何用数字化缝合企业物资管理的“断点”?

在企业的日常运营中,物资管理是一项至关重要的工作。从采购申请到物资的入库、使用,再到最终的报废核销,这一系列流程就像一条长长的链条,环环相扣。然而,在传统管理模式下,这条链条上却存在着诸多“断点”…

AVL平衡二叉树

01. 初始AVL树 AVL树是最早发明的自平衡二叉搜索树。在AVL树中,任何节点的两个子树的高度差(平衡因子)最多为1,这使得AVL树能够保持较好的平衡性,从而保证查找、插入和删除操作的时间复杂度都是O(log n)。包含n个节点…

教育行业可以采用Html5全链路对视频进行加密?有什么优势?

文章目录前言一、什么是Html5加密?二、使用Html5对视频加密的好处三、如何采用Html5全链路对视频进行加密?四、教育行业采用Html5全链路视频加密有什么优势?总结前言 面对优质课程盗录传播的行业痛点,教育机构如何守护核心知识产…

Vue3 tailwindcss

1、安装tailwindcsspnpm i -D tailwindcss postcss autoprefixer # yarn add -D tailwindcss postcss autoprefixer # npm i -D tailwindcss postcss autoprefixer2、 创建TailwindCSS配置文件npx tailwindcss init -ptailwind.config.js/** type {import(tailwindcss).Config}…

提示工程:解锁大模型潜力的核心密码

以下是对Lilian Weng的提示工程权威指南(原文链接)的深度解析与博客化重构,融入最新行业实践: 提示工程:解锁大模型潜力的核心密码 ——从基础技巧到工业级解决方案全解析 一、重新定义人机交互范式 传统编程 vs 提示…

Python3邮件发送全指南:文本、HTML与附件

在 Python3 中,使用内置的 smtplib 库和 email 模块发送邮件是一个常见的需求。以下是更详细的实现指南,包含各种场景的解决方案和技术细节:一、发送纯文本邮件的完整实现准备工作:确保已开通 SMTP 服务(各邮箱开启方式…

CSS和CSS3区别对比

CSS(层叠样式表)与CSS3(CSS的第三个版本)的区别主要体现在功能扩展、语法特性以及应用场景等方面。以下是两者的核心对比: 一、核心概念与版本关系CSS:是基础样式表语言,用于分离网页内容与样式…

JVM--监控和故障处理工具

一、命令行工具 1. jps (Java Process Status) 作用:列出当前系统中所有的 Java 进程 常用命令: jps -l # 显示进程ID和主类全名 jps -v # 显示JVM启动参数 输出示例: 1234 com.example.MainApp 5678 org.apache.catalina.startup.Bootstra…

推荐 7 个本周 yyds 的 GitHub 项目。

01.开源的 CRM 软件这是一个开源的客户关系管理(CRM)系统,现在又 32.5K 的 Star。为企业和团队提供比肩 Salesforce 等商业产品的功能,同时强调用户自主权、数据自由与高度可定制性。开源地址:https://github.com/twen…

linux网络编程之单reactor模型(一)

Reactor 是一种事件驱动的设计模式(Event-Driven Pattern),主要用于处理高并发 I/O,特别适合网络服务器场景。它通过一个多路复用机制监听多个事件源(如 socket 文件描述符),并在事件就绪时将事…

浏览器重绘与重排

深入解析浏览器渲染:重排(Reflow)与重绘(Repaint)的性能陷阱与优化策略作为一名前端开发者,你是否遇到过界面突然卡顿、滚动时页面抖动或输入框响应迟钝?这些常见性能问题背后,往往是重排与重绘在作祟。本文将深入剖析浏览器渲染机…

day049-初识Ansible与常用模块

文章目录0. 老男孩思想-人脉的本质1. Ansible1.1 密钥认证1.2 安装ansible1.3 添加ansible配置文件1.4 配置主机清单文件(Inventory)1.5 测试1.6 ansible的模块思想1.7 command模块1.8 需求:每台服务器的密码都不同,怎么批量执行业…

力扣网编程134题:加油站(双指针)

一. 简介 前面两篇文章使用暴力解法,或者贪心算法解决了力扣网的加油站问题,文章如下: 力扣网编程150题:加油站(暴力解法)-CSDN博客 力扣网编程150题:加油站(贪心解法&#xff09…

XPath 语法【Web 自动化-定位方法】

🧭 XPath 语法简介(Web 自动化核心定位手段)一、XPath 是什么?XPath(XML Path Language)是用于在 XML/HTML 文档中定位节点的语言,由 W3C 标准定义。浏览器支持的是 XPath 1.0。应用场景广泛&am…

记一次 Linux 安装 docker-compose

一.下载 1.手动下载 下载地址:https://github.com/docker/compose/releases 下载后,放在/usr/local/bin/目录下,命名为:docker-compose 2.命令下载 sudo curl -L "https://github.com/docker/compose/releases/download/…

Go语言WebSocket编程:从零打造实时通信利器

1. WebSocket的魅力:为什么它这么火?WebSocket,简单来说,就是一种在单条TCP连接上实现全双工通信的神器。相比HTTP的请求-响应模式,它像是一条随时畅通的电话线,客户端和服务器可以随时“喊话”&#xff0c…