CrackMe-002
逆向学习
工具
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大致算法就这样吧,我也理不清了
- 点赞
- 收藏
- 分享
- 文章举报
- 吾爱破解160个crackme之002
- 160个练手CrackMe-002
- 逆向破解之160个CrackMe —— 002-003
- 160个CrackMe之002
- 160个CrackMe之002破解思路
- 160个破解练习之CrackMe 002 Afkayas.1
- 160个破解练习之CrackMe 005 CKme002
- 160个crackme 002 Afkayas.1
- [反汇编练习] 160个CrackMe之002
- java项目中遇到的问题及解决办法002
- p45-002
- 【原创】nodejs探索笔记 -- 002
- ASP.NET—002:GridView手动增加一行
- CrackMe 破解能力测试等级3的代码定位及算法解析(辛主持)
- 002_016 Python 遍历目录树
- ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
- 知易游戏开发教程cocos2d-x移植版002(上)
- 002 数据库主外键之NULL值
- [反汇编练习] 160个CrackMe之003