吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3785|回复: 12
上一主题 下一主题
收起左侧

[原创] 160个Crackme之037学习笔记

[复制链接]
跳转到指定楼层
楼主
海天一色001 发表于 2020-6-6 14:40 回帖奖励
本帖最后由 海天一色001 于 2020-6-6 14:44 编辑

37CM程序,这个程序中“Aboutt”菜单点击后弹出一个提示窗口,大意要求找出密码,作者认为不太难,就没有其他有用信息了。
   
点击Check”按钮,弹出第一个错误窗口:

随意输入数字,点击Check”按钮,弹出第二个错误窗口:

第一步、查壳:

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml5144\wps5.jpg 无壳,VB程序。
第二步、爆破:
OD载入CyberBlade.1.exe,仍是代码压缩的提示,不管直接确定进入CPU窗口,中文搜索看看:

内容不少,说明相对复杂多了。仔细看看,两个错误窗口的内容都有,也有正确提示内容。从0040E161处双击进入CPU窗口,上下查看代码,一时找不到关键代码。还是用专门VB Decompiler来吧:
从VB Decompiler左侧窗口中看到Crackmefrm窗体中有6段子程序,分别是关于菜单、放弃(退出)按钮、窗体加载、窗体初始化、检查注册码按钮、键盘输入检查,先点开最后一个,可以看出程序主要是限制只能输入数字,也验证了错误提示的内容。

点击Checkcmd_Click_40DF60,在右侧查看对应代码,然后生成map文件,在OD中导入,再Ctrl+G,定位于0040DF60处这个Check按钮事件的段首,下断点;
F9运行,在CM的输入框中输入“1234567890”,点击“Check”按钮,程序中断,然后F8单步向下:

一直到0040DFE9处,将1234567890”存入ss:[ebp-0x1C]中;
再到0040E005处将输入的字符存入ecx中,与0040344C内存中的数值比较,这里的比较应该是判断输入字符个数是否为9
[Asm] 纯文本查看 复制代码
0040E005   > \8B4D E4       mov ecx,dword ptr ss:[ebp-0x1C]                     ;  得到输入的字符
0040E008   .  51            push ecx
0040E009   .  68 4C344000   push CyberBla.0040344C
0040E00E   .  FF15 28114100 call dword ptr ds:[<&MSVBVM50.__vbaStrCmp>]         ;  msvbvm50.__vbaStrCmp
0040E014   .  8BF0          mov esi,eax                                         ;  此处比较应该是得出字符个数是否为9
0040E016   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
0040E019   .  F7DE          neg esi
0040E01B   .  1BF6          sbb esi,esi
0040E01D > .  46            inc esi                                             ;  esi=(var_1C=vbNullString)`+`1
0040E01E   .  F7DE          neg esi
0040E020   .  FF15 8C114100 call dword ptr ds:[<&MSVBVM50.__vbaFreeStr>]        ;  msvbvm50.__vbaFreeStr
0040E026   .  8D4D E0       lea ecx,dword ptr ss:[ebp-0x20]
0040E029   .  FF15 90114100 call dword ptr ds:[<&MSVBVM50.__vbaFreeObj>]        ;  msvbvm50.__vbaFreeObj
0040E02F   .  66:3BF7       cmp si,di
0040E032 > .  74 7D         je short <CyberBla.End`If>                          ;  If`(var_1C=vbNullString)`+`1`Then(跳转必须成立)
继续到0040E032处,如果不够9位,则不跳,程序失败,如果够,跳到0040E0B1处,
F8继续向下,到0040E0E8处,得到输入的字符,经一堆相关运算,来到0040E13A处的跳转,这里如果跳走,那就跳过了正确提示窗口,所以这里应该是关键跳,可以nop掉试一下,而本语句上面的代码就应该是注册算法了。
0040E0E8   > \8B4D E4       mov ecx,dword ptr ss:[ebp-0x1C]                     ;  得到输入的字符(伪码1234567890)
0040E13A >    0F84 2C010000 je <CyberBla.End`If>                                ;  关键跳,跳过了正确提示,故需nop掉

先在0040E13A处将跳转命令nop掉,保存为新的文件CyberBlade.1.nop.exe,运行一下,输入1234567890”,点“Check”按钮,弹出正确提示;关掉提示,又弹出一个正确提示,说明破解成功。
三、追码:
爆破时已知算法段,现在再认真分析一下:
0040E0E8处再设一个断点,重新运行CM程序,输入“1234567890”,点击“Check”按钮,程序中断于0040DF60处,再F9,又中断于0040E0E8处。
F8单步,运行的结果基本都在下面代码段的注释中,主要是FST的数值变化不知道如何来的。注释中有指令运行后FST内数值的变化,搞不懂啊。猜测是一个明码315751288与输入的数字进行比较,只不过是运用了浮点运算罢了。0040E0FB处可知输入数字减去存于ds:[ebx+0x4C]中的固定数字(明码315751288),结果如为0,以下各步就能到达正确提示,否则会错误。
[Asm] 纯文本查看 复制代码
0040E0E8   > \8B4D E4       mov ecx,dword ptr ss:[ebp-0x1C]          ;  得到输入的字符(伪码1234567890/真码315751288),运行后FST=0020/0000
0040E0EB   .  51            push ecx                                 ;  存入ecx作为MSVBVM50.__vbaR8Str函数的参数,运行后FST=0020/0000
0040E0EC   .  FF15 5C114100 call dword ptr ds:[<&MSVBVM50.__vbaR8Str>;  字符串转为浮点型(8个字节)的数值形式到ST(0)中,此时ST0=1234567890,FST=3900/3900
0040E0F2 > .  DB43 4C       fild dword ptr ds:[ebx+0x4C]             ;  将[ebx+0000004Ch]内的整数(十进制值315751288)转化为长双精FP80压栈(即ST0=315751288),ST1=1234567890,此时FST=3100/3100
0040E0F5   .  DD9D 38FFFFFF fstp qword ptr ss:[ebp-0xC8]             ;   fstp是将ST0弹出到ss:[ebp-0xC8]中,运行后ST0=1234567890,ss:[ebp-0xC8]=315751288,FST=3900
0040E0FB   .  DCA5 38FFFFFF fsub qword ptr ss:[ebp-0xC8]             ;  浮点减法,运行后ST(0)=ST(0)-SS:[ebp-0xC8]=918816602/0,此时FST=3900/3900
0040E101   .  DFE0          fstsw ax                                 ;  把FST中的值(3900/0)送入ax中,FST=3900
0040E103   .  A8 0D         test al,0xD                              ;  用TEST指令来检测其相应的状态位,测试al and 13= 0,则设Z标志位为1,al and 13 <>0则设Z位为0
0040E105 > .  0F85 EB030000 jnz CyberBla.0040E4F6                    ;  If`Err.Number=0`Then:Z标志位为1则不跳,为0跳至溢出错误
0040E10B   .  FF15 14114100 call dword ptr ds:[<&MSVBVM50.__vbaFpR8>>;  msvbvm50.__vbaFpR8
0040E111 > .  DC1D 08104000 fcomp qword ptr ds:[0x401008]            ;  浮点比较出栈ST0=918816602/0,ds:[0x401008]=0,运行后ST0为empty,FST=0000/4000
0040E117   .  DFE0          fstsw ax                                 ;  把FST中的值(0000/4000)送入ax中,FST=0000/4000
0040E119   .  F6C4 40       test ah,0x40                             ;  ah and 0x40 = 0/0x40;Z=1/0
0040E11C > .  74 05         je short <CyberBla.End`If>               ;  If`Err.Number`Then 跳走则di必为0,则关键跳处会跳走到错误
0040E11E   .  BF 01000000   mov edi,0x1                              ;  edi=1
0040E123 > >  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]          ;  End`If
0040E126   .  FF15 8C114100 call dword ptr ds:[<&MSVBVM50.__vbaFreeS>;  msvbvm50.__vbaFreeStr
0040E12C   .  8D4D E0       lea ecx,dword ptr ss:[ebp-0x20]
0040E12F   .  FF15 90114100 call dword ptr ds:[<&MSVBVM50.__vbaFreeO>;  msvbvm50.__vbaFreeObj
0040E135   .  F7DF          neg edi                                  ;  取补
0040E137   .  66:85FF       test di,di
0040E13A >    0F84 2C010000 je <CyberBla.End`If>                     ;  关键跳,跳过了正确提示,故需nop掉

所以,这也只是一个用浮点运算简单掩盖了一下的明码验证。应输入的注册码是315751288
附件 037.zip (165.6 KB, 下载次数: 3) ,含CM原程序、爆破后的程序、OD的调试文件等。百度链接是:http://pan.baidu.com/s/1skMkJY9,密码: 86pm160CM、我已练习过的前37crackme程序(不含012)都在里面。

免费评分

参与人数 5威望 +1 吾爱币 +24 热心值 +4 收起 理由
Percya + 1 + 1 热心回复!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gh0st_ + 1 用心讨论,共获提升!
Randolp欢 + 1 + 1 谢谢@Thanks!
wasdzjh + 1 + 1 感谢大佬的付出

查看全部评分

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

推荐
 楼主| 海天一色001 发表于 2020-7-1 07:57 |楼主
本帖最后由 海天一色001 于 2020-7-1 08:47 编辑

Percya 发表于 2020-6-30 21:51
网盘链接过期了,大神能再发一个嘛

链接:https://pan.baidu.com/s/1Fm_EM3jKVhYPEZGaxsik8Q
提取码:10l3
原来设置的是永久有效,不知道怎么会过期了!现在这个是永久有效的单个文件,你再试一试
从网上找到的答案是监管严了,百度开始乱封一气了!我尝试了N次,一旦分享,均提示“此链接分享内容可能因为涉及侵权、色情、反动、低俗等信息,无法访问!”
有一篇教程说了几种方法,一个个试吧,现在只能将单个文件分享了!


一个个试的过程中,原来的160个CM的压缩文件包违规了!!!!真好笑!改文件名,不行;改后缀后,还不行!全改了,还是不行!!!
没办法,删除掉,再重新压缩上传一个,这个行了,但不知能撑几天了!
链接:https://pan.baidu.com/s/1NEpyyUefbKcoJvMGG_9OmQ
提取码:p8dk
沙发
努力一点就能飞 发表于 2020-6-6 16:23
3#
MC阿虎 发表于 2020-6-6 18:55
4#
ShenBohemian 发表于 2020-6-6 21:27
学习了,感谢楼主分享
5#
qll24680 发表于 2020-6-7 06:17
感谢分享
6#
BoolMing 发表于 2020-6-7 14:28
感谢分享!
7#
gh0st_ 发表于 2020-6-7 15:57
感谢分享 学习了
8#
iwill1999 发表于 2020-6-7 21:13
感谢大神分享
9#
lilianuo 发表于 2020-6-8 07:21
学习了,谢谢
10#
OO2OO 发表于 2020-6-8 08:28
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-16 10:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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