引言

当我们仅有一个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用法&…