恶意代码分析实战--IDA pro的使用及课后练习l

这篇具有很好参考价值的文章主要介绍了恶意代码分析实战--IDA pro的使用及课后练习l。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.对分析有用的窗口

函数窗口

Functions window  位于左半部分

列举可执行文件中的所有函数,可以在众多函数中过滤出想要的函数。这个窗口也对每一个函数关联了一些标志(F L S等),这其中最有用的是L,指明是库函数。

字符串窗口

Strings window (Shift + F12)

显示所有的字符串,可以右键Setup来修改它的属性

导入表窗口

Imports window

列举一个文件的所有导入函数

导出表窗口

Exports window

列举一个文件的所有导出函数,分析DLL文件时很有用

结构窗口

Structures

列举所有活跃数据结构的布局。这个窗口也提供用自己创建的数据结构作为内存布局模板的能力

2.常用快捷键

    ❶.交叉引用 ctrl+x 或者 x,可以看到函数在哪里被调用

恶意代码分析实战--IDA pro的使用及课后练习l

    ❷.跳转 g ,直接跳转到该地址

恶意代码分析实战--IDA pro的使用及课后练习l

    ❸.Search列表快捷键

恶意代码分析实战--IDA pro的使用及课后练习l

    next code:移动光标到包含你所指定的指令的下一个位置

    text:在整个反汇编窗口中搜索一个指定的字符串

    Sequence of bytes:在十六进制视图窗口中对一个特定字节序列执行二进制搜索

    ❹.数据操作

    将十六进制数据转换成十进制 H

    将十六进制数据转换成二进制 B

    将十六进制数据转换成字符串 R

恶意代码分析实战--IDA pro的使用及课后练习l

实验:Lab5-1

使用IDA pro分析文件Lab05-01.dll

问题:(1-10)

1.DllMain的地址是什么?

在IDA pro右侧的Functions window 查找DllMain函数

恶意代码分析实战--IDA pro的使用及课后练习l

按空格进入汇编窗口,即可看到函数地址

恶意代码分析实战--IDA pro的使用及课后练习l

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

进入Imports window,并按ctrl+f进行搜索gethostbyname

恶意代码分析实战--IDA pro的使用及课后练习l

双击跳到对应位置获取地址

恶意代码分析实战--IDA pro的使用及课后练习l

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

恶意代码分析实战--IDA pro的使用及课后练习l

函数交叉引用,p是引用,r是读取,必须先读取,再引用。引用了9次,被5个函数调用。

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

在汇编窗口按g,跳转到对应位置

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

根据函数的传参规则,一般将eax寄存器存的值作为参数传给函数,于是我们在这条指令上面寻找对eax的赋值语句

恶意代码分析实战--IDA pro的使用及课后练习l

其中off_10019040对应的值为

恶意代码分析实战--IDA pro的使用及课后练习l

又因为将off_10019040赋值给eax之后,还进行来add eax,0Dh  此处是对地址进行加法,则c语言的指针加法就相当于从该字符串的第十三位开始,于是为pics.praticalmalwareanalysis.com

5.IDA Pro识别了在0x10001656处的子过程中的多少个局部变量?

相同方式跳转到对应的地址

恶意代码分析实战--IDA pro的使用及课后练习l

这里为负值的均为局部变量23个

6.IDA Pro识别了在0x10001656处的子过程中的多少个参数?

由上图的函数所给可以得到参数为 lpThreadParameter,为1个

恶意代码分析实战--IDA pro的使用及课后练习l

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

在Strings window 使用搜索功能

恶意代码分析实战--IDA pro的使用及课后练习l

双击跟随过去

恶意代码分析实战--IDA pro的使用及课后练习l

位置:xdoors_d:10095B34

然后点击上图位置就可以跳转到对应函数

恶意代码分析实战--IDA pro的使用及课后练习l

9.在引用\cmd.exe /c的代码所在的区域发生了什么?

在上图选择位置F5

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

查看这个参数

恶意代码分析实战--IDA pro的使用及课后练习l

发现了对应有 remote shell session

应该是个远程shell会话函数

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

恶意代码分析实战--IDA pro的使用及课后练习l

使用交叉引用 x

恶意代码分析实战--IDA pro的使用及课后练习l

根据type可以确定有一处是w 写入,被修改,双击进入

恶意代码分析实战--IDA pro的使用及课后练习l

因为是把eax的值赋给dword_1008E5c4,因为eax是存返回值的,所以我们需要看上面的call指令的函数

恶意代码分析实战--IDA pro的使用及课后练习l

F5反汇编

恶意代码分析实战--IDA pro的使用及课后练习l

其中GetVersionExA获取版本信息

恶意代码分析实战--IDA pro的使用及课后练习l

判断该系统是否为WinNT系统。

然后上面的setz al指令

setz:当ZF标志被设定时,AL寄存器设1

当当前系统为winNT系统时,cmp指令返回ZF为1,于是setz 指令根据ZF的值将AL设为1,所以sub_10003694的返回值是1,最后的dword_1008E5C4的值就被赋成了1,所以这个全局变量在程序运行的时候一直保持的是1

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

使用g跳转到该地址

恶意代码分析实战--IDA pro的使用及课后练习l

F5反汇编,然后找到robotwork

恶意代码分析实战--IDA pro的使用及课后练习l

当memcmp返回值为0,那么会执行这条语句,然后我们进入下面这个函数

恶意代码分析实战--IDA pro的使用及课后练习l

看汇编代码比较直观

恶意代码分析实战--IDA pro的使用及课后练习l

看一下loc_10005309

恶意代码分析实战--IDA pro的使用及课后练习l

有个call函数,继续跟进,直接看反汇编代码

恶意代码分析实战--IDA pro的使用及课后练习l

发现使用了send函数,这里我们可以推断出,通过获取我们的注册表信息,然后使用send函数发送给某地址。

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

在Exports window 搜索PSLIST函数

恶意代码分析实战--IDA pro的使用及课后练习l

双击跟进

恶意代码分析实战--IDA pro的使用及课后练习l

进入sub_100036C3

恶意代码分析实战--IDA pro的使用及课后练习l

根据汇编代码可以看出,是获取对应操作系统版本

恶意代码分析实战--IDA pro的使用及课后练习l

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

在函数窗口找到该函数

恶意代码分析实战--IDA pro的使用及课后练习l

然后

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

根据其使用的函数可以知道获取使用的语言ID,即可判断使用的是什么语言,并且使用了send函数,可以重命名为

send_SystemLangID

恶意代码分析实战--IDA pro的使用及课后练习l

在函数名处右键—>rename即可重命名

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

和上题一样,但需要把深度修改为2即可

恶意代码分析实战--IDA pro的使用及课后练习l

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

跳转到该地址

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

其中这几条指令决定了eax的值,即传入Sleep函数的参数的值

这里我们可以知道off_10019020的值

恶意代码分析实战--IDA pro的使用及课后练习l

用该地址加上0x0D,就是偏移了0x0D,指向30,然后atoi函数将字符串转换为int,然后使用30 * 0x3E8(十进制为1000),即30000毫秒,为30秒

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

跳转到该地址

恶意代码分析实战--IDA pro的使用及课后练习l

容易看出入栈的三个数即为参数,分别为2 1 6

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

socket函数:socket function (winsock2.h) - Win32 apps | Microsoft Docs

根据对应参数的对应值

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

首先找到这个,修改成使用标准常量符号,之后rename即可

恶意代码分析实战--IDA pro的使用及课后练习l

修改完为

恶意代码分析实战--IDA pro的使用及课后练习l

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

使用search功能

恶意代码分析实战--IDA pro的使用及课后练习l

做如下搜索

恶意代码分析实战--IDA pro的使用及课后练习l

恶意代码分析实战--IDA pro的使用及课后练习l

然后找到in指令,双击跟进

选择十六进制串,按r将其变成字符串

恶意代码分析实战--IDA pro的使用及课后练习l

发现存在VMXh

其他地方也存在该字段

恶意代码分析实战--IDA pro的使用及课后练习l

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

跳转到对应地址

恶意代码分析实战--IDA pro的使用及课后练习l

发现是一些十六进制的数据

结合脚本可以进行解密,我们选中所有数据,然后使用 shift+E 键倒出数据

恶意代码分析实战--IDA pro的使用及课后练习l

选择c数组类型,使用对应脚本解密即可

Decode.py文章来源地址https://www.toymoban.com/news/detail-449604.html

a = [0x2D, 0x31, 0x3A, 0x3A, 0x27, 0x75, 0x3C, 0x26, 0x75, 0x21,

  0x3D, 0x3C, 0x26, 0x75, 0x37, 0x34, 0x36, 0x3E, 0x31, 0x3A,

  0x3A, 0x27, 0x79, 0x75, 0x26, 0x21, 0x27, 0x3C, 0x3B, 0x32,

  0x75, 0x31, 0x30, 0x36, 0x3A, 0x31, 0x30, 0x31, 0x75, 0x33,

  0x3A, 0x27, 0x75, 0x05, 0x27, 0x34, 0x36, 0x21, 0x3C, 0x36,

  0x34, 0x39, 0x75, 0x18, 0x34, 0x39, 0x22, 0x34, 0x27, 0x30,

  0x75, 0x14, 0x3B, 0x34, 0x39, 0x2C, 0x26, 0x3C, 0x26, 0x75,

  0x19, 0x34, 0x37, 0x75, 0x6F, 0x7C, 0x64, 0x67, 0x66, 0x61]





for i in range(0x00,0x50):

    out = a[i] ^ 0x55

    print(chr(out),end=“")



#output : xdoor is this backdoor, string decoded for Practical Malware Analysis Lab :)1234

到了这里,关于恶意代码分析实战--IDA pro的使用及课后练习l的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 恶意代码分析实战 6 OllyDbg

    程序分析 首先,进行静态分析,使用strings。 CreateFileA RegQueryValueExA RegOpenKeyExA RegSetValueExA RegCreateKeyExA RegDeleteValueA WideCharToMultiByte GetModuleHandleA GetEnvironmentVariableA SetEnvironmentVariableA SOFTWAREMicrosoft XPS HTTP/1.0 GET SLEEP cmd.exe NUL http://www.practicalmalwareanalysis.com %SYSTEMROOT%system32 这里有

    2024年02月07日
    浏览(52)
  • [系统安全] 五十五.恶意软件分析 (7)IDA Python基础用法及CFG控制流图提取详解[上]

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更

    2024年01月23日
    浏览(43)
  • 二进制代码反汇编逆向工具:IDA Pro(Win&Mac)v7.7 汉化版

    IDA Pro是一款交互式的、可编程的、可扩展的、多处理器的、交叉Windows或Linux WinCE MacOS平台主机来分析程序。它被公认为最好的花钱可以买到的逆向工程利器,已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。 功能丰富:IDA Pro提供了诸多功

    2024年02月20日
    浏览(47)
  • 使用IDA查看汇编代码,结合安卓系统生成的Tombstone文件,分析安卓app程序崩溃问题

    目录 1、IDA工具介绍 2、产品及问题场景描述 3、查看Tombstone文件

    2024年02月13日
    浏览(49)
  • 3.1 IDA Pro编写IDC脚本入门

    IDA Pro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可

    2024年02月05日
    浏览(53)
  • 什么是恶意代码分析中的动态分析基础技术?

    你知道如何使用动态分析基础技术来分析Lab03-01.exe文件中的恶意代码吗?Lab03-02.dll中的恶意代码如何自行安装?Lab03-03.exe的恶意代码在主机上的感染迹象是什么?Lab03-04.exe的恶意代码运行时会发生什么?动态分析为何无法有效实施?

    2024年02月06日
    浏览(60)
  • Spark大数据分析与实战课后答案

    一、填空题 1、Scala语言的特性包含 面向对象编程 、函数式编程的、 静态类型的 、可扩展的、 可以交互操作的 。 2、在Scala数据类型层级结构的底部有两个数据类型,分别是 Nothing 和 Null 。 3、在Scala中,声明变量的有 var 声明变量和 val 声明常量。 4、在Scala中,获取

    2024年01月17日
    浏览(77)
  • 《web应用技术》第三次课后练习-使用postman练习参数的获取。

    Postman也是一款功能强大的接口测试工具,它支持发送任何类型的HTTP请求(GET、POST、PUT、DELETE等),并能附带任何数量的参数和Headers。 目录 一、简单参数 二、实体参数 1.简单的实体参数 2.复杂的实体参数 三、数组集合参数  1.数组参数 2.集合参数  四、日期参数 五、JSON参

    2024年04月25日
    浏览(37)
  • Spark大数据分析与实战课后习题参考答案

    项目一: 一、选择题 DCCDAD 二、简答题 1、Hadoop MapReduce要求每个步骤间的数据序列化到磁盘,所以I/O成本很高,导致交互分析和迭代算法开销很大;Spark 提供了内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。通过支持有向无环图(DAG)的分布式并行计算的编

    2024年02月11日
    浏览(38)
  • app安全之安卓native层安全分析(二):unidbg+ida使用+过签名校验

    继续跟着龙哥的unidbg学习:SO入门实战教程二:calculateS_so _白龙~的博客-CSDN博客 还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足,哈哈。感谢观看的朋友 首先抓包分析: 其中,里面的s就是今天

    2024年01月17日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包