逆向入門(9)匯編篇-bound指令的學習

看程序的時候碰到這么一行沒見過的代碼,簡單記錄一下

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…