您的位置:首页 > 其它

CrackMe-002

2020-02-03 04:36 393 查看

逆向学习

工具

OllyDbg(OD):https://www.52pojie.cn/thread-350397-1-1.html
PEID:https://www.52pojie.cn/thread-170387-1-1.html
Exeinfo PE:https://www.52pojie.cn/thread-437586-1-1.html
樱花补丁制作工具:https://www.52pojie.cn/thread-62307-1-1.html
内存补丁生成器:https://www.52pojie.cn/thread-162411-1-1.html
注册机生成器:https://www.52pojie.cn/thread-159470-1-1.html
IDA Pro v7:https://www.52pojie.cn/thread-675251-1-1.html

第二关

有了第一关的经验,做起第二题应该会得心应手,先用PEiD看一看,然后打开程序提示丢失个dll文件,去网上下一个就ok

https://www.duote.com/dll/msvbvm50_dll.html

不晓得有没有毒,虚拟机先用着

我的是win764选择xp64可以用,直接拖到目录下即可

这里可以看到检测出来是用VB写的程序


打开之后,与第一题类似提示输入用户名和注册码,这里随便填写一个,弹窗提示错误。

多尝试几次,摸透了,就开始第一关的套路

爆破部分

首先,按照经验,有对话框提示的程序可以通过堆栈查找调用的位置。方法如下:输入伪码,点击OK,弹出错误对话框,此时不要关闭这个对话框,切换到OD,点击暂停程序,然后Ctrl+K到堆栈视图,如下:

这里的截图也可以发现

rtcMsgBox
证实是用VB编译的程序(好像没啥大用处,哈哈,做个了解)

这里攻略有的是这么解释的

到了这里基本蒙圈了,竟然不是一般的C/C++代码,看看后面的Called from大部分来自msvbvm50,user32,根据名称百度一下,发现是使用VB的模块写的。再查看红色部分,发现表面上和对话框相关的只有msvbvm50.rtcmsgbox和user32.MessageBoxIndirectA,最主要的是msvbvm50.rtcMsgBox的调用来自AfKayas_.0040261C,所以我们基本可以断定rtcMsgBox是Vb中弹出对话框相关的东西,不要犹豫,选中它,右键->show call。

反正

show call
就完事,哈哈,然后上下看一看,就可以找到跟弹窗一样的字符

在框中部分上方,有一条

jmp
,但是跳转到
0040263B
处,超过断点所以继续往上看

这里出现了

je
判断之后直接跳转到弹窗报错的字符串那里,所以可以确定这里就是判断的逻辑部分,直接
右键->Binary->Fill with NOPs
就完事了,运行果然通过

到这里就有点挫败感了,看了很多还原这个注册码的东西,还是不太明白,只会爆破

就看懂一个往上面找到程序头在

00402310
处的
push ebp

攻略给的解释是

先取出注册码的长度len, 然后取出注册码第一个字符的ANSI值cName, 让后计算len*0x17CFB+cName,将计算的值转换为10进制文本,前面加上”AKA-”组成最后的注册码

自己尝试发现,长度相同/第一个字符相同的账号注册码是一样的


算法部分

回到爆破的那个地方(大佬们都这么说,就是把je换成noop那一块)

攻略的步骤反正我是没整明白(大佬求放过)我就自己一步一步往上走,设置断点,然后观察寄存器FPU,到了下面这步有了发现

反正就是在这一步计算出了注册码,但是没有添加AKA头部,通过尝试发现确实是这样


接下来就有思路了,往上看看注册码的算法

emmm大致算法就这样吧,我也理不清了

  • 点赞
  • 收藏
  • 分享
  • 文章举报
熊猫在路上 发布了10 篇原创文章 · 获赞 1 · 访问量 322 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: