吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9134|回复: 28
收起左侧

[原创] [反汇编练习] 160个CrackMe之022(CarLitoZ.1)分析思路及过程

  [复制链接]
pk8900 发表于 2017-11-30 22:43
本帖最后由 pk8900 于 2017-11-30 23:07 编辑

最近天气很冷,没外出,除了继续学习C++,就是在论坛里看看帖子,还有继续学习 【适合破解新手的160个crackme练手】,本文就是第22个CrackMe: CarLitoZ.1
分析完后,在论坛里搜索了一下,只有一篇14年的文章,思路差不多,写的不是太详细,就决定发这个帖子,以供论坛里和我一样的新手查阅和对照。


【crackme简介】
下载地址:http://pan.baidu.com/share/link?shareid=541269&uk=4146939145
VB编写,无壳,是一个序列号式验证方式,有错误提示:“ Wrong Code! Try Again”及未注册字样:"Unregistered"。


【crackme截图】

Image 004.png

【初步观察推测】
软件对你输入的序列号进行验证,不对的话,就会调用一个VB的MxgBox信息框,并清空输入框。File菜单里有 Restart  About Quit三个子菜单,Restart 点击没有变化,About有个信息框,有三行英文说明。
【进行分析步骤】
0x01:先不要急于用OD调试,因为VB程序在调试器里的代码可读性太差,还是请出VB反编译软件:VB Decompiler,说心里话,这软件分析的还真不错,至少会让你看清软件的大致轮廓,截图01。


Image 001.png

左栏中事件代码:reg_Click_402D20,一看就是我们的注册按钮事件,观察前几行代码:
注册成功字样:"Registration Successful"
之前的关键跳转:If (arg_8.SaveProp = 1) = 0 Then GoTo loc_00402F49
跳转之前的判断:var_eax = Call Crack.rgr ,因为在左栏中有个事件是:rgr_403230,由此可以判断,算法部分的代码就在rgr_403230代码里。
另外发现可疑文件路径:"c:\windows\MTR.dat" 和可疑字符串 “trv2156j0e”,该字符串测试并非注册码。

0x02:判断算法部分rgr_403230,截图02


Image 002.png

顶部一串  { XXXXX = abt.Label1.Caption var_eax = abt.Label1 ...}的代码,下方若干 {Mid(XXXX, M, N)}的函数,初步判断为Mid取Label1.Caption字串中间的字符,连接成一个字串,具体是不是还要到调试器里验证。

0x03:Label1.Caption究竟是什么?
在abt窗体中,有如下代码:{Begin Label Label1 'Offset: 00001A0C     Caption = "abt.frx":0},并没有实际的字符串值,在十六进制编辑器中可以看到。截图03

Image 003.png

Label1.Caption是“bPe CrackMe   v1.0   (若干空格)     This CrackMe it's to trainer your VB cracking ability  (若干空格)      Developed by CarLitoZ”
Image 005.png

以上三点弄清楚后,接下来就是动态调试,验证了,X64DBG载入,来到  loc_00403662: var_8C = Mid(var_1C, 6, 1),第一个Mid函数代码处,可以看到如下图:


Image 006.png


call edi,也就是 <msvbvm50.rtcMidCharVar>:,上面压栈参数中:push 6,即第6位,运行过call edi后,EAX即返回值,是一个堆栈地址,有许多新手朋友会认为EAX堆栈地址里或堆栈指向的地址里的数据就是函数返回值,实际上是错误的,实际上EAX+8堆栈指向的地址里才是返回的数据。这是VB程序的特殊之处,验证第一个字符为:r,继续F8跑代码,会取出多个字符,然后程序调用了<msvbvm50._vbaVarAdd>,依次连接,最后调用<msvbvm50._vbaVarTstEq>函数将字符串跟我们输入的序列号进行对比,如果一样的话,就会在"c:\windows\MTR.dat" 写入“trv2156j0e”(下次启动程序会较验这个字符串以确定是否注册成功了,可以通过菜单中的Restart事件清除注册记录),并显示注册成功信息框及字样,正确的注册码是:rkh1oyie,因代码过长,就不贴代码上来了。


附注册机VB代码:

[Visual Basic] 纯文本查看 复制代码
Private Sub Command1_Click()
lable_str = "bPe CrackMe   v1.0" & String(123, Chr(32)) & _
                  "This CrackMe it's to trainer your VB cracking ability" & _
                   String(123, Chr(32)) & "Developed by CarLitoZ"
Text1.Text = Mid(lable_str, 6, 1) & Mid(lable_str, 9, 1) + Mid(lable_str, 143, 1) _
                    + Mid(lable_str, 16, 1) + Mid(lable_str, 161, 1) + Mid(lable_str, 171, 1) _
                    + Mid(lable_str, 166, 1) + Mid(lable_str, 168, 1)
End Sub


因为是新手,也就只能写这些了,不对的地方,请大家给予指正。

免费评分

参与人数 12威望 +1 吾爱币 +18 热心值 +12 收起 理由
JACKLI71 + 1 我很赞同!
qvq + 1 + 1 谢谢@Thanks!
反正都一样 + 1 + 1 我很赞同!
besitor + 1 + 1 我很赞同!
朱朱你堕落了 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
废宅小五 + 1 + 1 谢谢@Thanks!
Allyn0303 + 1 + 1 我很赞同!
lhspang + 1 + 1 热心回复!
kikyoulin + 1 + 1 我很赞同!
henryshao + 1 + 1 谢谢@Thanks!
123-木头人 + 1 + 1 用心讨论,共获提升!
Sound + 1 + 8 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| pk8900 发表于 2017-12-1 13:37
mayl8822 发表于 2017-12-1 11:01
请问一下楼主用的什么画图工具?

picpick,截图工具,可以直接修改保存。
kikyoulin 发表于 2017-12-1 12:31
试了下,用OD直接字符串查找很快能爆破,但是要算法的话看着还是头大。
看了楼主的操作,受益匪浅!感谢
lovewrh 发表于 2017-11-30 23:03 来自手机
都同学 发表于 2017-11-30 23:14
感谢楼主分享
jianqing 发表于 2017-12-1 00:58 来自手机
厉害啊!!
冰冻 发表于 2017-12-1 09:46
感谢分享,学习一下
土耳其冰淇淋 发表于 2017-12-1 09:50
跟着学习一下,谢谢楼主
cnshr00t 发表于 2017-12-1 10:15
谢谢楼主分享
syj000 发表于 2017-12-1 10:46
先试试去看看那
110006600 发表于 2017-12-1 10:48
非常感谢提供!我也该努力了
mayl8822 发表于 2017-12-1 11:01
请问一下楼主用的什么画图工具?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 14:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表