吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.40881110.com

 ?#19968;?#23494;码
 注册[Register]
搜索
查看: 1529|回复: 12
上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
海天一色001 发表于 2019-4-23 20:07 回帖奖励
本帖最后由 海天一色001 于 2019-4-23 20:15 编辑

第20个CM,一看图标是应该是Delphi的,打开程序:

这个界面有点花啊,看不大懂,蜘蛛是个什么意思?试着在Serial文?#31350;?#20013;输入?#22336;?#28857;击“Spider”按钮,有提示,不是有效的数字;再重新输入数字,点击按钮,下方的Reg N框中出现文本,但与下方的?#22336;?#19981;一样,猜测是输入Serial,经过运算得到“3E74984B”这串数?#32844;桑?br />    
无意中又点中“Spider”按钮,左下方的蜘蛛竟然向上动了一下!再点击,再向上;直到爬到蛛网处,程序自动关闭!可能这个程序不是那么简单地让人破了!
先不管那么多,查壳:

有壳,得先脱壳。试着用PEID插件中的PEiD通用脱壳器,生成一个BuLLeT.8.exe.unpacked_.exe文件,再用PeiD查壳,发现已脱,程序是用Delphi编写的。

学习破解,不光要用工具脱壳,更得学会基本的原理和手动脱壳方法,所以要练习一下?#27490;?#33073;壳:
将程序载入OD中,提示加了密,其实就是加了壳,

点“是”按钮,进入CPU界面,一看就不是熟悉的程序入口点:

利用以前学习的单步直达法,F8向下一步,在寄存器窗口里右键点击ESP数值,选“数据窗口中跟随”命令:

在地?#38450;?#20013;?#19968;鰨?#36873;择“断点-硬件访问-word?#20445;?br />
F9键运行,CPU窗口到达00465262地址处,

看命令,是跳到0044A648地?#32602;?#36825;个跳转很大,可能跳过去就是程序入口点了,F8运行,

这个界面很熟悉了,就是程序真正的入口:
用OD的插件来脱壳:

使用方式1和方式2脱壳,生成文件1.exe和2.exe;

分别打开这两个脱壳后的文件均能正常运行,就不需要修复了。再用PEiD查壳,均显示无壳,使用Delphi编程:
   

第一步、爆破:
OD载入1.exe:老习惯,查找?#22336;?#20018;,可这一次不行了,没找?#25509;?#20851;的文字:

Delphi语言也不熟,但肯定有按钮事件,用Dark查找一下按钮事件:

看到按钮事件开始的内存地址为0044A2E8,在内存地址上双击,进入反编译界面:

和VB Decompiler有点相似,看了一下,按钮事件的代码并不长。
回到OD,将相关的注释复制到OD中进行对照,基本上程序就很清楚了。从按钮事件开始一直到0044A387才有第一个跳转(jnz short 1.0044A398),这个跳转跳过了另一个jmp,根据以往的经验,很可能这就是关键跳:在这两个跳转之后又有一个跳转命令,观察代码后发现前两个跳都不到这里,所以不是关键跳。于是大胆试验一下,将0044A387处的指令nop掉,生成1_nop.exe,试一试,在文?#31350;?#20013;输入“12345?#20445;?#28857;按钮,下面文?#31350;?#20013;出现“0090AB?#20445;?#21491;边出现了一个奖杯,成功了!

第二步、追码:
Ctrl+G到0044A2E8处下断,F9运行,输入“12345?#20445;?#28857;按钮,程序中断;单步向下,至0044A30C处,看到命令是call 1.0042440C,运行后看到信息框中内容为堆栈载入了Serial,eax=5;

继续向下,0044A314处Dark注释的函数是StrToInt(S:,猜测是?#22336;?#20018;转整数,运行后[eax]=0x3039,是十进数12345的16进制?#38382;劍?#32487;续向下,到0044A31E处应该还是?#22336;?#20018;转整数,可能是64位的吧;再向下,到0044A337处,[eax]=[eax]*3=0x90AB;继续到0044A34B处,?#22336;?#20018;转16进制数(其实从寄存器中看到的本来就是16进制数了);继续向下,注释中TControl.SetText(TControl;TCaption) Edit3 : TEdit 、TControl.GetText(TControl):Tcaption、control Label2 : TAHMLabel、controls.TControl.SetVisible(TControl;Boolean)、control Label6 : TLabel等,结合以往的经验,应该是020程序界面上的文?#31350;頡?#26631;签等的名称、内容之类的内容:
[Asm] 纯文本查看 复制代码
0044A314  |.  E8 EFD6FBFF   call 1.00407A08                          ;  * Reference to: sysutils.StrToInt(S:
0044A319  |.  8BF0          mov esi,eax                              ;  上一句call应该是对Serial进行运算:[eax]=0x3039=D12345
0044A31B  |.  8B45 FC       mov eax,[local.1]
0044A31E  |.  E8 5DD7FBFF   call 1.00407A80                          ;  * Reference to: sysutils.StrToInt64(S: [eax]=0x3039
0044A323  |.  52            push edx
0044A324  |.  50            push eax
0044A325  |.  8BC6          mov eax,esi
0044A327  |.  99            cdq                                      ;  cdq大多出现在除法运算之前,?#23548;?#30340;作用把EDX的所有?#27426;?#35774;成EAX最高位的值。也就是说,当EAX <80000000, EDX=00000000; 当EAX >= 80000000, EDX 则为FFFFFFFF。
0044A328  |.  030424        add eax,dword ptr ss:[esp]               ;  [eax]=[eax]+SS:[esp]=[eax]*2
0044A32B  |.  135424 04     adc edx,dword ptr ss:[esp+0x4]           ;  带进位加法指令:edx=edx + [esp+4] + CF
0044A32F  |.  83C4 08       add esp,0x8
0044A332  |.  52            push edx
0044A333  |.  50            push eax
0044A334  |.  8BC6          mov eax,esi
0044A336  |.  99            cdq
0044A337  |.  030424        add eax,dword ptr ss:[esp]               ;  ?#23548;?#19978;是[eax]= [eax]+SS:[esp]= [eax]*3
0044A33A  |.  135424 04     adc edx,dword ptr ss:[esp+0x4]           ;  1.0044A3E4
0044A33E  |.  83C4 08       add esp,0x8
0044A341  |.  52            push edx
0044A342  |.  50            push eax
0044A343  |.  8D55 F8       lea edx,[local.2]
0044A346  |.  B8 06000000   mov eax,0x6
0044A34B  |.  E8 78D6FBFF   call 1.004079C8                          ;  * Reference to: sysutils.IntToHex(Value:
0044A350  |.  8B55 F8       mov edx,[local.2]
0044A353  |.  8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC]         ;  * Reference to control Edit3 : TEdit
0044A359  |.  E8 DEA0FDFF   call 1.0042443C                          ;  controls.TControl.SetText(TControl;TCaption);
0044A35E  |.  8D55 F4       lea edx,[local.3]
0044A361  |.  8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC]         ;  * Reference to control Edit3 : TEdit
0044A367  |.  E8 A0A0FDFF   call 1.0042440C                          ;  controls.TControl.GetText(TControl):TCaption;
0044A36C  |.  8B45 F4       mov eax,[local.3]
0044A36F  |.  50            push eax
0044A370  |.  8D55 F0       lea edx,[local.4]
0044A373  |.  8B83 F0020000 mov eax,dword ptr ds:[ebx+0x2F0]         ;  * Reference to control Label1 : TAHMLabel

继续到0044A379处调用ASCII值“3E74984B?#20445;?下一句将这个值存入edx中,再下一句[eax]=0x90AB,到0044A382处调用比较子程序(call 1. 00403BE8)对[edx]和[eax]进行比较,因为不相等,所以下一句会跳;
[Asm] 纯文本查看 复制代码
0044A379  |.  E8 8EA0FDFF   call 1.0042440C                          ;  调用?#22336;?#20018;* Reference to: controls.TControl.GetText(TControl):TCaption;
0044A37E  |.  8B55 F0       mov edx,[local.4]                        ;  [local.4]=[ebp-10]="3E74984B",即下面显示的?#22336;?#20018;
0044A381  |.  58            pop eax                                  ;  0012F734
0044A382  |.  E8 6198FBFF   call 1. 00403BE8                        ;  此call应该是比较,运行后[eax]=FFFFFFFF
0044A387  |.  75 0F         jnz short 1.0044A398                     ;  关键跳,跳走则失败

观察运行到此,其实注册算法已经出来了,就是Serial=dec(0x3E74984B/3)= “349276185”!将“349276185?#31508;?#20837;文?#31350;潁?#28857;击按钮,成功!

虽然已经找出了注册算法,可是里面有好几个Call,怎么转化的还不清楚,所以重新在OD中看一看:
重新运行程序,中断在按钮事件?#38382;?#22788;,再单步至0044A314处,注释中说明是从?#22336;?#20018;转整数的,F7键进call看看:
0044A314  |.  E8 EFD6FBFF   call 1.00407A08                    ;  * Reference to: sysutils.StrToInt(S:
F8至00407A2A处,又一个call,因为这一个段内共有4个call,所以需要耐心进去看看是什么:
00407A2A                        |.  E8 49AFFFFF   call <1.IsNum(Serial(n))>
进入00402978处后,经单步运行,基本?#20808;?#23450;是取?#22336;?#20018;转整数类型就是这个call里了:
继续运行,可知是取出?#22336;?#20018;的每一位?#22336;?#20808;转化成ASCII值,判断是空格、加号、减号、大小写的字母X、数字0时跳到错误处理程序;不是,则继续向下进行:
到004029CA---004029E2这段循环时,将?#22336;?#20018;“12345”转化成了数字0x3039;
[Asm] 纯文本查看 复制代码
004029CA           |>  80EB 30       /sub bl,0x30                           ;  [bl]=[bl]-0x30,判断是否为数字
004029CD           |. |80FB 09       |cmp bl,0x9                            ;  cmp([bl],0x9),相等则ZF=1,不等则ZF=0
004029D0           |. |77 2C         |ja short 1.004029FE                   ;  (无符号)大于则跳,弹出不是数字的错误提示框
004029D2           |. |39F8          |cmp eax,edi
004029D4           |. |77 28         |ja short 1.004029FE
004029D6           |. |8D0480        |lea eax,dword ptr ds:[eax+eax*4]
004029D9           |. |01C0          |add eax,eax                           ;  [eax]=[eax]+[eax]
004029DB           |. |01D8          |add eax,ebx                           ;  [eax]=[eax]+[ebx]
004029DD           |. |8A1E          |mov bl,byte ptr ds:[esi]              ;  取后1个?#22336;?
004029DF           |. |46            |inc esi
004029E0           |. |84DB          |test bl,bl
004029E2           |.^\75 E6         \jnz short 1.004029CA                  ;  Serial(n) 循环运算后存入eax中

继续向下运行,又经过几个call,F7进入后没有什么新的变化,几个retn,返回到了0044A319 处,所以在00402978处加了个IsNum(Serial(n))标签,返回到00407A08处加了StrToInt标签,更清楚了子程序的作用。
这个程序破解就到这里,注册机就不用再写了,很简单的一个计算就行了!Serial=dec(0x3E74984B/3)= “349276185”。
如何在原程序上打补丁还远没有学习到,下步会学习的。
附件 020.zip (898.62 KB, 下载?#38382;? 12) 含CM原程序、脱壳后的程序、爆破后的程序(无注册机)。
百度链接是:http://pan.baidu.com/s/1skMkJY9密码: 86pm,160个CM、我已练习过的前20个crackme程序(不含012)都在里面。

免费评分

参与人数 10威望 +1 吾爱币 +16 热心值 +8 收起 理由
laiyuou + 1 + 1 谢谢@Thanks!
wangfeilong0317 + 1 + 1 谢谢@Thanks!
52lxw + 1 我很赞同!
njfhm + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
朱朱你堕落了 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Hmily + 1 + 7 + 1 ?#34892;?#21457;布原创作?#32602;?#21566;爱破解论坛因你更精彩!
Host1 + 1 + 1 我很赞同!
fishinfire + 1 + 1 ?#34892;?#21457;布原创作?#32602;?#21566;爱破解论坛因你更精彩!
封帆帆 + 1 谢谢@Thanks!
WYWZ + 1 + 1 用心讨论,?#19981;?#25552;升!

查看全部评分

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

沙发
血色天空 发表于 2019-4-24 00:32
学习了,谢谢楼主的热性分享
3#
wang19940311 发表于 2019-4-24 06:24
4#
yaoyao7 发表于 2019-4-24 10:07
5#
duguquba 发表于 2019-4-24 12:26
收藏一下 ?#22771;?#20063;正在看这个160个
6#
xiaoyuan800 发表于 2019-4-24 16:12
挺好的,看着不错哈。
7#
pzc601 发表于 2019-4-24 23:29
支持一下
8#
bamyoo 发表于 2019-4-25 09:48
收藏学习,?#34892;?#20998;享
9#
shangziq 发表于 2019-4-25 11:11
学习了,谢谢楼主分享!
10#
52lxw 发表于 2019-4-25 13:45
谢谢分析
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2019-7-21 18:40

Powered by Discuz!

© 2001-2017 Comsenz Inc.

球探网篮球指数
109期7星彩中奖号码 白小姐开马结果 两份资料计算特码 黑龙江时时彩过滤 新疆25选7预测 新时时彩计划软件安卓 天津快乐10分走势 极速时时彩一天输多少 新浪彩票图表走势图 福建时时彩号码表 三地之家彩票网站 360华人德州扑克 六合彩狂欢号码计算器 七星彩2019期规律图 浙江十一选五走势图基本走势图