吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6586|回复: 17
收起左侧

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

  [复制链接]
海天一色001 发表于 2019-6-11 09:28
本帖最后由 海天一色001 于 2019-6-11 09:30 编辑

看到025,图标显示就是一个VB程序。老规矩,先打开看看:
001.png

002.png
肯定是利用时间控件,5秒后才能继续,标题栏上显示要杀掉这个窗口,这也是破解的第一个要求了:
点击“Continue"按键,程序进入第二个窗口:
003.png
点击“About”按钮,又出现一个窗口,基本没什么用处:
005.png
输入“1234567890”,点击”Check“按钮,弹出错误提示框来,有提示应该就好办:
004.png
第一步、查壳:
006.png
程序用VB5.0编写,无壳:
第二步,杀NAG
VB程序,还是使用VB Decompiler来反编译一下:
007.png
仔细从VB Decompiler中查看,分别点击左边Forms组中的3个Form,从右边找不到是谁先启动的,但能看出来Form1是主程序窗口,Form2是NAG窗口,Form3是About窗口;
再点击Code中的3个Form,这下可以看到Form1有个Form_Load_405905,从右边窗口中看到了程序启动的参数:
008.png
其中,
loc_00405948: Me.Visible = False
loc_00405986: Form2.Visible = True
00405948处Form1设为隐藏,Form2设为显示。那么在这两处将它们反过来不就行了吗?
009.png
根据这个思路,将程序加载入OD,然后Ctrl+G,输入405948,点击“OK”,程序来到00405948处:
观察00405948和00405986两处代码,分别为“FF96 BC010000”和“FF90 BC010000”,只错一个,那么我将“6”和“0”改一下看看:
010.png
修改后反汇编命令中eax和esi两个进行了对调:
011.png
将修改的内容保存到可执行文件CodeZero.1.killnag.exe,运行一下,不行,出错了!
012.png
大概意思是窗体的variable属性没设置!!!说明我这样的修改有误,不能这样做。再返回OD,仔细查看:这两处设置参数的call会不会调用上面两句中的参数?00405945处是“6A 00”,反汇编为“push 0x0”,00405981处为“6A FF”,反汇编为“push -0x1”,一般00和FF表示true和false,但这里可能正好相反,0是false,-1是true。
[Asm] 纯文本查看 复制代码
00405945  |.  6A 00         push 0x0
00405947  |.  57            push edi
00405948  |.  FF96 BC010000 call dword ptr ds:[esi+0x1BC]            ;  form1.visable=false

00405981  |.  6A FF         push -0x1
00405983  |.  56            push esi
00405984  |.  8B06          mov eax,dword ptr ds:[esi]
00405986  |.  FF90 BC010000 call dword ptr ds:[eax+0x1BC]            ;  form2.visable=true

那么将原来修改的地方恢复,将00405945处的“6A 00”改为“6A FF”, 00405981处的“6A FF”改为“6A 00”,再将修改的所有内容保存为可执行文件CodeZero.1_killnag.exe,再试一下,成功了!
013.png
将CodeZero.1_killnag.exe加载入VB Decompiler中,查看Form_Load_405905的代码,和上面未修改前对照,正好反过来,说明这次是正确的。仔细想一下,遇到call之类给程序赋参数值时,应该向上面找一找参数从何而来。以前其实已经多次发现了这一点,但没留心,以后一定注意,少走一些弯路。
014.png
第三步、爆破
用VB Decompiler生成map文件,用于导入OD中作为注释:
015.png
用OD加载CodeZero.1_killnag.exe,再用中文智能搜索查找字符串:
016.png
很容易找到了成功和失败的提示内容。双击0040577B这一行来到CPU窗口,查看程序代码:
017.png
在0040577B上方的0040576E处看到一个跳转命令“je short CodeZero.0040579A”跳过了成功提示,那么nop掉它试一试:
018.png
将修改后的内容保存到可执行文件CodeZero.1_killnag_nop.exe,运行一下,输入“1234567890”,点击“Check”按钮,弹出正确提示框,爆破完成。
019.png
第四步、追码
撤消修改,观察代码情况:0040576E这一句指令是“je short CodeZero.0040579A”,当标志位ZF为1时跳过了成功提示,再向上查看,在00405746处有个比较指令,这里才能使ZF标志位发生改变。那么就看si和bx的值是怎么来的了。再向上一堆令人头疼的运算,看到了MSVBVM50.__vbaStrCmp函数,再向上,看到了参数是假码和真码,而注册码竟然是个明码“55555”!验证一下,在025和CodeZero.1_killnag.exe中输入“555555”,点击“Check”按键,成功提示均出现了。
可是这里的代码令人有点迷惑,虽然知道是调用MSVBVM50.__vbaStrCmp进行的比较,把返回结果存入[eax],再把[eax]赋值给[esi],然后用一堆运算来把[esi]处理一番,最后比较[si]与[bx], ([bx]==0),为什么不直接比较[eax]是否==0来判断字符串是否相等呢?
自己用VB写一个字符比较的程序,然后反汇编看看:
[Visual Basic] 纯文本查看 复制代码
Private Sub Command1_Click()
    If Text1.Text = "1234567890" Then
        MsgBox "YES"
    Else
        MsgBox "NOT"
    End If
End Sub

自己编写的StrCmp.exe程序反汇编过来部分代码如下:
[Asm] 纯文本查看 复制代码
00401BCF   . |FF15 14104000 call dword ptr ds:[<&MSVBVM60.__vbaHresultChec>;  msvbvm60.__vbaHresultCheckObj
00401BD5   > \8B45 E8       mov eax,dword ptr ss:[ebp-0x18]
00401BD8   .  50            push eax
00401BD9   .  68 7C174000   push StrCmp.0040177C                           ;  1234567890
00401BDE   .  FF15 38104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]    ;  msvbvm60.__vbaStrCmp
00401BE4   .  8BF0          mov esi,eax
00401BE6   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
00401BE9   .  F7DE          neg esi
00401BEB   .  1BF6          sbb esi,esi
00401BED   .  46            inc esi
00401BEE   .  F7DE          neg esi
00401BF0   .  FF15 88104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]   ;  msvbvm60.__vbaFreeStr
00401BF6   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
00401BF9   .  FF15 8C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]   ;  msvbvm60.__vbaFreeObj
00401BFF   .  B9 04000280   mov ecx,0x80020004
00401C04   .  B8 0A000000   mov eax,0xA
00401C09   .  66:3BF7       cmp si,di

025程序部分代码如下:
[Asm] 纯文本查看 复制代码
00405719   .  E8 3CBAFFFF   call <jmp.&MSVBVM50.__vbaHresultCheckObj>
0040571E   > \FF75 E8       push dword ptr ss:[ebp-0x18]                         ;  输入的假码
00405721   .  68 A4264000   push CodeZero.004026A4                               ;  55555
00405726   .  E8 3BBAFFFF   call <jmp.&MSVBVM50.__vbaStrCmp>                     ;  字符串比较,结果存入[eax],关键比较
0040572B   .  8BF0          mov esi,eax                                          ;  以下是对eax的值进行处理,绕了一大圈,到cmp si,bx 结果不变
0040572D   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
00405730   .  F7DE          neg esi                                              ;  msvbvm50.7412C350
00405732   .  1BF6          sbb esi,esi                                          ;  msvbvm50.7412C350
00405734   .  46            inc esi                                              ;  msvbvm50.7412C350
00405735   .  F7DE          neg esi                                              ;  msvbvm50.7412C350
00405737   .  E8 18BAFFFF   call <jmp.&MSVBVM50.__vbaFreeStr>
0040573C   .  8D4D E4       lea ecx,dword ptr ss:[ebp-0x1C]
0040573F   .  E8 0ABAFFFF   call <jmp.&MSVBVM50.__vbaFreeObj>
00405744   .  6A 0A         push 0xA
00405746   .  66:3BF3       cmp si,bx                                            ;  关键比较

从00401BCF到00401C09处,与025程序中的00405719到00405746处非常相似,
估计是反汇编时编译器自动生成的这一堆代码,基本上可以认为作用是
cmp string1,string2
je XXXXXXXXX
其他的不用管就行了。
附件 025.zip (261.94 KB, 下载次数: 3) ,含CM原程序、爆破后的程序、OD的调试文件等。
百度链接是:http://pan.baidu.com/s/1skMkJY9,密码: 86pm,160个CM、我已练习过的前25个crackme程序(不含012)都在里面。

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
Hmily + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小菜鸟一枚 + 1 + 1 我很赞同!
liphily + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| 海天一色001 发表于 2019-6-13 16:05
byh3025 发表于 2019-6-13 13:55
大神导出的那个map文件是怎么用的呢?教程中没有啊

用VB Decompiler生成的map文件,导入OD后相当于自动生成了OD的注释,可以节省部分时间。使用方法是在OD的插件中有个“mapimp"插件,使用它来导入map文件(import map)。
2.png
byh3025 发表于 2019-6-13 16:22
海天一色001 发表于 2019-6-13 16:05
用VB Decompiler生成的map文件,导入OD后相当于自动生成了OD的注释,可以节省部分时间。使用方法是在OD的 ...

嗯,学习了,谢谢你的指导
zzcl558 发表于 2019-6-12 06:12
学士天下 发表于 2019-6-12 07:25
受教,谢谢!
小菜鸟一枚 发表于 2019-6-12 10:03
分析的很有条理,值得借鉴学习
a921222a 发表于 2019-6-12 10:11
我很赞同!
神一样啲男人 发表于 2019-6-12 11:04

谢谢分享!
wobzhidao 发表于 2019-6-12 12:10
这个可以有的
李半峰 发表于 2019-6-13 00:03
值得学习
鲶鱼的忧郁 发表于 2019-6-13 08:55
感谢楼主分享
落花情 发表于 2019-6-13 09:01
大佬厉害了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-16 16:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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