加密与解密 调试篇 静态分析技术 (一)文件类型/窗口/定位

news2024/11/27 3:59:28

1.文件类型分析

逆向分析的第一步就是文件类型分析

文件使用什么写的 使用什么编译器编译的

是否被加密过

然后才能进入下一步

有很多工具可以进行分析

我选择exeinfo来查看

 

 但是并不是工具就可以直接分析完成

因为有些会存在欺骗

把入口代码改造成和Visual C++ 6.0类似的代码

就可以对该类软件进行欺骗

2.静态反汇编

先对程序进行检测工具查看是否加壳

如果加壳 先进性脱壳再反汇编

我们这里使用IDA Pro来进行静态反汇编的演示

取得随书文件 ReverseMe.exe

查壳

 发现没有加壳 并且是32位的 我们放入32位的ida

 IDA是通过区块加载PE文件的

例如
.text 代码块

.data 数据块

.rsrc 资源块

.idata 输入表

.edata 输出表

等

我们思索ida的分析过程

两个阶段

第一阶段:

将程序的代码和数据分开 分别标记函数

并且分析其参数调用、分析跳转、调用等指令 并且赋值



第二阶段:

如果ida能识别文件的编译类型 就装载对应的编译器特征文件

给各个函数赋名


然后 ida会创建数据库,他的组名分别保存在
.id0 .id1 .nam .til 四个文件中

如果我们关闭进程 就会保存为一个 IDB文件

ida一旦创建了数据库 就不需要重新访问可执行文件

除非需要动态调试

我们只需要打开数据库 就可以访问我们之前调试的进程

 

"kernel potion1"  "kernel potion2"  "processor potion"

是可以控制反汇编引擎工作状态的,一般是默认的

ida会自动识别程序类别和处理器类型

如果ida的代码分析出现问题

就把 kernel option2的 make final analysis pass 关闭

某些情况 会因为代码不在预计位置而不被确认

选中 kernel opinion2的 Coagulate Data Segments in the final pass 即可

 

 

 2.ida的配置

我们如果只是想 更改一次

在主程序界面的 Options选项修改即可

但是我们如果想一次性修改默认 就需要编辑 ida.cfg文件才可以

并且我们不能使用 记事本 因为有一些无法读取 会破坏文件

应该使用 EditPlus等软件

ida.cfg

ida.cfg由两个部分组成

第一部分是定义文件的扩展名、内存、屏幕等

第二部分是配置普通参数

例如代码显示格式等

反汇编选项(Disassembly)

这个选项直接控制反汇编窗口的显示

在 options->General->Disassembly可以配置

 我们也可以在ida.cfg中配置

 ASCII字符串和符号(ASCC strings & names)

3.ida的主窗口

一.反汇编窗口

有两个方式 图形视图(默认)和文本视图

图形视图的时候

是以程序流程图的形式显示代码

将函数分成很多基本块 

可以生动的显示函数的跳转和逻辑判断

我们可以使用空格来实现 图形文本视图的切换

或者 右键->Text view


当我们需要两个的时候

View -> Open subviews-> Disassembly 打开反汇编子窗口

这样就可以用多个窗口来分析

其他常用的窗口 "Functions" "Proximity browser"也可以打开

二.导航栏

View->Toolbars -> Navigation 可以打开导航栏

这里是可以看到线性视图

 在右键-> Zoom in 和Zoom out 可以调整显示倍率

三.注释

右键 ->Enter comment(:)/Enter repeatable(;)

';' 是在所有交叉参考处都会出现

':' 只出现在该处

如果一个地址有两个注释 就只会显示 非重复注释

四.提示窗口

IDA界面下面的提示窗口是IDA的输出控制台

用于反馈各种信息 例如 文件分析进度 状态消息 错误消息 ida脚本等

五.字符串窗口

View->Open Subviews->Strings

就可以打开字符串窗口

 这里面是显示从二进制文件中提取的一组字符串

双击字符串 反汇编窗口就会调到字符串所在的地址

右键->Setup 可以设置扫描字符串的类型

 

六.输入窗口

输入窗口包含了所有函数

在输入窗口的每一条目都列出了一个函数名称和函数的库的名称

每一条目列出的地址都是相关函数的虚拟地址

虚拟地址可以写为“段:偏移量”的形式

 双击函数可以调到反汇编窗口的函数地址

 七.跳转到地址窗口

我们可以在反汇编窗口进行滚动

直到看到想要访问的地址

如果我们知道目标地址

可以使用IDA的跳转到地址窗口

快捷键 G

 

 

 如果我们想要返回

 点击 <- 即可 或者 按ESC

 4.交叉参考(XREF)

例如这里

可以知道指令代码相互调用的关系

CODE XREF: sub_401120+B↑j

表示 该调用地址是 00401120h

j表示跳转

此外 这里  o表示是偏移量 offset

p 表示 子程序 procedure

双击 或者按 enter 可以跳转到调用该处的地方

 同时 在 loc_401164 按 X 可以打开交叉参考窗口

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04-闭包

闭包&#xff1a;函数嵌套函数&#xff0c;内部函数就是闭包&#xff0c;只有函数内部的子函数才能读取内部变量。 先上一个经典的闭包&#xff1a; function outerFun () {let a 10;function innerFun () {console.log(a);}return innerFun; } let fun outerFun(); fun();…

GPT提示词系统学习-第三课-规范化提示让样本走在提示词前

开篇 本教程将为您提供有关不同类型提示的术语及如何描述它们。尽管提示工程中已经有一些方法来形式化术语,但这个领域仍在不断发展,我们在这篇教程中将给到大家展示一种基于QA形式的通用的、标准的提示语写法。 提示的组成部分 以下是在一个提示中经常会出现的一些组成部…

Triton教程 --- 动态批处理

Triton教程 — 动态批处理 Triton 提供了动态批处理功能&#xff0c;将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下&#xff0c;只有当每个输入在请求中具有相同的形状时&#xff0c;请求才能被动态批处理。 为了在输入形状经常变化的情况下利用动态批处理…

【PCB专题】Allegro 生成钻孔数据方法

生成Drill Symbol 选择Manufacture->NC->Drill Customization... 在Drill Customization中选择Auto generate symbols(防止钻孔未定义图形符号,选择后会自动产生图形符号)。然后在弹出的警告框中选择是(Y)。最后点击OK。 生成Drill Legend 选择Manufacture->NC-&…

什么是OTN——光传送网?

概要 在现代通信网络中&#xff0c;光纤技术已经成为主流&#xff0c;提供了高速、高带宽的数据传输能力。光传送网&#xff08;Optical Transport Network&#xff0c;OTN&#xff09;是一种基于光纤技术的传输网络&#xff0c;用于实现可靠、高效的光纤通信。本文将详细介绍O…

01 React入门、虚拟DOM

总结 一、React 入门 1.1 特点 高性能、声明式、组件化、单向响应的数据流、JSX扩展、灵活 1.2 React初体验 <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpo…

AIDA64压力测试教程,AIDA64压力测试多长时间,AIDA64压力测试结果怎么看

硬件管理工具AIDA64功能全面专业&#xff0c;操作简便易学&#xff0c;使用AIDA64进行系统稳定性测试逐渐成为更多用户的选择。可能有很多用户对如何使用AIDA64进行系统稳定性测试不太了解&#xff0c;系统稳定性测试也称为压力测试&#xff0c;或者更通俗的烤机测试&#xff0…

SPI协议详细总结附实例图文讲解通信过程(快速掌握)

目录 一、简介二、数据通信过程2.1 通信总过程总结2.2 具体协议规则2.2.1 时钟极性与时钟相位2.2.2 SPI模式2.2.3 图文实例讲解 2.3 SPI协议优缺点总结 三、其他相关链接 一、简介 SPI(Serial Peripheral nterface&#xff0c;串行外设接口) 协议是一种高速高效率、全双工的通…

数据库SQL Server实验报告 之 SQL数据库的安全性(7/8)

实验名称 数据库的安全性实验 注意&#xff1a;原版word在下载资源里面&#xff08;免费下载&#xff09; 实验目的及要求&#xff1a; 使学生加深对数据库安全性和完整性的理解。掌握SQL Server中有关用户、角色及操作权限…

【Android复习笔记】ARouter / Navigation / EventBus

注:本文主要基于过去 Android View 体系的路由学习笔记整理,不包括最新的 Jetpack Compose 路由体系,如您需了解关于 Jetpack Compose 中的导航路由,请参考 Jetpack Compose 中的导航路由 一文。 传统路由方式 // 显性意图 startActivity(new Intent(this, HomeActivity.c…

JavaScript 的性能分析与提升

JavaScript 的性能分析与提升 对于 JavaScript/前端来说&#xff0c;性能的提升主要有两大方面&#xff1a; 页面初始化的优化 这一方面主要涉及到非代码结构上&#xff0c;但是能够提升用户体验感的优化&#xff0c;如&#xff0c;提升用户看到页面的速度、减少用户等待与页面…

一、枚举类型——使用接口来组织枚举

枚举类型无法被继承&#xff0c;这一点可能有时会让人沮丧。想要继承枚举的动机&#xff0c;一部分源自希望扩充原始枚举中的元素&#xff0c;另一部分源自想要使用子类型来创建不同的子分组。 你可以在一个接口内对元素进行分组&#xff0c;然后基于这个接口生成一个枚举&…

Python零基础入门(三)——基本输入与输出

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

关于 Vue3 响应式 API 以及 reactive 和 ref 的用法

文章目录 &#x1f4cb;前言&#x1f3af;关于响应式&#x1f3af;reactive 的用法&#x1f3af;ref 的用法&#x1f4dd;最后 &#x1f4cb;前言 这篇文章记录一下 Vue3 响应式的内容&#xff0c;其中还包括了 reactive 和 ref 的用法。响应式是一种允许以声明式的方式去适应…

VMware16虚拟机安装Ubuntu16.04 LTS

VMware14虚拟机安装Ubuntu16.04 LTS 一、基本介绍二、vmware下安装ubuntu系统2.1 下载ubuntu客户端镜像2.2 安装及配置2.2.1 安装2.2.2 配置 三、ubuntu系统使用 回到目录   回到末尾 一、基本介绍 对于ubuntu而言&#xff0c;就是linux操作系统的具体&#xff0c;而linux对…

S7-1200通过外部端子控制V20变频器启停+MODBUS读写频率的具体方法

S7-1200通过外部端子控制启停+MODBUS读写频率的具体方法 本例中是通过S7-1200PLC外部端子的方式控制变频器启停,用Mobus RTU通讯读写变频器频率。 硬件连接: 屏蔽双绞线将V20变频器P+,N-连接到CPU上CB1241 T/RA 和T/RB, T/RB接P+,T/RA接N-。TA和T/RA用短线连上,TB和T/RB用短…

jmeter函数助手

详解JMeter函数和变量 测试人员可以在JMeter的选项菜单中找到函数助手对话框&#xff08;"Function Helper"对话框&#xff09;&#xff0c;如图11-1所示。 图11-1 函数助手&#xff08;Function Helper&#xff09;对话框 使用函数助手&#xff0c;测试人员可以…

【Python】文件操作 ② ( 文件操作 | 读取文件 | read 函数 | readline 函数 | readlines 函数 )

文章目录 一、读取文件1、read 函数2、readline 函数3、readlines 函数 二、代码示例 - 读取文件1、代码示例 - read 函数读取文件 10 字节内容2、代码示例 - read 函数读取文件所有内容3、代码示例 - readline 函数读取文件一行内容4、代码示例 - readlines 函数读取文件所有内…

利用 AI 作图帮助理解知识

一、背景 人类对图形的接受和处理能力高于对文字和数字的处理能力。 如果我们学习某个知识的时候&#xff0c;能够找到配套的图&#xff0c;理解会好很多。 但&#xff0c;并不是所有的知识都有配图。 然而&#xff0c;人工智能的时代已经来临&#xff0c;为什么不尝试用 AI…

Flutter 项目创建、运行及结构分析

目录 开发工具 创建项目 1.New Flutter Project 1.1直接创建新项目 1.2 已有项目创建新项目 2.选择SDK&#xff0c;补充项目资料 3.Demo已生成 3.1 android 目录 3.2 ios目录 3.3 lib目录 3.4 test 目录(可先不管) 4.配置文件 4.1 pubspec.yaml文件 4.2 pubspec.lock 4…