使用x64dbg分析調試windows可執行程序

引言

當我們僅有一個C/C++等編譯的可執行程序(windows 上的 exe 文件),而沒有源碼時我們應該怎么分析調試該可執行程序呢?我們可以通過動態分析或靜態分析的方式達成我們的目的,當然比較有效的方案當然是靜態分析結合動態分析的方式。在靜態分析中常使用IDA等工具進行分析,在動態分析時我們常使用 OllyDbg、windbg、x64dbg等進行分析,OllyDbg后面已經不在維護了,僅支持32位程序,windbg上手難度比較高,所以本次我們介紹 x64dbg 工具的使用。

工具的下載與安裝

首先我們要學習使用 x64dbg 當然要先下載安裝該工具,該工具是綠色免安裝的,我們可直接訪問官方地址 https://x64dbg.com/ 進行下載,下載后是一個壓縮包文件,我們進入解壓后的目錄中,找到 x96dbg.exe 文件,雙擊運行,運行后我們可以選擇點擊安裝,按照操作提示安裝即可。當然我們也可以不安裝直接運行。

該工具安裝后會在桌面創建兩個快捷方式,同時也會在鼠標右鍵菜單中添加快捷菜單。

調試

打開進程

要想調試程序我們先要打開程序,x64dbg 有連個獨立的程序x32dbg和x64dbg,分別用于調試windows的32位和64位程序,我們需要使用對應的程序進行調試

直接打開程序

首先要介紹的第一種打開方式是直接打開程序,我們可以找到我們要調試的程序,單擊鼠標右鍵,選擇x64dbg直接進行調試,也可以先打開x64dbg,然后選擇文件->打開,然后選擇我們要調試的程序,當然直接拖進來也是可以的。

附加到現有進程

第二種調試方式是附加到現有進程,當程序已經在運行狀態時,我們可以打開工具,然后點擊 文件->附加 選擇要調試的進程進行附加調試

頁面介紹

程序打開后我們可以看到如下頁面
在這里插入圖片描述

最大的窗口是反匯編窗口,用于顯示當前的反匯編內容,它下面的是內存窗口,可以通過地址查看內存中的數據,它右邊的是寄存器窗口,用于顯示當前寄存器中的值,寄存器窗口下面是棧窗口,用于顯示當前棧內的數據

調試

要調試我們最常用的首先就是添加斷點,在反匯編窗口中找到我們要添加斷點的位置,然后按 F2 鍵即可添加斷點,再次按F2鍵即可取消斷點

步過,所謂的步過就是單步執行,遇到調用指令時不會進入調用的函數的內部,我們可以通過 F8 鍵使用步過

步進,所謂的步進和步過的區別就是在遇到調用指令時會進入到所調用的函數內部

繼續執行可以按 F9,程序會在遇到下一個斷點或出現異常時再次停下來

內存布局

按 Alt + M 可以切換到內存布局頁面,在此頁面中我們可以看到各個模塊以及各個段的加載地址

符號

按 Alt + E 可以切換到符號頁面,在該頁面中我們可以單機模塊,在右側中查看內部的符號信息,同時我們也可以在此頁面對符號進行搜索,找到我們需要調試接口

對于windows提供的系統庫我們可以通過鼠標右鍵下載對應的符號信息文件

調試技巧

通過上面的介紹我們初步了解到了工具是如何使用的,這里并沒有長篇大論僅把最常用最基礎的功能告訴大家,因為寫的太長了我自己都不愿意看;接下來給大家介紹一些簡單的調試技巧

通過UI信息找到調試位置

我們在調試時很大的一個困難就是我們不知道哪里才是我們想要調試的部分,那應該怎么辦呢,首先第一種方法是通過UI的界面提示找到我們要調試的位置

比如我們在輸入授權碼時的錯誤提示信息,我們可以根據上面的字符串找到我們要調試的位置

要搜索字符串我們可以在CPU頁面的反匯編窗口中單機鼠標右鍵,選擇搜索,然后根據需要選擇搜索范圍,最后點擊字符串,接下來我們就可已在下面輸入我們發現的字符串進行搜索了
在這里插入圖片描述

找到目標字符串后我們通過雙擊即可跳轉到使用的位置了,這樣我們也就找到了對應位置的代碼了

通過系統接口進行定位

我們可以通過一些關鍵的系統接口進行定位,思路是我們根據目標程序的行為進行初步判斷,判斷它可能調用了哪些系統接口,比如創建文件?寫入文件?彈出對話框等等等等,猜到了程序調用的系統接口后我們就可以在符號頁面找到對應的系統接口,然后通過單機跳轉到反匯編,添加斷點進行調試,這樣當程序調用該接口時就會觸發斷點,我們也就可以根據調用堆棧找到對應的邏輯了

防止調試分析

我們的程序經常不想讓用戶進行分析,因為通過簡單的分析就可以知道我們程序的邏輯,核心算法,還可以對我們的程序進行修改和破解,那我們應該如何進行訪問呢?

答案就是加殼,使用 Virbox protector 工具進行加殼后就可以防止其他人對我們的程序進行惡意分析和修改了,我們可以禁止其調試我們的程序,還可以對我們的程序進行和保護,讓其無法分析出我們的邏輯,同時還可以對程序內部的字符串等信息進行加密的等等

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

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

相關文章

在Windows 11上配置Cursor IDE進行Java開發

前言 Cursor IDE是一款基于VSCode的AI編程助手,集成了強大的AI功能,能夠顯著提升Java開發效率。本文詳細介紹如何在Windows 11系統上安裝和配置Cursor IDE,使其成為高效的Java開發環境。 1. Windows 11上安裝Cursor IDE 1.1 下載和安裝步驟…

字符串-43.字符串相乘-力扣(LeetCode)

一、題目解析 1、計算乘積后,將結果也按字符串返回 2、字符串長度在[1,200] 二、算法原理 為了方便字符串計算,我們將其逆置,符合我們的計算需求,"123"將變為"321" 解法1:模擬小學…

鴻蒙HAP包解包、打包、簽名及加固全流程解析

在鴻蒙應用開發過程中,HAP(HarmonyOS Ability Package)包的解包、打包、簽名以及加固是開發者們繞不開的重要環節。今天,就讓我們深入探討這一全流程,幫助大家更好地理解和掌握相關操作。 一、HAP解包 解包是分析和修…

PyTorch之張量創建與運算

PyTorch 主要有以下幾個基礎概念:張量(Tensor)、自動求導(Autograd)、神經網絡模塊(nn.Module)、優化器(optim)等。張量(Tensor):PyTo…

數據 儲存

文件儲存 網頁版爬蟲數據庫 : https://spidertools.cn/#/crypto TEXT 文本儲存 可以使用記事本打開 r #讀取。 r #讀寫,文件指針放在文件的開頭。 w #寫入,覆蓋原文件。 w #讀寫,覆蓋原文件。 a #附加。 a #讀寫&…

Flask 博客系統(Flask Blog System)

目標:零基礎也能從頭搭建一個支持文章管理、評論、分類標簽、搜索、用戶登錄的博客系統 技術棧:Flask SQLite SQLAlchemy Jinja2 HTML/CSS Flask-Login 開發工具:VSCode 學習重點:MVC 模式、數據庫操作、會話管理、表單處理一…

基于RFID技術的寵物自動喂食器方案

一、背景 寵物已經成為現代人生活中不可或缺的一部分,隨著養寵物的人越來越多,寵物的數量也越來越多,有些家庭甚至養了兩只以上的貓狗或者貓狗混養,寵物間的管理問題也越來越突出,如寵物之間的搶食行為,易…

conda常見問題

文章目錄run "conda init" before "conda activate"打開PowerShell自動進入base環境(cmd沒有這個問題)run “conda init” before “conda activate” 在使用conda命令創建env后使用conda activate命令,出現"run ‘…

第5章 HTTPS與安全配置

5.1 HTTPS概述 5.1.1 為什么需要HTTPS 數據加密:保護傳輸中的敏感數據 身份驗證:確認服務器身份的真實性 數據完整性:防止數據在傳輸過程中被篡改 SEO優勢:搜索引擎優先排名HTTPS網站 瀏覽器要求:現代瀏覽器對HTTP網站顯示不安全警告 合規要求:許多行業標準要求使用HTTP…

Java入門級教程17——利用Java SPI機制制作驗證碼、利用Java RMI機制實現分布式登錄驗證系統

目錄 1.制作驗證碼——java SPI機制 1.1 類所屬包情況 1.2 具體實現 1.2.1 核心接口:ICode 1.2.2 接口實現類:驗證碼的具體生成邏輯 1.2.3 服務工廠類:CodeServiceFactory(核心:SPI 服務發現) 1.2.…

ES6筆記5

1. Promise相當于一個容器,保存著未來才要結束的事件(異步操作)的一個結果,各種異步操作都可以用同樣方法處理 axios特點:對象的狀態不受外界影響,處理異步操作,3個狀態,Pending&…

解決idea2021maven依賴導入后還是找不到包,爆紅無法導入

1.依賴導入后pom.xml文件以及Maven,此兩處代碼還是爆紅 2.解決方法 由技術大佬同事幾分鐘解決,他記憶深刻之前搞過很久,一看就知道哪里出問題了 我之前是配過Maven的本地倉庫的但是沒有用,這次出問題之后長教訓了,技術大佬說盡量用自己的本地倉庫,不要用idea的Maven倉庫,容易…

【硬件-筆試面試題-81】硬件/電子工程師,筆試面試題(知識點:詳細講講同步時鐘與異步時鐘通信)

題目匯總版--鏈接: 【硬件-筆試面試題】硬件/電子工程師,筆試面試題匯總版,持續更新學習,加油!!!-CSDN博客 【硬件-筆試面試題-81】硬件/電子工程師,筆試面試題(知識點…

php計算一個模擬增長過程函數

private function calculateGrowth($progress) {// 使用多個增長階段模擬不均勻性if ($progress < 0.3) {// 前30%時間&#xff1a;緩慢增長 30 %return pow($progress / 0.3, 0.7) * 0.3;} elseif ($progress < 0.7) {// 中間40%時間&#xff1a;快速增長 50%return 0.3…

華為USG6000v2 NAT模式下IPSEC IKE V1 實驗

USG6000v2 NAT模式下IPSEC 實驗 拓撲圖公網配置OSPF路由協議&#xff08;網絡要求能通就行&#xff09; 一、 總部配置 &#xff08;一&#xff09;交換機配置 1、 總部交換機到防火墻網段 192.168.10.0/24 2、 交換機G0/0設置成access端口劃分vlan 10&#xff0c;網關 192.168…

android 里設計context的作用

Android中的Context是一個核心設計機制&#xff0c;其作用主要體現在以下幾個方面&#xff1a; 1. 提供應用程序環境信息 Context作為抽象類&#xff0c;封裝了應用與系統交互所需的全局環境信息&#xff0c;包括資源訪問、組件啟動、系統服務調用等基礎能力。它本質上是應用…

能發彈幕的簡單視頻網站

界面參考了Youtube&#xff0c;后端使用Spring Boot&#xff0c;前端Vue&#xff0c;vuetifyjs。支持自動生成封面圖&#xff0c;發送彈幕、AI內容審核等功能。 一個簡單的視頻網站 網站名稱是 TikTok 與 YouTube 的縫合&#xff0c;Logo 為豆包 AI 生成 主要界面參考了 Yout…

了解網站安全監測系統的重要性

在當今數字化時代&#xff0c;網站已經成為企業發展和品牌推廣的關鍵渠道之一。然而&#xff0c;隨之而來的是網絡安全威脅的增加&#xff0c;包括數據泄露、惡意攻擊和病毒感染等問題。為了保護網站和用戶信息的安全&#xff0c;網站安全監測系統變得至關重要。1. 網站安全監測…

fastadmin安裝后后臺提示putenv()報錯,不顯示驗證碼

1.安裝fastadmin后&#xff0c;訪問項目后臺&#xff0c;提示報錯&#xff1a;Warning: putenv() has been disabled for security reasons in /www/wwwroot/app.aaa.cn/thinkphp/base.php on line 50 這時候驗證碼還不顯示&#xff0c;怎么解決呢&#xff1f;2.打開php.ini文件…

C語言深度入門系列:第二篇 - 變量與數據類型:程序世界的基本粒子與容器

C語言深度入門系列&#xff1a;第二篇 - 變量與數據類型&#xff1a;程序世界的基本粒子與容器 本章目標 本章將深入探討程序如何“記住”信息。你將徹底理解變量的本質是內存中的一塊空間&#xff0c;數據類型是解釋這塊內存中0和1的規則。我們將超越簡單的int, float用法&…