软件安全实验四——实验报告

实验要求

下载Crackme程序,综合运用0lyDbg、IDA 和UltraEdit 等工具进行注册登录功能的破解。完成实验报告,

实验过程

破解目标选择 crakeme001:Acid burn

实验环境为 windows 11.

一 体验 Acid burn

打开Acid burn,体验如何使用:

image-20241218194522553

Serial/Name界面,输入一个用户名,尝试输入几个序列号,都返回Try Aagin:

image-20241218194643402

Serial界面同样:

image-20241218194738749

目标应该就是破解出正确的序列号了。

二 ollyDbg 破解序列号

  1. 启动ollyDbg,打开acid burn文件:

    image-20241218195018637

    看到一大串类似于汇编语言的代码。

    点击运行,然后在acid burn输入账号和序列号:

    image-20241219140833879

    发现定位到了0042FB03,这里有一个JNZ跳转指令JNZ SHORT 0042FB1F,根据ZF是否为0决定是否跳转。不跳转就往下执行,输出”Congratz !!”和“Good job dude =)”字符串,否则会跳转到0042FB1F,即输出”Try Again!“和”Sorry,The serial is incorrect.“字符串。在JNZ跳转指令前面,有一段调用函数指令CALL 004039FC,那这个函数应该就是用来判等的。

    同时右下方出现了一些字符串,立马发现我们在acid burn输入的账号”jinqq“和序列号”12345“,同时下面还有一个字符串”CW-8692-CRACKED“,如果是通过是否相等来判断的话,合理怀疑这串就是正确的序列号。

    cdd38434345eea8a37c7bbd2958a86c0

    测试一下,果然是这个:

    image-20241219143517968

三 IDA 破解 强制跳转”Good job”

先在IDA官网注册账号:IDA Free,下载IDA FREE 9.0并获取License Key。然后安装IDA,并在安装目录下放置下载的License Key。

image-20241220134000780

用IDA打开acid burn,进入界面,包含反汇编视图、函数窗口、输出窗口:

image-20241220134153438

通过搜索 “Sorry”,定位到这里。

image-20241220142727952

可以看到,在 “Sorry” 代码块的前面就是 “Good job dude =)” 代码块,并且前面有一个跳转指令jnz short loc_42FB1F,前面有一个call函数,应该是用来判等的,然后根据ZF为0还是为1来决定是否跳转。

我们希望它不进行跳转,执行下面的 “Good job dude =)” 分支,因此将这一行换成无意义的一行。

选择jnz short loc_42FB1F这一行,再点击菜单栏 Edit > Patch Program > Assemble,然后将该行改成nop,确定。

image-20241220140534948

image-20241220143414725

然后再将修改的保存:

image-20241220141515934

image-20241220141614547

重新运行acid burn,发现成功:

image-20241220143609733