当前位置: 首页 > 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 函数分析完成

http://www.lryc.cn/news/17665.html

相关文章:

  • Deep Unsupervised Learning using Nonequilibrium Thermodynamics论文翻译学习
  • 使用Autoware标定工具包联合标定相机和激光雷达
  • 了解线程安全
  • 【git】git版本控制
  • 模电学习7. 三极管特性曲线与静态工作点
  • LeetCode题解:633. 平方数之和,双指针,JavaScript,详细注释
  • Keil编译头文件iec_std_functions.h错误解决
  • 2022 赣育杯 CTF --- Crypto Lost_N wp
  • 【趋势分析方法三】MATLAB代码实现TFPW-MK检验
  • 一文学会 Spring 整合 MyBatis
  • ElasticSearch - 文档 | 索引文档 | 检索文档 | 创建索引并指明映射
  • SQL中的DML、DDL、DCL分别是什么意思
  • kubeasz部署k8s高可用集群
  • 2022年工程机械出口专题研究【重工】
  • [python入门(51)] - python时间日期格式time和datetime
  • 别担心ChatGPT距离替代程序猿还有距离
  • SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
  • OpenGov的首个方案已上线Moonriver
  • (三十一)大白话MySQL如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理
  • 机器学习-基于KNN及其改进的汉字图像识别系统
  • Zebec生态持续深度布局,ZBC通证月内翻倍或只是开始
  • Leetcode.1238 循环码排列
  • spring boot的包扫描范围
  • 常青科技冲刺A股上市:研发费用率较低,关联方曾拆出资金达1亿元
  • 【Linux】工具(1)——yum
  • MySQL - 排序与分页
  • 自动化测试框架对比
  • 第7章 Memcached replace 命令教程
  • 我记不住的那些maven内容
  • 【Java】Spring更简单的读取和存储