说实话,这个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