恶意代码分析-第九章-OllyDbg

目录

 

笔记

实验

Lab 9-1

Lab 9-2

Lab 9-3


笔记

加载文件:

执行代码:

Execute till Return -> 在当前函数返回时暂停执行 -> CTRL-F9

Execute til User Code ->从库函数中出来回到user code -> ALT-F9

单步跳过陷阱:

              010073a4 call 01007568

              010073a9 xor ebx,ebx

            首先OllyDbg在010073a9处设置一个断点,然后恢复执行,当子例程执行ret指令时,由于命中隐藏断点,会停在010073a9.

            但在有些情况下,例如01007568处的子例程可能没有ret指令,或者可能是一个从栈中弹出地址来获得EIP的操作。在这种情况下,没有暂停效果。

加载DLL

停的地方

调试导出函数

跟踪

运行跟踪

Add Selection:

异常处理

Shift + F7 进入异常

Shift + F8 跳过异常

Shift + F9 将运行异常处理

修补操作

修改

Copy to executable -> all mod

save file

分析shellcode

可以借助于OllyDbg进行分析,方法如下:

1  将shellcode从一个十六进制编辑器复制到剪贴板。

2  在内存映射面板窗口中,选择类型为Priv的内存区域(这是分配给进程的私有内存,与只读的可执行镜像不同,这些内存被多个进程共享)。

3  在内存映射面板窗口中,右击被选择的区域,选择Set Access --> Full Access,赋予该区域读、写、运行的权限。

4  双击内存映射面板窗口的某行,会弹出一个十六进制转储窗口,你可以检查它的内容。该区域应该包含几百个连续为0的字节。

5  返回内存转储窗口。0字节填充的高亮度区域足以容纳整个shellcode,右键单击选择的内存区域,然后选择Binary --> Binary Paste。这个操作将步骤1中复制的shellcode粘贴到选择的区域。

6  设置EIP寄存器,指向你修改的内存区域(右击返汇编面板窗口的一条指令,选择“此处为新EIP”,可以很容易设置EIP寄存器的值)。

插件 

繁(烦)多的插件http://www.openrce.org/downloads/browse/OllyDbg_Plugins

书签

Bookmark -> Insert Bookmark

ImmDbg

实验

Lab 9-1

Lab 9-2

1.查看静态字符串

2. 静态/动态分析

 调用CetModuleFileNameA获得带路径的文件

 _Strrchr函数找最好一个“\”的位置,看与ocl.exe是否一致

sub_401089是对域名的字符串解密

 进去sub_401000的函数

shell是通过这个CreateProcessASTARTUPINFO来绑定stdoustderrstdincmd上的,只有这样才能把这些东西绑定在cmd上 。

Lab 9-3

1.Lab09-03.exe导入了哪些DLL

DLL1     DLL2      KERNEL32     NETAPI32

           查看对LoadLibraryA的交叉引用,当引用第三方库的时候会调用这个函数

2.DLL1.dll、DLL2.dll、DLL3.dll要求的基地址是多少

对LoadLibraryA加断点,让其加载DLL3。然后再OD中查看各个基地址

 4.当Lab09-03.exe调用DLL1.dll中的一个导入函数时,这个导入函数都做了什么

打开DLL1找到DLL1Print函数,可以判断出这个是个输出字符串函数,现在要找到变量dword_10008030

 对dword_10008030跟踪,找到对这个变量修改的地方

输出当前线程ID 

5.当Lab09-03.exe调用WriteFile函数的时候,它写入的文件名是什么

跟踪hFile得到这个值来自于DLL2ReturnJ的返回值

在另一个IDA中打开DLL2,找到Export窗口

 值来自于dword_1000B078

跟踪 dword_1000B078这个值

 可以看到下面的地方对这个值进行修改了,并且值为temp.txt

6.当 Lab09-03.exe使用NetScheduleJobAdd创建一个job时,从哪里获取第二个参数的数据 

第二个参数是一个指向的结构体,这个参数同时也是DLL3GetStructure函数的参数

所以跟踪到Dll3 的DLL3GetStructure函数的参数是stru_1000B0A0

 找到这个位置,查看交叉引用

7.在运行或调试Lab09-03.exe时,你会看到Lab09-03.exe打印出三块神秘数据。DLL 1的神秘数据,DLL 2的神秘数据,DLL 3的神秘数据分别是什么

如上

8.如何将DLL2.dll加载到IDA Pro中,使得它与OllyDbg使用的加载地址匹配

手动加载

选择 OD中的Dll2基地址

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值