應用軟件安全編程--25考慮對函數指針進行加密

在某些情況下,攻擊者可以通過修改內存甚至函數指針來執行任意代碼。為了減少這類攻擊的影 響,函數指針應該在運行時進行加密,并在執行程序時才進行解密。

對于考慮對函數指針進行加密的情況,示例1給出了不規范用法(C/C++ ??語言)示例。示例2給 出了規范用法(C/C++ ??語言)示例。

示例1:int(*log ?fn)(const ???char ???*,..)= ???printf;/*..*/log ?fn("foo");

這個不規范的代碼示例將 printf()函 數 賦 給 log fn 函數指針,并且它能夠分配在棧的數據段里。

如果允許攻擊者修改 log fn 函數指針,則將出現可攻擊點,例如緩沖區溢出或者內存任意寫入。

攻擊者可能用本地的任意函數覆蓋 printf的 值 。

示例2(Windows):#include<Windows.h)void ??* ??log ?fn ??=EncodePointer(printf);/*.. ?*/int(*fn)(const fn("foo");Microsoftchar ????,.)=(int(*)(const ?????????????????char ????,.))DecodePointer(log ?fn);

Windows提供了EncodePointer()和DecodePointer()函數對指針進行加密和解密,確保只對給定的程序調用。

注意,DecodePointer()沒有返回成功或者失敗。如果攻擊者能夠重寫指針包括 log fn, 那么將會返回非法的指針并且會導致程序崩潰。但是,與給攻擊者提供執行任意代碼的能力相比,這種情況的安全風險更低。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161366.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161366.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161366.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity UI設計 軟件構造實驗報告

實驗1: 仿真系統的UI主界面設計 1.實驗目的 &#xff08;1&#xff09;熟悉Unity中UI界面的設計與編寫&#xff1b; &#xff08;2&#xff09;熟悉UI界面中場景轉換,UI與場景內容相互關聯的方式。 &#xff08;3&#xff09;熟悉Unity中MySQL數據庫的操作 2.實驗內容 新建…

設計模式—單一職責原則

1.背景 單一職責原則&#xff08;SRP&#xff1a;Single responsibility principle&#xff09;又稱單一功能原則&#xff0c;面向對象五個基本原則&#xff08;SOLID&#xff09;之一。它規定一個類應該只有一個發生變化的原因。該原則由羅伯特C馬丁&#xff08;Robert C. Ma…

生成式AI與大語言模型,東軟已經準備就緒

伴隨著ChatGPT的火爆全球&#xff0c;數以百計的大語言模型也爭先恐后地加入了這一戰局&#xff0c;掀起了一場轟轟烈烈的“百模大戰”。毋庸置疑的是&#xff0c;繼方興未艾的人工智能普及大潮之后&#xff0c;生成式AI與大語言模型正在全球開啟新一輪生產力革新的科技浪潮。 …

【C語言】深入理解指針(四)

&#x1f308;write in front :&#x1f50d;個人主頁 &#xff1a; 啊森要自信的主頁 ??真正相信奇跡的家伙&#xff0c;本身和奇跡一樣了不起啊&#xff01; 歡迎大家關注&#x1f50d;點贊&#x1f44d;收藏??留言&#x1f4dd;>希望看完我的文章對你有小小的幫助&am…

帝國cms開發一個泛知識類的小程序的歷程記錄

#帝國cms小程序# 要開發一個泛知識類的小程序&#xff0c;要解決以下幾個問題。 1。知識內容的分類。 2。知識內容的內容展示。 3。知識內容的價格設置。 4。用戶體系&#xff0c;為簡化用戶的操作&#xff0c;在用戶進行下載的時候&#xff0c;請用戶輸入手機號&#xff…

【HarmonyOS】API6上JS實現視頻播放全屏播放時,會回到之前界面

【關鍵字】 API6 / 視頻播放 / 全屏播放異常 【問題現象】 開發者在API6上用JS實現視頻播放器點全屏播放后&#xff0c;不是全屏效果&#xff0c;實際效果是變成了橫屏并返回到首頁。 具體代碼實現是參考video媒體組件指南。 【問題分析】 JS實現視頻播放器有Codelab代碼示…

DedeBIZ 管理系統 DedeV6 v6.2.6 社區版 免費授權版

DedeBIZ 系統&#xff1a;開源、安全、高效的 DedeV6 v6.2.6 社區版 DedeBIZ 系統是基于 PHP 7 版本開發的&#xff0c;具有強大的可擴展性&#xff0c;并且完全開放源代碼。它采用現流行的 Go 語言設計開發&#xff0c;不僅擁有簡單易用、靈活擴展的特性&#xff0c;還具備更…

ElasticSearch之Health API

查看當前集群全部健康指標的信息&#xff0c;執行如下命令&#xff1a; curl -X GET "https://localhost:9200/_health_report?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; {&quo…

Niushop 開源商城 v5.1.7:支持PC、手機、小程序和APP多端電商的源碼

Niushop 系統是一款基于 ThinkPHP6 開發的電商系統&#xff0c;提供了豐富的功能和完善的商品機制。該系統支持普通商品和虛擬商品&#xff0c;并且針對虛擬商品還提供了完善的核銷機制。同時&#xff0c;它也支持新時代的商業模式&#xff0c;如拼團、分銷和多門店砍價等營銷活…

Platform Issues 平臺問題

Set processing does not behave the same on every database platform. On some platforms, set processing can encounter performance breakdowns. Some platforms do not optimize update statements that include subqueries. 集處理在每個數據庫平臺上的行為并不相同。在…

Log4j

通過Log4j&#xff0c;我們可以控制日志信息輸送到目的地是控制臺、文件、GUI組件&#xff0c;甚至是套接口服務器、NT的事件記錄器。我們可以控制每一條日志的輸出格式。通過定義每一條日志信息的級別&#xff0c;能更加細致地控制日志的生成過程。 1 log4j、log4j2與SLF4J …

【Vue3從入門到項目實現】前置知識及Vue基礎

概念 理論基礎 MVC 架構&#xff08;以JavaWeb舉例&#xff09; M &#xff1a;Model&#xff0c;&#xff08;pojo、service、dao等&#xff09;V &#xff1a;View&#xff0c;&#xff08;JSP, HTML等&#xff09;C&#xff1a;Controller (servlet) MVVC 架構&#xff…

C/C++ 使用API實現數據壓縮與解壓縮

在Windows編程中&#xff0c;經常會遇到需要對數據進行壓縮和解壓縮的情況&#xff0c;數據壓縮是一種常見的優化手段&#xff0c;能夠減小數據的存儲空間并提高傳輸效率。Windows提供了這些API函數&#xff0c;本文將深入探討使用Windows API進行數據壓縮與解壓縮的過程&#…

【Rust日報】2023-11-21 如何將 Rust 的編譯效率提高 75%

這是一篇來自 https://benw.is/posts/how-i-improved-my-rust-compile-times-by-seventy-five-percent 的總結和翻譯&#xff0c;我去掉了一些不太重要的章節&#xff0c;保留了所有關鍵技術點。 Rust經常被提到的一個痛點是編譯時間較慢。為了享受借用檢查器、安全性和零成本抽…

pikachu靶場Table pikachu.member doesn’t exist:解決

背景&#xff1a; 第一次搭建pikachu靶場&#xff0c;搭建好后訪問index.php后&#xff0c;嘗試練習&#xff0c;發現界面顯示Table pikachu.member doesn t exist&#xff0c;后來找了很多教程&#xff0c;沒有解決&#xff0c;后來發現是自己沒有進行初始化&#xff0c;給大家…

VMware 系列:ESXI6.7升級7.0

ESXI6.7升級7.0 一、下載補丁二、上傳文件三 啟用Shell四、登錄Shell后臺五、刪除不兼容驅動六、正常升級最近,將一臺使用ESXI6.7的虛擬機升級到了7.0版本,下面記錄一下自己的升級過程。 升級條件 首先確保硬件是否能升級到7.0版本,物理網卡驅動為e1000e不能升級,如果是ig…

不到十個例題帶你拿下c++雙指針算法(leetcode)

移動零問題 https://leetcode.cn/problems/move-zeroes/submissions/ 1.題目解析 必須在原數組進行修改&#xff0c;不可以新建一個數組 非零元素相對順序不變 2.算法原理 【數組劃分】【數組分塊】 這一類題會給我們一個數組&#xff0c;讓我們劃分區間&#xff0c;比如…

【機器學習】Nonlinear Independent Component Analysis - Aapo Hyv?rinen

Linear independent component analysis (ICA) x i ( k ) ∑ j 1 n a i j s j ( k ) for all i 1 … n , k 1 … K ( ) x_i(k) \sum_{j1}^{n} a_{ij}s_j(k) \quad \text{for all } i 1 \ldots n, k 1 \ldots K \tag{} xi?(k)j1∑n?aij?sj?(k)for all i1…n,k1…K()…

VUE語法-$refs和ref屬性的使用

1、$refs和ref屬性的使用 1、$refs:一個包含 DOM 元素和組件實例的對象&#xff0c;通過模板引用注冊。 2、ref實際上獲取元素的DOM節點 3、如果需要在Vue中操作DOM我們可以通過ref和$refs這兩個來實現 總結:$refs可以獲取被ref屬性修飾的元素的相關信息。 1.1、$refs和re…

PS_魔幻

首先打開一個背景圖片 然后ctrl j復制一層背景 在調整中將圖片改成黑白顏色 點擊調整中的 色相/飽和度 調整明度 點擊畫筆工具&#xff0c;并且設置畫筆模板 調節畫筆大小&#xff0c;將筆記本電腦涂個概況 然后再新建色相/飽和度 勾選著色 調節背景顏色至喜歡 右鍵混合選項 …