逆向游乐园第二关

预备知识

1.关于调试器和反编译工具简介

OLLYDBG是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级32位调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。
IDA PRO简称IDA(Interactive Disassembler),是一个世界顶级的交互式反汇编工具,有两种可用版本。标准版(Standard)支持二十多种处理器。高级版(Advanced)支持50多种处理器。
UPX(the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70%,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。通过UPX压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。UPX支持许多不同的可执行文件格式包含Windows 95/98/ME/NT/2000/XP/CE程序和动态链接库、DOS程序、Linux可执行文件和核心。
Delphi Decompiler是一个用来反编译Delphi编写的程序的工具。Delphi Decompiler反编译成功后,能够查看函数过程等,是一款Delphi反编译利器!
WinHex是一个专门用来对付各种日常紧急情况的小工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的16进制编辑器。得到ZDNetSoftwareLibrary五星级最高评价,拥有强大的系统效用。

2.PE查壳工具

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
ExEinfo PE是一款免费的Win32可执行程序检查器,它可以检查程序的打包方式,exe保护等,可以帮助开发人员对程序进行编译。

3.汇编指令

在这里插入图片描述

4.寄存器

EAX是“累加器”(accumulator),它是很多加法乘法指令的缺省寄存器。
EBX是“基地址”(base)寄存器,在内存寻址时存放基地址。
ECX是计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做“源/目标索引寄存器”(source/destination index),因为在很多字符串操作指令中,DS:ESI指向源串,而ES:EDI指向目标串。
EBP是“基址指针”(BASE POINTER),它最经常被用作高级语言函数调用的“框架指针”(frame pointer)。

5.Little-endian(小端序)

数据的高位字节存放在地址的高端,低位字节存放在地址低端。

实验目的

通过该实验了解调试工具和反编译工具的使用方法,能够通过分析样本中的详细信息,进行程序的爆破或者算法的还原突破程序的限制,本次实验主要针对Delphi编写的程序。

实验环境

在这里插入图片描述
服务器:Windows XP SP3,IP地址:随机分配
辅助工具:Ollydbg、PEiD 0.95、ExeinfoPE、IDA Pro v6.8、Delphi Decompiler、UPX UnPacker、WinHex
破解程序:CKme、CKme002、aLoNg3x.1(位于桌面CrackMe文件夹)

实验步骤一

首先利用侦壳子、工具对样本(三个CrackMe)进行侦测分析,判断是否存在保护,然后对于存在暗桩的程序进行一部处理,最后对算法过程等分析回溯。
任务描述:对第一个CrackMe,CKme进行外壳分析,然后对其暗桩处理,算法回溯,以达到分析学习的目的。
在本次CrackMe中,作者给予了一定的说明,一定要阅读一下,对我们后期的分析有启发式帮助,一定不能放过任何一点别人给予的看似无用的资料。
在这里插入图片描述
感觉比较重点的提示,已标出。
那么,我们现在打开ExeInfo对其先做一步分析识别。
在这里插入图片描述
作者确实没有欺骗我们,确实Delphi写的程序,并且得知我们的CM(以下CM代指CrackMe)没有加密。下一步是运行看看,有没有什么值得我们利用的关键点,说白了,还是继续搜集信息(你可以理解为踩点~~)。
在这里插入图片描述
确实没有确定钮,鼠标放上面有提示说,如果用户名,和注册码正确,会出现“朱茵”小姐的照片,话说朱茵是谁?麻烦告诉我一下,我真不知道。跑题了,嗯,我猜这个灰色的框可能是用来显示图片的,也可能是个图片按钮,只是单击后,用户名和注册码不正确不提示而已,何况正确也不提示你,只是出来一个妹纸的照片。对于本次并不是C语言类型的那种非封装性的,好下断点,何况此次没有任何提示,bp MessageBox*就不考虑了。
打开OD,将我们程序拖进去,看看作者有没有留给我们可参考的字符串信息呢。
在这里插入图片描述
卧槽,这是什么鬼,好像发现了一个切入点哎~
在这里插入图片描述
那么跟进去看看~

0045803B  |. /75 76         jnz short CKme.004580B3
0045803D  |. |33DB          xor ebx,ebx
0045803F  |> |8D55 E4       /lea edx,[local.7]
00458042  |. |8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4]
00458048  |. |E8 FBB2FCFF   |call CKme.00423348
0045804D  |. |8B45 E4       |mov eax,[local.7]
00458050  |. |E8 27BBFAFF   |call CKme.00403B7C
00458055  |. |83C0 03       |add eax,0x3
00458058  |. |8D55 E8       |lea edx,[local.6]
0045805B  |. |E8 A4FAFAFF   |call CKme.00407B04
00458060  |. |FF75 E8       |push [local.6]
00458063  |. |8D55 E0       |lea edx,[local.8]
00458066  |. |8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4]
0045806C  |. |E8 D7B2FCFF   |call CKme.00423348
00458071  |. |FF75 E0       |push [local.8]
00458074  |. |8D55 DC       |lea edx,[local.9]
00458077  |. |8BC3          |mov eax,ebx
00458079  |. |E8 86FAFAFF   |call CKme.00407B04
0045807E  |. |FF75 DC       |push [local.9]
00458081  |. |8D45 FC       |lea eax,[local.1]
00458084  |. |BA 03000000   |mov edx,0x3
00458089  |. |E8 AEBBFAFF   |call CKme.00403C3C
0045808E  |. |43            |inc ebx
0045808F  |. |83FB 13       |cmp ebx,0x13
00458092  |.^|75 AB         \jnz short CKme.0045803F
00458094  |. |33D2          xor edx,edx                              ;  CKme.<ModuleEntryPoint>
00458096  |. |8B86 F0020000 mov eax,dword ptr ds:[esi+0x2F0]
0045809C  |. |E8 BFB1FCFF   call CKme.00423260
004580A1  |. |A1 20B84500   mov eax,dword ptr ds:[0x45B820]
004580A6  |. |83C0 70       add eax,0x70
004580A9  |. |BA 14814500   mov edx,CKme.00458114                    ;  恭喜恭喜!注册成功
004580AE  |. |E8 9DB8FAFF   call CKme.00403950
004580B3  |> \33C0          xor eax,eax

呦呵!0045803B有一处jnz跳转,如果不符就直接跳过正确的注册信息。那么凭借我们男生,不,男人的第八感,这是一个可爆破用的关键跳转。
那么我们翻到该函数头部,下个断点跑跑看,他是怎么处理的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值