New 160 Crackme 6-10

New 160 Crackme-6 Reg

算法 :★

爆破 :★

准备工作

拖进PEID发现没壳,但依然是没见过的编程语言

image-20230221215405148

然后我们直接打开程序看看,发现让我们填用户名和SN,随便填一个以后,会自己生成一个dll文件,这个dll文件里面会存起来我们输进去的username和SN,然后我们要重启程序来验证注册码

算法

大概知道程序能干什么之后,还是直接拖进OllyDBG,老规矩先搜字符串,然后在最底下,发现了这样一段话image-20230221215749432

猜测告知有效期了应该就是注册成功了,所以我们跟进看一看。

image-20230223165907229

注意到“有效期至”和未注册之间的命令是顺序执行的,而下面会有一个跳转,所以猜测应该是两个输出结果都放进内存里面,之后由程序决定输出哪个。而之后的跳转,如果跳转成功,会直接跳转到结尾部分,所以不能让其正常跳转。经过几次尝试之后。发现这个跳转应该是用来检测是否有dll文件的,所以正常来说这个跳转不用去管它。

接下来几行执行完之后发现堆栈基本上没有太有价值的变化,所以我们继续往下执行,接下来到reg.dll之后又出现了Username和SN猜测接下来三个函数应该是打开dll并从中读取Username和SN。image-20230223204637015

执行完第二个函数后果然把之前输入的用户名读出来了

image-20230223204927665

image-20230223205025878

继续执行完第三个函数,发现把SN码也读出来了

image-20230223205103081

接下来把我们输入的两个值分别赋给EAX和EDX,底下又是一个函数,这个显然是要传参了,而这个函数以我们输入的值为参数,不出意外的话应该就是验证算法所在的函数了,所以我们在这里用f7进入函数看一下究竟是怎么验证的。

image-20230223205511142

进入这个函数之后,前几行都是用来开辟栈空间的,我们不用管,然后看到程序将ECX清零,然后又把0x0019FD74-0x0019FD6C的位置都清0,接下来又把0x0019FD88和0x0019FD90清零了,然后把我们输入的SN放在0x0019FD94,把用户名放在0x0019FD98。接下来两个函数,一个以用户名为参数,一个以SN为参数,需要注意一下

image-20230223205836081

但其实进去看了以下并没有发生什么,所以我们继续往下走。

image-20230223212113728

接下来看到一个函数,紧接着一个跳转,查看一下这个跳转目标地址发现如果发生跳转就会跳到几乎要结束的位置,所以不能跳,而如果不跳就需要让EAX为0x10,所以而函数执行前EAX的值是我们输入的SN码,因此这个函数应该会决定EAX的值,我们进去看一看。发现是eax-0x4这个位置的值,我试了几次以后发现这个值应该是SN码的长度,也就是说SN码需要是16位的。

然后接下来是对序列码进行一轮检验,应该是要求序列码只能有十六进制字符。

接下来继续运行获得了一个日期和一个字符串,发现正好是一个十六位的字符串,猜测这个就是正确的序列号,试验后果然可以,至此结束。

爆破

这道题爆破可以从算法Call后面的关键函数下手,把那个je指令nop掉就可以了

或者可以把算法Call的入口改为让eax返回我们需要的值然后直接retn

New 160 Crackme-7

算法 :★★

爆破 :★

准备工作

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021-2024 Kery
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信