160个crackme 009 Andrénalin.2

mac2022-06-30  20

说实话,这个crackme做的我十分恼火...

好吧,开始: 伪码检验: 出来的对话框是什么鬼.

OD查找参考文本字符串,后我查了一下这几个奇怪的字符串的翻译: 德文..作者像是个德国人...

我们定位到字符串的关键位置,向上发现

VbaVarTstEq 变量比较函数 于是看到跳转位置,搞清楚关系后,全部nop掉,把程序改名后dump出来,无脑爆破掉了:

OK,找算法,首先,不熟悉VB API函数的去自行百度博客,照着博客上的一边查,一边做:

实在抱歉,OD分析VB实在不怎么样,而且VB这种奇葩的传参方式,我也是看的云里雾里,于是我只能 VB Decomplier:

分析代码:

大致对流程分析清楚了

这个循环中,将name的每一个字符取出来,转化成Acsii码后相加

之后的结果与1234567890(Dec)相乘,结果存放在 ss:[ebp-0x34] 中,这是个重点关注的地址,我们Crtl+G过去: 发现地址位置里,什么可看不出来,于是再看看这个vbaVarMul()函数,乘了这么大的数1234567890,应该是存不下去的,应该是转成浮点数了,右键,64bit double

检验一下: (0x31+0x32+0x33+0x34+0x35+0x36)*1234567890 的确是,这个地址需要好好关注。 继续,就有点懵:

vbaMidStmtVar()这个函数,查遍了百度,没什么结果,于是,我就只能借鉴了一下别人的weiteup...好吧,请不要喷我: 原来是插入,其中有一个参数是更改指定位置的字符串的字符

在0x4的字符改成“-”

在0x9的字符改成“-”

最后,就是比较函数:

两个 参数: var18 = 0019F260 var28 = 59DE8000 一个是我们输入的name的存储地址lxw1996,另一个是上面提到的很重要的,serial的地址,这个地址,经过一些变化,在我们的伪码中,结果应该是: 381-8147-010 检验一下: 成功了,好吧,姑且算是搞定了吧,注册机: Python:

看到了差距,还要努力,工具是一方面,没有工具就不逆向了吗?

转载于:https://www.cnblogs.com/Space-of-Bruce/p/5571752.html

最新回复(0)