使用OllyDug分析abex crackme#2程序

本文介绍了如何使用OllyDbg这款调试器深入学习汇编代码和调试技术,通过实例演示了如何逆向分析并破解两个程序的序列号,包括基础练习和扩展练习,如屏蔽提示界面、破解Acidburn.exe和Andrénalin.3.exe的序列号。
摘要由CSDN通过智能技术生成

一、实验目的

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

二、实验软硬件要求

软件工具:OllyDbg

操作系统:windows 7

三、实验预习

逆向工程教材第8章

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

1、基础练习

打开示例程序 01\08\bin\abex crackme#2.exe程序,该程序需要用户输入用户名以及对应的注册码。通过逆向分析获得任意用户名的注册码。 

2、扩展练习

Ⅰ、打开Acid burn.exe程序

        1、屏蔽掉首先弹出的提示界面; 

        2、破解Serial子界面的序列号; 

        3、破解Name Serial子界面的用户名/序列号。

Ⅱ、打开Andrénalin.3.exe,破解该程序的序列号。

提交的内容:

1、修改后的exe程序

2、实验报告。

五、实验过程

1、基础练习

打开示例程序 01\08\bin\abex crackme#2.exe程序,该程序需要用户输入用户名以及对应的注册码。通过逆向分析获得任意用户名的注册码。 

1.随便输入用户名以及注册码,得到错误消息框

2.找到错误消息框的字符串

右键-search for-all referenced text strings-”Wrong serial!”-双击跳到其地址

3.向上拖动滚动条,找到了包含条件转移语句的代码,403329地址处的__vbaVarTstEq()函数为字符串比较函数,其上方的2个PUSH指令为比较函数的参数,403321地址处的”SS:[EBP-44]”指的是站内地址,恰好又是函数中的局部对象的地址

4.查看存储在栈中的内存地址,在403321处设置断点(F2)并运行(F9),弹出消息框后,随便输入用户名和注册码并点击Check

5.一步步运行(F7)至403327处,即第一个PUSH指令处,在寄存器窗口处的EAX(0019F234)是用户输入的serial值,EDX(0019F224)是实际的serial值

6.选中EDX,点击Follow in Dump,在数据窗口可看到EAX和EDX的地址

7.进入字符串所在地址可以看到实际字符串

① ctrl+G-输入地址可得到

② 也可以右键-Long-Address with ASCII dump,也可得到目标字符串

即得到用户名ReverseCore对应的正确注册码B6C9DAC9

8.再次运行该程序abex crackme#2.exe,输入用户名和注册码,验证成功

2、扩展练习

Ⅰ、打开Acid burn.exe程序

1、屏蔽掉首先弹出的提示界面; 

1.直接运行程序,弹出提示界面

2.用ollydbg打开程序,找到提示界面的文本所在地址

右键-Sesrch for-All referenced text strings-找到目标文本双击

3.将地址"42F784"处的入栈命令“PUSH -70",改为"RETN"

4.修改后运行验证,没有弹出提示界面,成功,保存

2、破解Serial子界面的序列号; 

1.运行程序,输入任意序列号,回车或者点击"Check it Baby!",出现错误提示

2.用ollydbg打开程序,找到提示界面的文本所在地址

右键-Sesrch for-All referenced text strings-找到目标文本双击

3.在上图中可以看出正确和错误提示之后都有调用"Acid_bur.0042A170",因此怀疑地址"42A170"处有正确的序列号,跳转(Ctrl+G)到该地址处,设置断点

4.运行程序(F9),输入任意序列号,回车或者点击"Check it Baby!",弹出错误提示,点击确认,栈窗口跳转出输入的序列号,猜测正确的序列号为"Hello Dude!",验证后成功

3、破解Name Serial子界面的用户名/序列号。

1.运行程序,输入任意序列号,回车或者点击"Check it Baby!",出现错误提示

2.用ollydbg打开程序,找到错误提示的文本及地址

右键-Sesrch for-All referenced text strings-找到目标文本双击

3.在上图中可以看出正确和错误提示之后都有调用"Acid_bur.0042A170",因此怀疑地址"42A170"处有正确的用户名和序列号,跳转(Ctrl+G)到该地址处,设置断点

4.运行程序(F9),输入任意用户名和序列号,回车或者点击"Check it Baby!",栈窗口跳转出输入的用户名和序列号,猜测正确的序列号为"CW-4100-CRACKED",验证后成功

Ⅱ、打开Andrénalin.3.exe,破解该程序的序列号。

1.运行程序,输入任意序列号,回车或者点击"OK",出现错误提示

2.用ollydbg打开程序,找到错误提示的文本及地址

右键-Sesrch for-All referenced text strings-找到目标文本双击

3.向上拖动滚动条,找到了包含条件转移语句的代码,40204A地址处的__vbaVarTstEq()函数为字符串比较函数,及条件转移语句的代码,其上方的PUSH指令为比较函数的参数

4.在40204A处设置断点(F2)并运行(F9),弹出消息框后,随便输入序列号,回车

5.寄存器窗口自动跳转到了EBP(0019F164)

6.选中EBP,点击Follow in Dump,在数据窗口可看到EBP的地址,向上翻滚可以找到刚才输入的序列号,及其对应的字符。或者选中EAX,点击Follow in Dump也可找到目标字符串。若显示的是16进制Hex,则可以用右键-Long显示

7.观察找到的两个字符串,输入的"21172156"字符串分别经过ASCII+10得到"<;;A<;?@"。继续向上翻,可以找到字符串"kXy^rO|*yXo*m\kMuOn*+",猜测此为真正的序列号,经过ASCII-10得到字符串"aNoThEr oNe cRaCkEd !",验证后成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值