病毒分析与防护实验3—— 反汇编工具(Ollydbg)的使用

实验名称:病毒分析与防护实验3—— 反汇编工具的使用

实验目的

  • 熟悉动态分析工具OllyDBG的界面和常用模块

  • 熟悉静态分析工具IDA的界面和常用模块

  • 掌握使用OllyDBG和IDA分析修改可执行文件的方法

实验原理

OD界面

窗口名称作用
反汇编窗口显示被调试程序的反汇编代码,标题栏上的地址、机器码、反汇编代码、注释。
寄存器窗口显示当前所选线程的 CPU 寄存器内容
信息窗口显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等
数据窗口显示内存或文件的内容。右键菜单可用于切换显示方式。
堆栈窗口显示当前线程的堆栈。
od_window

OD常用快捷键

快捷键功能
F2设置断点
F9运行
F8单步步过
F7单步步入
F4运行到选定位置
CTRL+F9执行到返回
CTRL+F2重新开始
ALT+F9执行到用户代码

查找可执行文件中所有字符串

在“反汇编窗口”单击鼠标右键,选择“查找”选项可查看可执行文件反汇编代码的“所有参考文本字串”

修改某个内存地址的数据

在“数据窗口”按“Ctrl+G”,可查找某个内存地址的值。

在“数据窗口”,选中要修改的数据,单击鼠标右键,选择“二进制”选项的“编辑”项,可修改数据值。

在“数据窗口”,单击鼠标右键,选择“复制到可执行文件”选项,再选择“保存文件选项”

实验内容

更改hello.exe的输出

使用VC 6.0 编写win32 控制台程序:Hello world,得到可执行文件hello.exe

将hello.exe的输出由“Hello World!”改为“Reverse Me!”

步骤如下:

  • 在反汇编窗口,单击鼠标右键。在弹出的对话框中,单击鼠标右键,选择‘查找文本’。查找“Hello World”
  • 反汇编窗口,选中’Hello World’所在的行,单击鼠标右键-分析-从模块中删除分析。删除掉 OD的分析结果
  • 反汇编窗口,选中’Hello World’所在的行,单击鼠标右键-分析—分析代码
  • 从反汇编窗口找到字符串Hello World在内存中的地址,复制地址(在我这里,地址是43402C)
  • 在内存窗口,查找地址。CtrL+G弹出查找内存地址的窗口,把地址输入进去

image-20210330161111665

这里字符串的值是对应字符的ASCII码的十六进制表示,比如0A是换行符的ASCII码的十六进制表示,00是NULL的表示

image-20210330173951110

由于字符串终止标志是NULL,且原字符串hello world!比新字符串reverse me!多一位,因此要更改源字符串最后一位为00(NULL),表示字符串结束

选中修改的代码 --> 复制到可执行文件 --> 保存文件,得到新文件reserve.exe,打开后显示:

image-20210330174415456

使用OD找到crackme3.exe的注册码

根据程序给出提示的提示,可知程序中有“Wrong Serial”的字符串

image-20210331200251832

查找字符串,可得:

image-20210331200512006

双击该字符串处进入对应的内存空间:

image-20210331200641320

下断点:

image-20210331211352029

按F9执行,程序运行到这一步会暂停,并且弹出Cracker软件的界面:

输入'wdnmd'

image-20210331211417580

观察内存值,可以看到ASCII储存位置:

image-20210331211256955[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l9A3Ykna-1617371092404)(D:%5Ctyporapic%5Cimage-20210331211627303.png)]

选择“数据窗口跟随”:

image-20210331211636648

则数据窗口会跳转到有输入字符串“wdnmd”

image-20210331211754978

对该程序分析的结论

正确的用户名为:Registered User;密码为:GFX-754-IER-954

分析

在把字符串的值压入寄存器之后,可以看到有call的函数调用,步入,可以发现,这是一个字符串比较的函数

image-20210402213934435

EAX寄存器负责保存输入的字符串的长度,比如我们输入的是wdnmd,则EAX长度为5

EDX寄存器负责保存答案的字符串的长度,为Registered User的长度,15

image-20210402214138318

如果长度不同,则说明与答案不一致;如果长度相同,则会逐位比较字符串的值是否相同

image-20210401141948504
最终破解的截图如下:
image-20210402215349342

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值