CrackMe160-005
这道题难度严重超标了。。纯小白的我呕心沥血才算勉强搞明白了,并且也学到不少东西,不多说废话,来看题
爆破思路
养成好习惯,爆破流程第一步,用exeinfo打开看看文件是否加壳并且使用的什么语言

可以看出有UPX的壳,那么我们直接使用UPX脱壳软件就可以产生一个新的,已经脱壳完成的exe了,原来的exe已经在后面加上了.bak后缀,已经是备份文件了,这里我们打开生成的exe

这诡异的三字经,阴间的黑白配色,名字里的层层设防。。。一切看起来都那么“和蔼”
既然直接爆破的话,我们试试直接点击注册看看会怎么样
卧槽没反应。。。。可恶。。。
输入值再试也还是一样。此时已经能感受到ajj师傅浓浓的恶意了
点击图片会有提示(谢天谢地)

不过如果只是爆破的话,我们做到这里就可以直接尝试搜索字符串了

搜索的时候就不用搜那么准确了,比如一般如果注册成功就会有“注册成功”这几个字出现,所以我们直接搜注册就可以
这里可以看到有一个注册了,看起来很像是注册成功的意思,我们点进去看看

对味了!
往上面翻一下找找关键跳转

不难发现这里有五个验证跳转。。。。也代表本次的序列生成的难度之高。。。
不过作为爆破的话,只要将这里的跳转都nop掉就可以了

请忽略多出来的一个输入框和里面的内容。。是进行了其他操作才有的
可以看到鼠标在放到图片上的时候会提示 “厉害厉害真厉害!佩服佩服真佩服!!”,并且原来的注册按钮此时也变成了“注册了”
那么简单粗暴的爆破就完成了。接下来就是地狱级的折磨了。。。
序列生成
既然有五个判断条件跳转,我们就应该让这五个判断条件都不成立就可以了
另外,这个程序仍然是使用delphi编写的,所以我们也要结合Delphi Decompiler(以下简称DD)去看一下对应的事件执行
补充一点基础知识,在向上一行行读代码的时候,一般只要找到函数入口点就可以了,我们可以在函数入口点打上断点,并观察是如何触发的
而函数入口点一般是如下特征
push ebp
move ebp, esp
或者是位于ret之下
而这里呢,我们并没有发现应该有的函数入口特征

在004473B0这里已经是ret了,但是下面的代码看起来并不是函数入口的样子
这里我们结
逆向工程与软件破解:从UPX脱壳到序列号验证

本文详细介绍了如何对一个加壳的Delphi程序进行逆向工程,从UPX脱壳开始,逐步解析程序的注册验证逻辑,包括鼠标事件、文件内容比较等条件,揭示了程序的序列号生成机制。通过分析和调试,展示了如何通过修改内存中的关键值来绕过注册验证,同时也展示了在逆向过程中如何利用工具和理解代码执行流程。
最低0.47元/天 解锁文章
689





