当前位置: 首页 > news >正文

IDA 实战--(2)熟悉工具

布局介绍

  1. 软件启动后会 有几个选项,一般直接选择Go 即可
    在这里插入图片描述
  2. 之后的工作台布局如下
    在这里插入图片描述

开始分析

分析的第一个,将PE 文件拖入工作区
刚开始接触,我们先保持默认选项,其它选项后面会详细讲解,点击OK 后,等待分析完成
在这里插入图片描述
分析后的界面布局如下
在这里插入图片描述
默认是流程化显示汇编代码,可以按空格转换为正常模式,这里自动定位到main 函数了
在这里插入图片描述
我们先分析下 main 函数的整体流程,将main 函数的反汇编代码复制过来

.text:00401010                               ; =============== S U B R O U T I N E =======================================
.text:00401010
.text:00401010                               ; Attributes: bp-based frame
.text:00401010
.text:00401010                               ; int __cdecl main_0(int argc, const char **argv, const char **envp)
.text:00401010                               _main_0 proc near                       ; CODE XREF: _main↑j
.text:00401010
.text:00401010                               var_40= byte ptr -40h
.text:00401010                               argc= dword ptr  8
.text:00401010                               argv= dword ptr  0Ch
.text:00401010                               envp= dword ptr  10h
.text:00401010
.text:00401010 55                            push    ebp
.text:00401011 8B EC                         mov     ebp, esp
.text:00401013 83 EC 40                      sub     esp, 40h
.text:00401016 53                            push    ebx
.text:00401017 56                            push    esi
.text:00401018 57                            push    edi
.text:00401019 8D 7D C0                      lea     edi, [ebp+var_40]
.text:0040101C B9 10 00 00 00                mov     ecx, 10h
.text:00401021 B8 CC CC CC CC                mov     eax, 0CCCCCCCCh
.text:00401026 F3 AB                         rep stosd
.text:00401028 68 1C 20 42 00                push    offset Format                   ; "Hello World!\n"
.text:0040102D E8 2E 00 00 00                call    _printf
.text:0040102D
.text:00401032 83 C4 04                      add     esp, 4
.text:00401035 33 C0                         xor     eax, eax
.text:00401037 5F                            pop     edi
.text:00401038 5E                            pop     esi
.text:00401039 5B                            pop     ebx
.text:0040103A 83 C4 40                      add     esp, 40h
.text:0040103D 3B EC                         cmp     ebp, esp
.text:0040103F E8 9C 00 00 00                call    __chkesp
.text:0040103F
.text:00401044 8B E5                         mov     esp, ebp
.text:00401046 5D                            pop     ebp
.text:00401047 C3                            retn
.text:00401047
.text:00401047                               _main_0 endp
.text:00401047
.text:00401047                               ; ---------------------------------------------------------------------------

.text:00401010 55 push ebp 将ebp 寄存器入栈,上面的都是一些描述信息,暂时忽略,我们从这一行开始

.text:00401011 8B EC mov ebp, esp 将esp 寄存器赋值给ebp
.text:00401013 83 EC 40 sub esp, 40h 开辟40h 的栈空间备用
.text:00401016 53 push ebx 将ebx 入栈
.text:00401017 56 push esi 将esi 入栈
.text:00401018 57 push edi 将edi 入栈
.text:00401019 8D 7D C0 lea edi, [ebp+var_40] 加载 ebp+var_40 地址到 edi
.text:0040101C B9 10 00 00 00 mov ecx, 10h 将ecs 赋值为10h
.text:00401021 B8 CC CC CC CC mov eax, 0CCCCCCCCh 将eax 赋值为0CCCCCCCCh
.text:00401026 F3 AB rep stosd 重复上面的操作10h ,其实这4条汇编代码就是个循环赋值过程

.text:00401028 68 1C 20 42 00 push offset Format 传入参数,为什么是传入参数呢,这里要结合下面call 指令联合分析,根据x86 的调用约定,在调用函数前,需要先将参数入栈(双击Format 可以定位到数据区,不清楚PE 文件结构的,可以参考文章 《PE 文件结构解析》)
在这里插入图片描述
在这里插入图片描述

.text:0040102D E8 2E 00 00 00 call _printf 调用printf 函数

后面的指令,暂时可以认为是函数调用完之后来清理现场的,不用过多纠结,这几个一般出现在函数调用结束之后,用来平衡函数的堆栈。

至此,main 函数分析完成

相关文章:

IDA 实战--(2)熟悉工具

布局介绍 软件启动后会 有几个选项,一般直接选择Go 即可 之后的工作台布局如下 开始分析 分析的第一个,将PE 文件拖入工作区 刚开始接触,我们先保持默认选项,其它选项后面会详细讲解,点击OK 后,等待分析…...

Deep Unsupervised Learning using Nonequilibrium Thermodynamics论文翻译学习

Deep Unsupervised Learning using Nonequilibrium Thermodynamics Author: Jascha Sohl-Dickstein Link: http://proceedings.mlr.press/v37/sohl-dickstein15.pdf Score: ⭐️⭐️⭐️⭐️⭐️ Status: Done Type: Academic Journal 备注: 首篇扩散模型论文 A central prob…...

使用Autoware标定工具包联合标定相机和激光雷达

前面文章介绍了,安装autoware标定工具包、ros驱动usb相机、robosense-16线激光雷达的使用,本文记录使用Autoware标定工具包联合标定相机和激光雷达的过程。1.ros驱动相机,启动相机;启动激光雷达2.联合录制bag包rosbag record -a 参…...

了解线程安全

线程安全是多线程的重点和难点。 线程安全概念 线程安全:在多线程的各种随机调度顺序下,代码没有bug,都能够符合预期的方式来执行,此时认为线程安全 线程不安全:如果在多线程随机调度下代码出现bug,此时…...

【git】git版本控制

目录 1.在合适的位置打开bush,创建仓库 2.检查:跳转到当前文件夹,显示当前文件夹的相对路径 3.初始化 4.创建一个文本文件readme.txt 5.手动向readme文件中添加一些内容 6.把文件添加到暂存区 7.把文件提交到git仓库 8.手动修改readme.txt文件 9.查看当前…...

模电学习7. 三极管特性曲线与静态工作点

模电学习7. 三极管特性曲线与静态工作点一、三极管的伏安特性曲线1. 三极管的伏安特性曲线2. 三极管的静态工作点二、合适的静态工作点选择1. 合适静态工作点条件2. 静态工作点的确定三、使用立创EDA仿真查看静态工作点1. 搭建如下图所示测试电路2. 点击菜单仿真、仿真设置3. 运…...

LeetCode题解:633. 平方数之和,双指针,JavaScript,详细注释

原题链接: https://leetcode.cn/problems/sum-of-square-numbers/ 解题思路: a和b一定是000到c\sqrt cc​之间的某个值。将a的初始值设为0。b的初始值设为c\sqrt cc​,b必须为整数。a和b向中间逼近,查找满足条件的值。由于a和b是…...

Keil编译头文件iec_std_functions.h错误解决

Keil 编译IEC61131-3库,头文件,大量出现以下错误; cast to type ? is not allowed compiling resource1.c... ..\PLC\rts\matiec\lib\C\iec_std_functions.h(192): error: #119: cast to type "TIME" is not allowed…...

2022 赣育杯 CTF --- Crypto Lost_N wp

文章目录前言题目解题过程解题代码前言 这是去年江西省赛一道有点小坑的密码题,当时没做出来,今天回想起来重新做一下并且记录一下。 题目 Lost_N.py import gmpy2 from Crypto.Util.number import * # part1 flag bSangFor{} d getPrime(435) cou…...

【趋势分析方法三】MATLAB代码实现TFPW-MK检验

目前水文时间序列趋势分析的方法很多,主要分为参数检验和非参数检验两大类: 参数检验中常用的有线性回归法、滑动平均法、累积距平法等非参数检验则主要包括Mann-Kendal(MK)法和 Spearman 秩次相关法等 虽然从理论上讲&#xff…...

一文学会 Spring 整合 MyBatis

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

ElasticSearch - 文档 | 索引文档 | 检索文档 | 创建索引并指明映射

文章目录1. ElasticSearch是面向文档的2. 索引员工文档3. 检索员工文档4. 映射1. ElasticSearch是面向文档的 在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。 Elastic…...

SQL中的DML、DDL、DCL分别是什么意思

SQL命令的分类 数据定义语言 DDL(DataDefinition Language) 是 SQL 语言集中负责数据结构定义。 DDL 的核心指令是CREATE、ALTER、DROP。 操作的对象包括:库、表、视图、索引等。 如:CREATE TABLE ; ALTER INDEX; DROP VIEW; 数据…...

kubeasz部署k8s高可用集群

前言:如无特殊说明,所有操作都用root账号在所有节点执行。 说明:kubeasz是一款国产开源的k8s部署软件,采用ansible role的部署方式,部署k8s二进制集群。熟悉ansible role的用该软件部署k8s方便快捷。 一、机器 deplo…...

2022年工程机械出口专题研究【重工】

文章目录2022年工程机械出口专题研究1、中国是全球工程机械第一大市场,竞争力逐步提升2、工程机械出口高增,市场分布趋于多元,企业营收获益3、海外市场高速增长原因为何?4、海外市场增长动能预测附件:2022年工程机械出…...

[python入门(51)] - python时间日期格式time和datetime

目录 ❤ 预备知识 ❤ UTC time Coordinated Universal Time ❤ epoch time ❤ timestamp(时间戳) ❤ stamptime时间戳 ❤ struct_time时间元组 ❤ format time 格式化时间 ❤ time模块​编辑 ❤ 获取当前时间的方法 ❤ 当传入默认参…...

别担心ChatGPT距离替代程序猿还有距离

经过多天对chat-GPT在工作的使用,我得出一个结论,它睁眼瞎说就算了,它还积极认错,绝不改正,错误答案极具误导性,啥也不说了,请看图。 经过N次较量它固执的认为 0011 1101 0110 0101在最高位是左…...

SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境

制作通用模块jar包 通用模块不是运行的&#xff0c;而且要被其他模块引入的&#xff0c;所以该模块不能采用springboot打包方式制作jar包&#xff0c;否则其他模块无法引入通用模块。 1、修改通用模块&#xff0c;设置模块为非Springboot项目 <?xml version"1.0&qu…...

OpenGov的首个方案已上线Moonriver

随着公投128的通过&#xff0c;作为Runtime 2100的一部分&#xff0c;Moonbeam在Moonriver上推出了OpenGov。Moonbeam上的OpenGov部署将从Moonriver开始&#xff0c;以获得社区反馈。未来将举行公投&#xff0c;让社区来决定OpenGov如何发展并转移至Moonbeam。 Moonriver上的O…...

(三十一)大白话MySQL如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理

之前我们已经给大家深入讲解了在执行增删改操作时候的redo log的重做日志原理&#xff0c;其实说白了&#xff0c;就是你对buffer pool里的缓存页执行增删改操作的时候&#xff0c;必须要写对应的redo log记录下来你做了哪些修改 如下图所示&#xff1a; 这样万一要是你提交事…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...