160个CrackMe之004

简介: 160个CrackMe之004

CKme

Delphi,是Windows平台下Object Pascal语言集成开发环境,支持应用程序快速开发。Delphi Decompiler 是Delphi的反编译工具

第一步

查壳,查信息

1.png

第二步

运行程序 :没有按钮,只能两个文本框,一个用户名,一个注册码,作者提示:如果注册成功,程序中会出现"朱茵"小姐的一幅靓照。

第三步

用DeDe反编译看一下 Events(事件) Controls(控件)image.png

现了5个事件,第一个窗体创建与输入的字符应该无关,而后面的键盘按键放下、面板单击和面板双击、还有检查密码,应该就和用户名/注册码的获取和检测有关了,还可以看到“注册成功”的代码段就是面板单击事件中。通过测试发现,KeyUp事件是为了获取输入的用户名,chkcode事件是为了获取输入的注册码并检测我们对这个四个事件下断点,当输入注册码时断在了此处:


image.png

程序调用的过程很少,有用的只有Edit2的事件(chkcode)和panel1的两个事件(单击事件和双击事件。)

第四步

打开OD,智能搜索发现了“注册成功字符串”,向上看一看,发现了一个关键跳转,这个跳转会跳过注册成功的,所以这里不能跳,我们看到这里的关键跳的比较条件是[esi+0x0c]和 0x85进行比较

image.png

第五步

看一下chkcode事件的代码,从chkcode事件的代码中可以看到,如果输入的序列号正确,则往地址 [esi+0x30c] 中写入 0x3E 。

image.png

第六步

按DeDe中的反编译事件地址,先对Edit2的事件(chkcode)代码下断点,跟踪后,代码有一个跳转为关键跳转。将地址 [esi+0x3C] 与 0x3E比较,如果相等则写入 0x85

image.png

第七步

看看单击面板,也就是最一开始的“注册成功”,这样我们来理一理思路。

重点:每次输入用户名的时候,事件KeyUp(00457E4C)都会获取用户输入的字符,并保存起来,并获取输入的用户名的长度保存起来,每次输入序列号的时候,事件chkcode(0045C40)都会获取输入的字符并保存起来,在生成正确的字符串(正确的序列号时代码中出现字符串的拼接)并与之对比,如果正确,就向地址[esi+0x3C] 中写入 0x3E。在面板双击事件(0045E7C)中会检测地址[esi+0x3C] 的值是否为0x3E,是的话就向地址[esi+0x3C] 写入0x85 ,在面板单击事件(00457FB8)中检测地址[esi+0x3C] 的值是否为0x85是的话顺序执行到注册成功处,否则跳过注册成功。

结果如图 用户名:(啥都行)

注册码:黑头Sun Bird11dseloffc-012-OK+用户名

image.png

希望大家可以学到一些东西!

相关文章
|
2月前
|
存储 API
逆向学习crackme160题-003-Cruehead-CrackMe-3的 write up
逆向学习crackme160题-003-Cruehead-CrackMe-3的 write up
23 1
|
2月前
|
算法 数据安全/隐私保护
逆向学习crackme160题-008-Afkayas.1 的 write up
逆向学习crackme160题-008-Afkayas.1 的 write up
23 1
|
2月前
|
算法 数据安全/隐私保护
逆向学习crackme160题-011-wocy.1 的 write up
逆向学习crackme160题-011-wocy.1 的 write up
17 1
|
2月前
|
存储
逆向学习crackme160题-015-Brad Soblesky.1 的 write up
逆向学习crackme160题-015-Brad Soblesky.1 的 write up
39 1
|
2月前
|
API C++
逆向学习crackme160题-006-ArturDents-CrackMe#2 的 write up
逆向学习crackme160题-006-ArturDents-CrackMe#2 的 write up
26 0
|
2月前
|
算法
逆向学习crackme160题-016-fty_crkme3 的 weite up
逆向学习crackme160题-016-fty_crkme3 的 weite up
16 0
|
7月前
|
网络协议 Shell Linux
安卓逆向 -- IDA动态调试
安卓逆向 -- IDA动态调试
100 0
|
存储 算法 C++
IDA*
复习acwing算法提高课的内容,本篇为讲解算法:IDA*,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
115 0
IDA*
|
数据安全/隐私保护
160个CrackMe之001
160个CrackMe之001
157 1
160个CrackMe之001
|
测试技术 数据安全/隐私保护
160个CrackMe之002
160个CrackMe之002
119 0
160个CrackMe之002