CrackMe-001

文件为52pojie上面的新手160CrackMe,按照编号。

颓废了好多天,今天实在打不动游戏了,计划学点东西。

那么学习一下逆向相关的一点点东西吧,不过应该也不会写的比较多,毕竟主业算是Web,这个主要是不让自己在节日中颓废写的,基于论坛上大佬的破解分析

0x01 查壳

用传统工具查下

image.png

应该是没有壳的,那么我们直接进入正题

0x02 去除弹框

OD加载程序

image.png

F9执行

image.png

然后F12暂停,再按Alt+F9恢复运行,这时点击确定就可以恢复用户态。

观察堆栈

image.png

看不出来,用插件中的中文搜索引擎-智能搜索,搜索出现的字符串Welcome

image.png

找到地址,进入,双击下断点,重新运行

image.png

单步步过,找到触发当前弹框函数的原函数

我们接着分析原来的函数,按回车键跟随

image.png

那么我们nop掉这个地方再试试,注意确定了功能后可以双击来加注释,方便继续分析

image.png

然后我们继续分析程序,这里最后我们再Patch

0x03 分析注册

随意输入注册

image.png

字符串搜索,找到Sorry

image.png

这里有一个cmp,和4进行比较,大于等于4就会跳转

image.png

下断点分析,用户名小于4,直接进下面,具体分析可以进入上面的函数来观察

image.png

image.png

image.png

注意此时的eax,为1,也就是我们输入的serial长度

image.png

image.png

可以确定为统计字符串长度,且统计的是之前eax的长度;那么就可以确定了。

image.png

image.png

后面还有一个统计长度

image.png

这里的[local.4]表示是ebp的-4*4=ebp-16,意思是局部变量,我们可以在窗口中右键追踪从而看到

image.png

image.png

然后是乘以十六进制29,可以看出

image.png

image.png

右键搜索常量431750,可以找到这个地址最初被赋值的地方

image.png

经过字符串拼接,我们已经可以从栈中看出生成的注册码了

image.png

这个注册码对应的是用户名aaaa,我们试试

image.png

7954=ascii(‘a’)*41*2

所以我们就可以写注册机了;这个程序的破解大致就是这样。

0x04 暴力注册

虽然这里我们分析出了算法,但是还是费了一些力气的

我们也可以直接暴力破解,输入任意字符破解;

先到一开始的地方,查找字符串Good Job

image.png

jnz比较妙,那么我们就改成jz,是不是就OK了

重新运行

image.png

随意输入就能注册成功

0x05 补丁注入

这里我们修改了这个程序,实现了我们的功能;那么最后我们在发布破解版程序的时候,肯定需要把补丁应用上去。

我们右键-复制到可执行文件-所有

然后点击叉掉,会提示我们文件和原来不同,然后换个名字保存即可

我们就制作出了补丁程序,从而可以运行了打补丁的程序,和破解版一样


CrackMe-001
http://hexo.init-new-world.com/CrackMe-001
Author
John Doe
Posted on
February 14, 2021
Licensed under