使用OllyDbg分析abex crackme#1程序

一、实验目的

通过实验进一步熟悉调试器与汇编代码,加深对汇编代码和调试技术的认识。

二、实验软硬件要求

软件工具:OllyDbg

操作系统:windows 7

三、实验预习

逆向工程教材第6章

四、实验内容(实验步骤、测试数据等)

Ⅰ、基础练习

打开示例程序 01\06\bin\abex crackme#1.exe程序,该程序内部有两个选择显示的消息框,原本是显示其中第一个消息框,修改程序执行逻辑,使程序显示第二个消息框。

Ⅱ、扩展练习

打开wsample01a.exe程序

1、分析程序逻辑

运行程序显示“Hello!Windows”消息框,程序在什么情况下会显示另一个消息框(称为“2号消息框”),该消息框的内容是什么?

2、给程序打上如下补丁,并分别保存:

(1)使程序固定显示“2号消息框”,无需输入特定参数

(2)更改“2号消息框”的显示条件为:输入参数“2023”,消息内容也更改为:Hello!2023

本次实验需提交的内容:

1、修改后的exe程序

2、实验报告。

五、实验过程

Ⅰ、基础练习

打开示例程序 01\06\bin\abex crackme#1.exe程序,该程序内部有两个选择显示的消息框,原本是显示其中第一个消息框,修改程序执行逻辑,使程序显示第二个消息框。

1.将401026光标处的汇编指令JE SHORT 0040103D更改为JMP SHORT 0040103D,即将条件分支语句(JE)替换为无条件跳转语句(JMP)

2.选中修改后的指令,右键-Copy to exectable-Selection

3.在弹出的Hex窗口右键选择Save file 菜单保存

3.运行保存的文件,得到目标结果

  

  

Ⅱ、扩展练习

打开wsample01a.exe程序

1、分析程序逻辑

运行程序显示“Hello!Windows”消息框,程序在什么情况下会显示另一个消息框(称为“2号消息框”),该消息框的内容是什么?

答:程序在输入参数“2012”时会显示另一个消息,该消息框的内容是“Hello!2012”

1.打开程序后得到,另一文本内容是“Hello!2012”

2.也可以右键搜索所有引用的文本字符串,得到结果

3.输入参数2012,得到另一消息框

2、给程序打上如下补丁,并分别保存:

(1)使程序固定显示“2号消息框”,无需输入特定参数

1.根据代码分析,可将”JNZ SHORT 00401035”中的JNZ 改为JZ或者JE

2.修改后

3.保存

4.验证,得到目标结果

(2)更改“2号消息框”的显示条件为:输入参数“2023”,消息内容也更改为:Hello!2023

1.打开(1)中修改保存的文件,选中数据窗口,按CTRL+G键,输入参数“2012”所在的目标地址402104

2.找到参数“2012”所在的十六进制,按CTRL+E键,修改参数“2012”为“2023”,同样,修改消息内容“Hello!2012”为“Hello!2023”

3.修改后为

4.保存修改后的文件,运行得到修改后的消息内容

选中更改后的所有字符串—右键点击”Copy to executable”—在弹出的Hex窗口右键选择”Save file”—修改文件名保存,然后运行保存的文件验验证,或用命令验证

  

5.输入参数验证

Debug-Arguments-输入2023-ok-确定-Debug-run,得到结果,验证成功

  

   

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OllyDbg发行版是一个ZIP压缩包,只要解压运行OllyDbg.exe即可。运行OllyDbg打开进程,主窗口显示反汇编清单。各窗口的外观属性如:“标题栏(bar)、字体(font)”等在右键菜单"界面选项(appearance)"里控制 1.代码窗口   代码窗口(OllyDbg帮助文件自称反编汇窗口)显示被调试程序的代码。他有四个列   地址/Address(虚拟地址) HEX 数据/HEX dump(机器码) 反编汇/Diassassembly(汇编代码) 注释/Comment(注释)   最后一列注释(Comment)显示相关API参数或运行简表,非常有用,有点类似于IDA Pro。   在代码窗口(地址行,不是列标题)双击时完成动作。   ●地址(Address)列:显示相对被双击地址的地址,再次双击返回标准地址模式;   ●HEX 数据(HEX dump)列:设置或取消无条件断点,按F2键也能设置断点;   ●反编汇(Diassassembly)列:调试编辑器,可直接修改汇编代码;   ●注释(Comment)列:允许增加或编辑注释。   代码窗口允许浏览、分析、搜索和修改代码,保存改变到可执行文件,设置断点等。相关弹出式菜单包括100多项。 2.信息窗口(Information window)   动态跟踪时,与指令相关的各寄存器的值、API函数调用提示、跳转提示等信息显示。 3.数据窗口   以十六进制或内存方式显示文件在内容中的数据,类似于softICE的数据窗口。要显示数据可单击右键"转到→表达式(Go to→expression)"或按Ctrl+G键打开地址窗口,输入地址。 4.寄存器(Registers window)   显示CPU各寄存器的值,支持浮点(FPU)、MMX,3DNow!寄存器,可以单击鼠标右键切换。 5.堆栈窗口(Stack window)   堆栈窗口非常重要,各API函数、子程序等都利用它传递参数、变量等。OllyDbg堆栈窗口功能强大。如果传递的参数都是字符串,OllyDbg会在注释里直接将其显示出来,再也不用像SoftICE那样经常用D命令查看内存数据了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值