一、Crackme分析报告
(一)程序概述
这是一个名为"FaNt0m's CrackMe #3 -- CD Check"的简单Windows GUI程序,其主要功能是检查系统是否存在CD-ROM驱动器。
(二)程序流程
-
程序入口点( start
)初始化应用程序环境: -
获取当前模块句柄 -
获取命令行参数 -
调用主应用程序初始化函数 -
退出进程 -
应用程序初始化函数( InitializeApplication
): -
注册窗口类 -
创建主窗口 -
进入消息循环 -
窗口过程函数( WindowProc
)处理窗口消息: -
命令ID 0x9C41: 退出程序 -
命令ID 0x9C42: 检查CD-ROM -
命令ID 0x9C43: 显示关于对话框 -
处理WM_DESTROY消息(退出应用程序) -
处理WM_COMMAND消息(菜单命令): -
CD-ROM检查函数( CheckCDROM
): -
调用GetDriveTypeA(NULL)检查默认驱动器类型 -
如果返回值为DRIVE_CDROM(5),则显示成功消息 -
否则显示错误消息
(三)破解方法
这个crackme的目标是让程序显示"Found a CDROM! Good job!"消息。程序通过调用GetDriveTypeA(NULL)
来检查默认驱动器类型是否为CD-ROM(类型值5)。
要破解这个程序,有几种可能的方法:
- 物理解决方案
-
确保系统中有CD-ROM驱动器,并且它是默认驱动器 - 虚拟解决方案
-
使用虚拟CD-ROM驱动器软件创建一个虚拟CD-ROM设备 - Hook解决方案
-
使用API钩子技术拦截 GetDriveTypeA
函数调用,并强制其返回值为5 - 调试解决方案
-
使用调试器在比较语句处(地址0x401201)修改EAX寄存器的值为5
(四)总结
这是一个相对简单的crackme,主要检查系统环境而不是密码或算法。成功的关键是使GetDriveTypeA
函数返回值为5,表示检测到CD-ROM驱动器。
GetDriveTypeA
函数返回值为5,表示检测到CD-ROM驱动器”。原文始发于微信公众号(MicroPest):利用Claude3.7逆向二进制程序
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论