资讯专栏INFORMATION COLUMN

CrackMe005-下篇 | 逆向破解分析 | 160个CrackMe(视频+图文)深度解析系列

jeyhan / 3154人阅读

摘要:作者逆向驿站微信公众号逆向驿站知乎逆向驿站上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的准备环境和工具虚拟机环境专用脱壳器学习层次爆破,但是这个作者声明了,爆破他是不认可的解密流程,写注册机积累程序逆向特点经验详

作者:逆向驿站
微信公众号:逆向驿站
知乎:逆向驿站

CrackMe005,上篇说了具体方法,下篇来发逆向分析过程,看看老夫是如何得到上篇的具体方法的!

准备

【环境和工具】

win7/xp虚拟机环境

CrackMe005(ajj2.zip)

ollydbg

Dededark

peid

UPXEasyGUI.exe(upx专用脱壳器)

【学习层次】

爆破,但是这个CM作者声明了,爆破他是不认可的

解密流程,写注册机

积累Delphi程序逆向特点经验

详解视频

搞清Delphi控件ID在反汇编代码中的特点,其实逻辑就清晰多了

https://v.qq.com/x/page/x0830...

实战图文

一.DedeDark梳理事件、控件信息

二.动态分析

1.根据字符串定位总判断位置

字符串“注册了”,“厉害厉害真佩服”入手,定位发现是timer2事件函数,五个判断不停的判断,如图

可以看到判断跟6个值有关,分别是[ebx+304]、[ebx+308]、[ebx+310]、[ebx+318]、[ebx+314]、[ebx+31C],我们下文所有就对其简称做304、308、310、318、314、31C

2.逐个判断层层分析

我们从简单往复杂,并结合他们之间内在的逻辑先后顺序,去逐个分析,顺序分别是31C、304、308、310、314和318,其中最难的是310,方法是常量跟踪法,即在OD中点击 查找→所有常量 ,看看都那些地方对这些值有操作

31C

总判断目标:31C值,不能等于0x3E7

相关事件函数:Button1Click

最终逆向分析结论:Buton1Click事件不能被触发,否则31C就会被赋值0x3E7,即不能点击注册按钮,这里需要注意click事件和mousedown事件,click必须是一个按下和抬起的全过程,而且鼠标位置都在按钮控件范围内,而mousedwon事件按下就是

具体逆向分析过程如下

所有常量查找结果,如下

反汇编代码如下

呵呵就一行,确实简单吧

304

总判断目标:304值,不能等于0xC34

相关事件函数:FormCreat

最终逆向分析结论:FormCreat生成表单的事件函数中,会对一个固定路径检查是否有合规内容的合规文件,有则,显示出隐藏的Edit2控件

具体逆向分析过程如下

所有常量查找结果,如下

反汇编代码如下

注意:我这里已经把,CrackMe开发者要求的X盘符改为了C盘符,为的是方便

308

总判断目标:308值,不能等于0x230D

相关事件函数:Button1MouseDown、Panel1DblClick

最终逆向分析结论:308初始值是由FormCreat函数初始化为0x28E,在Button1MouseDown事件中,右键一次则308值增加0x3,最终目标是0x29D,因为等于0x29D后,Panel1DblClick事件就可以解禁Edit2控件,则0x29D减去0x28E再除以0x3最后结果等于5,即右键点击注册按钮5次,再去双击panel1控件没有图的地方,就可以解禁Edit2控件

具体逆向分析过程如下

所有常量查找结果,如下

反汇编代码如下

310 中嵌套 30C,最复杂的地方

总判断目标:310值,必须等于0xF94

相关事件函数:FormMouseMove、Edit2DblClick

最终逆向分析结论:310的值要想最终被赋值0xF94,必须完成三重判断,第一个是当控件ID是0xE20时,即是image3"性相近"的时候,FormMouseMove捕捉的XY坐标都足够大,即右下脚,满足则310被赋值0x10,第二个是当控件ID是0x2DC时,即image2"性本善"的时候,FormMouseMove捕捉的X坐标足够小、Y坐标足够大,第三个是,30C不能等于初始值0x9, 30C被赋值的条件是Edit2中的字符串长度是8位,且第二位是"_",第6位是"," ,我们写1_345,78是符合要求的,同时要求用户名长度是3的整数倍,然后左键双击Edit2控件,即可给30C赋值,具体赋值结果又跟你的磁盘剩余空间有关。当上面这一系列嵌套判断都合规后,则完成310赋值0xF94,同时若是用户名是"ajj",则显示隐藏控件ID是0x2FC的Label3,显示值是30C

具体逆向分析过程如下

310所有常量查找结果,如下

310反汇编代码如下

发现嵌套30C,那么继续常量查找30C,如下

30C反汇编代码如下


这里其实是这个crackme最难的地方了,其实逻辑并不复杂,需要耐性和记录给理清晰即可

314和318

总判断目标:314的值等于318的值

相关事件函数:image1~4MouseDown

最终逆向分析结论:其实314的值在上一个流程中已经赋值完毕,314的值取决于30C的值,30C分别是0、1、2、3的时候,314分别是0x41、0x3D、0x34、0xDF,而318的值,则是点击1~4幅图片,区分左右键,分别自增不同的数值,具体如下方图片,最终要求318的值等于314的值

具体逆向分析过程如下

所有常量314查找结果,如下

314反汇编代码如下

318所有常量查找结果,如图

至此,如下图timer2所有的总判断全部过关,所以timer2每次触发,都将走注册成功的流程,是不是感觉很刺激,跃跃欲试的,去网盘中下载,去折磨自己的吧


文章中涉及软件、课件、源码等均在网盘,为避免网盘链接失效,公众号中回复:网盘

欢迎关注微信公众号:逆向驿站

相关文章

● CrackMe-005精解(上)

● CrackMe-004精解

● CrackMe-003精解

● CrackMe-002精解

● CrackMe-001精解

本期标签:dededark|delphi反汇编|crackme|crackme5|crackme05

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11462.html

相关文章

  • CrackMe007 | 难度适当提高 |160CrackMe深度解析图文+视频+注册机源码)

    摘要:所以按钮消失的方法是跟一模一样的,只是他消失后,不再显示其他按钮而已,至此注册成功,的标题也温顺的变成了了。 作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站showImg(https://segmentfault.com/img/bVbokBO?w=1100&h=627); crackme007,是006的升级版,程序开发者给出的难度是3星,可能是迷惑有点多?个人觉得条线还是比较清晰...

    jone5679 评论0 收藏0
  • CrackMe006 | 160crackme精解系列图文+视频+注册机源码)

    摘要:作者逆向驿站微信公众号逆向驿站知乎逆向驿站依然是的,而且没壳子,条线比较清晰,算法也不难,非常适合新入门的来练习快过年了,系列年前就停更在吧,祝大家新年年后继续准备环境和工具虚拟机环境学习层次逆向分析程序验证流程逻辑解密算法,写注册机积累程 作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站showImg(https://segmentfault.com/img/bVbnUo0?w=11...

    Barry_Ng 评论0 收藏0
  • ASM汇编常用跳转指令-极速查

    摘要:作者逆向驿站微信公众号逆向驿站知乎逆向驿站若不是老鸟,是不是经常为各种汇编跳转指令查资料影响效率,更影响潜意识整体分析的灵光一现。 作者:逆向驿站微信公众号:逆向驿站知乎:逆向驿站showImg(https://segmentfault.com/img/bVbnMTu?w=1100&h=762); 若不是老鸟,是不是经常为各种JXX汇编跳转指令查资料?影响效率,更影响潜意识整体分析的灵...

    刘德刚 评论0 收藏0

发表评论

0条评论

jeyhan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<