IDA Pro基本使用

IDA Pro基本使用

1.DllMain的地址是什么?

打开默认在的位置1000D02E就是DllMain地址
在这里插入图片描述
空格键可以看到图形化界面选择options、general勾选对应的选项在图像化也能看到
在这里插入图片描述

2.使用Imports 窗口并浏览到 gethostbyname,导入函数定位到什么地址?

这里可以打开Imports 窗口
在这里插入图片描述
默认已经打开 找到对应的函数gethostbyname
在这里插入图片描述

双击进去可以看到对应的地址 idata:100163CC
在这里插入图片描述

3.有多少函数调用了gethostbyname?

点击函数位置快捷键ctrl+x打开 其中type为p的为调用函数一共5个不同函数调用
在这里插入图片描述

4.将精力集中在位于0x10001757处的对 gethostbyname 的调用,你能找出哪个 DNS请求将被触?

按G键跳转到对应的位置0x10001757
在这里插入图片描述

函数调用前将eax参数push进栈,而pics.praticalmalwareanalys是对应的内容
add eax,0dh,是跳过前面[This is RDO]部分,将指针指向pics.praticalmalwareanalys
在这里插入图片描述

5&6.IDA Pro 识别了在 0x10001656处的子过程中的多少个局部变量和参数

跳转到对应位置,往上看,发现一共有23个局部变量,1个参数
在这里插入图片描述

7.使用 Strings 窗口,来在反汇编中定位字符串\cmd.exe /c。它位于哪?

在String窗口找到对应字符串\cmd.exe /c
在这里插入图片描述
双击找到对应的位置为xdoors_d:10095B34
在这里插入图片描述

8.在引用\cmd.exe /c区域内发生了什么

点击上键头可以看到引用的字符串的地方
在这里插入图片描述
往上看发现字符串, 并发现远程shell相关的字符串Remote Shell Session ,说明这个与远程控制相关
在这里插入图片描述
在这里插入图片描述
同时往下看发现一系列的命令相关,还是调用recv函数
在这里插入图片描述

9.在同样的区域,在 0x100101C8 处,看起来好像 dword 1008E5C4是一个全局变量,它帮助决定走哪条路径。那恶意代码是如何设置dword1008E5C4的呢?(提示:使用dword 1808E5C4的交叉引用)

按住G找到对应位置

在这里插入图片描述
双击进入,使用ctrl+x交叉引用找到影响这个全局变量的位置
在这里插入图片描述
进入,发现受eax变量影响,其中eax又是 call sub_10003695返回值
在这里插入图片描述
点击进入函数,发现这个函数调用的是GetVersionExA函数,然后验证平台是否是win32平台并返回
在这里插入图片描述

10.在位于0x1000FF58处的子过程中的几百行指令中,一系列使用memcmp 来比较字符串的比较。如果对robotwork的字符串比较是成功的(当memcmp返回0),会发生什么?

当memcmp返回0调用call函数

访问注册表相应的位置
在这里插入图片描述

并将对应位置的东西通过send函数发送出去
在这里插入图片描述

11.PSLIST 导出函数做了什么?

主要是获取进程列表并进行下一步操纵。
在这里插入图片描述
在图像化界面分析,
在这里插入图片描述
进入到call sub_100036C3函数
获取版本信息并判断是否是win32平台
在这里插入图片描述
查看当前版本是vista以上,大于5是以上版本
在这里插入图片描述
继续分析左边分支
在这里插入图片描述
发现调用CreateToolhelp32Snapshot,获取系统进程或线程列表
在这里插入图片描述

12.使用图模式来绘制出对sub10004E79的交叉引用图。当进入这个函数时,哪个API函数可能被调用?仅仅基于这些API函数,你会如何重命名这个函数?

双击函数,然后选择图,交叉引用图
在这里插入图片描述
主要调用获取操作系统信息并发送走
在这里插入图片描述
右键编辑实现给函数改名
在这里插入图片描述

13.D1lMain 直接调用了多少个 Windows API?多少个在深度为2时被调用?

和上一步一样,不过深度改为2,可以看到具体调用
在这里插入图片描述
在这里插入图片描述

14.在0x10001358处,有一个对Sleep(一个使用一个包含要睡眠的毫秒数的参数的API函数)的调用。顺着代码向后看,如果这段代码执行,这个程序会睡眠多久?

跳转到sleep函数位置
在这里插入图片描述
eax值影响,首先获取30然后乘以1000最后是30000ms,也就是30s
在这里插入图片描述

15.在0x10001701处是一个对socket的调用。它的3个参数是什么?

对应三个参数
在这里插入图片描述

16.使用MSDN页面的socket和IDAPro中的命名符号常量,你能使参数更加有意义吗?在你应用了修改以后,参数是什么?

选中对应的数字,选择如下方式。
在这里插入图片描述

在这里插入图片描述

17.搜索in指令(opcode 8xED)的使用。这个指令和一个魔术字符串 VXh 用来进行 VMware 检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测VMware 的证据吗?

![!](https://i-blog.csdnimg.cn/direct/89c8489ea0ba428298a182a882c9fb7a.png)
找到对应in语句
在这里插入图片描述
点击进入
在这里插入图片描述
将eax值转化为可以理解的字符串,发现VMXH相关字符
在这里插入图片描述
按空格找到对应函数
在这里插入图片描述
使用ctrl+x找到交叉引用
在这里插入图片描述
进入到函数,发现有对虚拟机进行检测,如果检测到就不安装
在这里插入图片描述

18.将你的光标跳转到0x1001D988处,你发现了什么?

发现一连串乱码数字
在这里插入图片描述

19.如果你安装了IDA Python插件(包括IDAPro的商业版本的插件),运行Lab05-01.py,一个本书中随恶意代码提供的IDA ProPython脚本,(确定光标是在0x1001D988处。)在你运行这个脚本后发生了什么?

编写脚本decoded.idc内容如下:

#include <idc.idc>static main()
{auto ea =ScreenEA(),b,i,decoded_byte;for (i=0x0;i<0x50;i++){b=Byte(ea+i); decoded_byte = b ^ 0x55;PatchByte(ea+i,decoded_byte);}
}

将光标放在如下位置:
在这里插入图片描述
选择file --> script file -->选择对应文件
在这里插入图片描述
运行后字符串被转码
在这里插入图片描述

20.将光标放在同一位置,你如何将这个数据转成一个单一的ASCI 字符串?

通过键盘A键
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为人机交互保持预见性丨基于G32A1445的T-BOX应用方案

T-BOX是一种集成了通信、计算和控制功能的车载信息处理终端&#xff0c;通过车辆与云端、移动网络等进行数据交互&#xff0c;用于车、人、外部环境的互联互通&#xff0c;支持车辆定位、车载通信、远程控制、故障诊断、数据传输、紧急呼叫等功能&#xff0c;帮助车辆实现更加智…

OpenCV_最简单的鼠标截取ROI区域

在OpenCV中也存在鼠标的操作&#xff0c;今天我们先介绍一下鼠标中的操作事件 void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata0) setMousecallback参数说明&#xff1a; winname:窗口的名字 onMouse:鼠标响应函数&#xff0c;回调…

计算机毕业设计 社区医疗服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

线性代数书中求解线性方程组的三种方法的实例

目录 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65) 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65)

刷题训练之字符串

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握字符串算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题…

【笔记】1.3 塑性变形

一、塑性变形的方式 DDWs&#xff08;Dislocation-Dipole Walls&#xff0c;位错偶极墙&#xff09;&#xff1a;指由两个位错构成的结构&#xff0c;它们以一种特定的方式排列在一起&#xff0c;形成一个稳定的结构单元。 DTs&#xff08;Dislocation Tangles&#xff0c;位错…

allWebPlugin中间件自定义alert、confirm及prompt使用

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

关于 NLP 深度学习的核心流程

基本流程实现的先后顺序&#xff08;每一步都包含很多技术点&#xff09;&#xff1a; 选定语言模型结构 关于语言模型&#xff1a; 作用 判断那一句话相对更合理&#xff0c;相对不合理的会得到较底的分值&#xff1a; 挑选成句概率分值最高的评价指标&#xff1a;PPL&…

在线查看 Android 系统源代码 Git repositories on android

在线查看 Android 系统源代码 Git repositories on android 1. Git repositories on android1.1. Android Make Build System1.2. Android Open Source Project Code Review References 1. Git repositories on android https://android.googlesource.com/ 1.1. Android Make …

Git rebase 的使用(结合图与案例)

目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法&#xff1a;merge 以及 rebase Git rebase 概念 **rebase概念&#xff1a;**用来重新应用提交&#xff08;commits&#xff09…

一文入门生成式AI(理解ChatGPT的原理)

一、什么是生成式AI&#xff1f; 以ChatGPT为代表的生成式AI&#xff0c;是对已有的数据和知识进行向量化的归纳&#xff0c;总结出数据的联合概率。从而在生成内容时&#xff0c;根据用户需求&#xff0c;结合关联字词的概率&#xff0c;生成新的内容。 可以这么联想&#x…

浅析OceanBase数据库的向量化执行引擎

本篇博客是偏数据库系统概念性的内容&#xff0c;不会深入到 OceanBase 中各个算子和表达式的在向量化中的详细设计和实现。 背景 为了提升OceanBase社区版用户解决问题的效率&#xff0c;OceanBase官方不久前推出了《OceanBase 从入门到实践》系列课程。在第七期直播课程后&a…

嵌入式 开发技巧和经验分享

文章目录 前言嵌入式 开发技巧和经验分享目录1.1嵌入式 系统的 定义1.2 嵌入式 操作系统的介绍1.3 嵌入式 开发环境1.4 编译工具链和优化1.5 嵌入式系统软件开发1.6 嵌入式SDK开发2.1选择移植的系统-FreeRtos2.2FreeRtos 移植步骤2.3 系统移植之中断处理2.4系统移植之内存管理2…

【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣965, 2331, 100, 1379

1. 力扣965&#xff1a;单值二叉树 1.1 题目&#xff1a; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,n…

Jenkins学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程&#xff1a;封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

vue table id一样的列合并

合并场景&#xff1a;如果id一样&#xff0c;则主表列合并&#xff0c;子表列不做合并&#xff0c;可实现单行、多行合并&#xff0c;亲测&#xff01;&#xff01;&#xff01; 展示效果如图示&#xff1a; 组件代码&#xff1a; // table组件 :span-method"objectSpa…

低代码可视化工具-uniapp页面跳转传参-代码生成器

uniapp页面跳转传参 在uni-app中&#xff0c;页面间的跳转和传参是一个常见的需求。uni-app提供了多种页面跳转方式&#xff0c;如uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab、uni.navigateBack等&#xff0c;每种方式适用于不同的场景。以 页面跳转并传参…

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素&#xff08;姓名和身份证&#xff09;加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式GCM&#xff08;Galois/Counter Mode&#xff09;AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感数据加密…

MySQL:库表的基本操作

库操作 查看 查看存在哪些数据库&#xff1a; show databases;查看自己当前处于哪一个数据库&#xff1a; select database(); 由于我不处于任何一个数据库中&#xff0c;此处值为NULL 查看当前有哪些用户连接到了MySQL&#xff1a; show processlist; 创建 创建一个数据库 语…