12.第二階段x64游戲實戰-遠程調試

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!

本次游戲沒法給

內容參考于:微塵網絡安全

上一個內容:11.第二階段x64游戲實戰-框架代碼細節優化

本次寫的內容是關于調試、排錯相關的,在寫代碼的過程中肯定會遇到問題,不可能會一帆風順

比如說注入我們寫的dll之后游戲就會崩潰或者點擊按鈕之后會崩潰,這要怎么解決問題?怎么找出問題在哪,比如有人寫了代碼會讓游戲崩潰,然后跑過來跟我說游戲崩潰,我根本不知道你說的是什么,正確的是找到問題,比如這行代碼怎么怎么報錯了怎么怎么不行,就要把問題的細節描述出來

首先是注入就崩潰,這是什么情況?

關于注入就崩潰這個問題,首先要搞清楚代碼執行的流程,就是說我們的dll一注入進去會發生什么情況,從哪里開始執行,如下圖紅框MFCdll一注入進去會從以項目名字命名的.cpp文件開始

從InitInstance函數開始執行

所以一注入就崩潰可以寫打印日志的代碼,如下圖紅框的代碼是用來打印日志

然后如下圖紅框就在InitInstance函數中調用LogA函數,打印日志,這樣可以看到執行到哪一行,導致的崩潰,如果打印了1111沒打印2222就說明73行代碼報錯了,這樣就定位到錯誤的代碼了,就是看它執行到那了該有的日志有沒有打印出來

查看日志的方式是通過Dbgview這個軟件,打開之后點擊下圖紅框位置,包含寫的*說明所有日志都打印,包含它還可以AAA*這樣就只打印內容以AAA開頭的數據,排除寫的1;2;3說明只要日志的內容包含1或2或3就不顯示

現在的日志代碼正常執行它會打印1111、2222、3333、4444

注入打印的內容,為什么沒打印4444?因為 PMainDialog->DoModal(); 這個代碼是一個模態窗口,代碼會在它這一行卡主后面不會執行,只有把窗口關閉了才會打印4444

關閉窗口打印4444,通過這些步驟的打印就可以清楚的知道代碼執行的流程,也就能知道注入就崩潰是哪一行代碼引起的

注入不崩潰點擊按鈕這種的崩潰怎么辦?

也是跟上方注入崩潰一樣,找到按鈕點擊之后執行的函數,把每一行都加上LogA,看看執行了哪一行代碼導致了崩潰

如果不想用上面的方式可以使用 Visual Studio 2022 提供的附加,如下圖點擊附加到進程

然后如下圖搜索進程名,找到想要附加的進程

鼠標左鍵單機進程,然后點附加

附加之后的樣子

然后在入口位置設置斷點,如下圖紅框

然后使用注入器注入我們的dll文件,然后就可以觸發我們設置的斷點了

它是可以直接看得到每個變量內存的數據的,可以很方便的看崩潰的原因 ,比較好用,但是有些有檢測的軟件沒法使用,到時候還是要用LogA的方式


img

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

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

相關文章

c++基礎三

1.繼承 繼承表示,子類可以獲取父類的屬性和方法,然后可以寫子類獨有的屬性和方法,或者修改父類的方法。類可以繼承父類的公共成員(public),但不能繼承私有成員(private),私有成員只能在父類內部訪問。 1.1 案例一單繼承 #include <iostream>using namespace …

JSON學習筆記

文章目錄 1. JSON是什么2. JSON的特點與結構3. JSON的使用4. JSON文件讀取 1. JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript對象表示法&#xff09;是一種輕量級的數據交換格式&#xff0c;易于人閱讀和編寫&#xff0c;同時也易于機器解析和…

王牌學院,25西電通信工程學院(考研錄取情況)

1、通信工程學院各個方向 2、通信工程學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、信息與通信工程25年相較于24年上升5分、軍隊指揮學25年相較于24年上升30分 2、新一代電子信息技術&#xff08;專碩&#xff09;25年相較于24年下降25分、通信工程&…

WPF依賴注入IHostApplicationLifetime關閉程序

WPF依賴注入IHostApplicationLifetime關閉程序 使用Application.Current.Shutdown();退出會報異常 應該使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…

Jenkins 代理自動化-dotnet程序

兩種方式 容器部署 本地部署 容器部署 可自動實現&#xff0c;服務器重啟&#xff0c;容器自動運行 主要將dockerfile 寫好 本地部署 1.服務器重啟自動運行代理 參考下面的鏈接&#xff0c;只是把程序換成 java程序&#xff0c;提前確認好需要的jdk版本 Ubuntu20.04 設置開機…

從Archery到NineData:積加科技驅動數據庫研發效能與數據安全雙升級

積加科技作為國內領先的企業級數字化解決方案服務商&#xff0c;依托自研的 A4X 數字化平臺&#xff08;https://a4x.io/&#xff09;&#xff0c;專注于為全球范圍內的視覺物聯網&#xff08;IoT&#xff09;設備提供 PaaS/SaaS 服務。致力于運用 AI 技術賦能物聯網世界的各類…

SpringBoot整合Logback日志框架深度實踐

一、依賴與默認集成機制 SpringBoot從2.x版本開始默認集成Logback日志框架,無需手動添加額外依賴。當項目引入spring-boot-starter-web時,該組件已包含spring-boot-starter-logging,其底層實現基于Logback+SLF4J組合。這種設計使得開發者只需關注業務日志的輸出規則,無需處…

自由學習記錄(56)

從貼圖空間&#xff08;texture space&#xff09;將值還原到切線空間&#xff08;tangent space&#xff09;向量 tangentNormal.xy (packedNormal.xy * 2 - 1) * _BumpScale; 背后的知識點&#xff1a;法線貼圖中的 RGB 是在 0~1 范圍內編碼的向量 所以貼圖法線是怎么“壓…

【mysql】mysql疑難問題:實際場景解釋什么是排它鎖 當前讀 快照讀

注&#xff1a; 理解本文 前置需要掌握的基礎知識&#xff1a;事務隔離、鎖的概念、并發知識&#xff1b; 事務隔離 尤其是事務延伸問題 是個重難點&#xff0c;絕非八股文那幾句話就能說完的&#xff0c;在實際場景中&#xff0c;分析起來有一定難度 author: csdn博主 孟秋與你…

Python:使用web框架Flask搭建網站

Date: 2025.04.19 20:30:43 author: lijianzhan Flask 是一個輕量級的 Python Web 開發框架&#xff0c;以簡潔靈活著稱&#xff0c;適合快速構建中小型 Web 應用或 API 服務。以下是 Flask 的核心概念、使用方法和實踐指南 Flask 的核心特點&#xff1a; 輕量級 核心代碼僅約…

層次式架構核心:中間層的功能、優勢與技術選型全解析

層次式架構中的中間層是整個架構的核心樞紐&#xff0c;承擔著多種重要職責&#xff0c;在功能實現、優勢體現以及技術選型等方面都有豐富的內容&#xff0c;以下為你詳細介紹&#xff1a; 一、功能 1.業務邏輯處理 復雜規則運算&#xff1a;在許多企業級應用中&#xff0c;…

網絡--應用層自定義協議與序列化

目錄 4-1 應用層 4-2 重新理解 read、write、recv、send 和 tcp 為什么支持全雙工 4-3 開始實現 4-1 應用層 我們程序員寫的一個個解決我們實際問題 , 滿足我們日常需求的網絡程序 , 都是在應用 層 . 再談 " 協議 " 協議是一種 " 約定 ". socke…

fastlio用mid360錄制的bag包離線建圖,提示消息類型錯誤

我用mid360錄制的bag包&#xff0c;激光雷達的數據類型是sensor_msgs::PointCloud2&#xff0c;但是運行fast_lio中的mid360 launch文件&#xff0c;會報錯&#xff08;沒截圖&#xff09;&#xff0c;顯示無法從livox_ros_driver2::CustomMsg轉換到sensor_msgs::PointCloud2。…

C# WinForm窗口TextBox控件只能輸入數字(包括小數)并且恢復Ctrl+C復制和Ctrl+V粘貼功能

1. 前言 最近在寫定GPS定位時&#xff0c;經緯度是用的double類型&#xff0c;并且經緯度的要求是小數點后最少6位&#xff0c;多了能達到17位&#xff0c;又遇到了常用的TextBox控件只能輸入數字、小數的功能&#xff0c;因為有一年多沒有寫程序&#xff0c;現在再來寫這些感…

【MySQL數據庫】數據類型

目錄 1&#xff0c;數據類型分類 2&#xff0c;bit類型 3&#xff0c;小數類型 3-1&#xff0c;float/double類型 3-2&#xff0c;decimal類型 4&#xff0c;字符串類型 4-1&#xff0c;char 4-2&#xff0c;varchar 5&#xff0c;日期和時間類型 6&#xff0c;enum和…

Spark-SQL核心編程2

路徑問題 相對路徑與絕對路徑&#xff1a;建議使用絕對路徑&#xff0c;避免復制粘貼導致的錯誤&#xff0c;必要時將斜杠改為雙反斜杠。 數據處理與展示 SQL 風格語法&#xff1a;創建臨時視圖并使用 SQL 風格語法查詢數據。 DSL 風格語法&#xff1a;使用 DSL 風格語法查詢…

pandas庫詳解

CONTENT 基本數據結構SeriesDataFrame 數據讀取與寫入讀取 CSV 文件寫入 CSV 文件 數據清洗處理缺失值數據類型轉換 數據操作索引與切片數據合并數據分組與聚合 數據可視化 基本數據結構 Series Series 屬于一維標記數組&#xff0c;由一組數據和對應的索引構成。 import pa…

黑馬商城(五)微服務保護和分布式事務

一、雪崩問題 二、雪崩-解決方案&#xff08;服務保護方案&#xff09; 請求限流&#xff1a; 線程隔離&#xff1a; 服務熔斷&#xff1a; 服務保護組件&#xff1a; 三、Sentinel 引入依賴&#xff1a; <!--sentinel--> <dependency><groupId>com.aliba…

洛谷P1312 [NOIP 2011 提高組] Mayan 游戲

題目 #算法/進階搜索 思路: 根據題意,我們可以知道,這題只能枚舉,剪枝,因此,我們考慮如何枚舉,剪枝. 首先,我們要定義下降函數down(),使得小木塊右移時,能夠下降到最低處,其次,我們還需要寫出判斷函數,判斷矩陣內是否有小木塊沒被消除.另外,我們還需要消除函數,將矩陣內三個相連…

基于Redis的3種分布式ID生成策略

在分布式系統設計中&#xff0c;全局唯一ID是一個基礎而關鍵的組件。隨著業務規模擴大和系統架構向微服務演進&#xff0c;傳統的單機自增ID已無法滿足需求。高并發、高可用的分布式ID生成方案成為構建可靠分布式系統的必要條件。 Redis具備高性能、原子操作及簡單易用的特性&…