CM--CrueHead.3

继续160个新手CM系列,今天破的是KeyFile保护的一道题,觉得最坑的就是最后破解成功的提示框,居然写着“Now try the next crackme”。。。我这英文0级的以为这道题还有后续。。就又搞了半天最后发现它的意思是你可以去做其他的题了。。。⊙﹏⊙‖∣

言归正传,还是先打开程序,结果发现什么都没有,什么输入框了啥的都没有。。。emmm具体就像下图一样

好吧我们直接打开OD调试。

00401000 >/$  6A 00         push    0                                ; /pModule = NULL
00401002  |.  E8 7D040000   call    <jmp.&KERNEL32.GetModuleHandleA> ; \GetModuleHandleA
00401007  |.  A3 E9204000   mov     dword ptr [4020E9], eax
0040100C  |.  C705 F9204000>mov     dword ptr [4020F9], 0
00401016  |.  6A 00         push    0                                ; /hTemplateFile = NULL
00401018  |.  68 80000000   push    80                               ; |Attributes = NORMAL
0040101D      6A 03         push    3;OPEN_EXISTING
0040101F  |.  6A 00         push    0                                ; |pSecurity = NULL
00401021  |.  6A 03         push    3                                ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00401023  |.  68 000000C0   push    C0000000                         ; |Access = GENERIC_READ|GENERIC_WRITE
00401028  |.  68 D7204000   push    004020D7                         ; |FileName = "CRACKME3.KEY"
0040102D  |.  E8 76040000   call    <jmp.&KERNEL32.CreateFileA>      ; \CreateFileA
00401032      83F8 FF       cmp     eax, -1;创建失败,不能让他创建失败,所以自己建一个CRACKME3.KEY
00401035      75 0C         jnz     short 00401043
00401037  |>  68 0E214000   push    0040210E                         ;  ASCII "CrackMe v3.0             "
0040103C  |.  E8 B4020000   call    004012F5
00401041  |.  EB 6B         jmp     short 004010AE
00401043  |>  A3 F5204000   mov     dword ptr [4020F5], eax
00401048  |.  B8 12000000   mov     eax, 12
0040104D  |.  BB 08204000   mov     ebx, 00402008
00401052  |.  6A 00         push    0                                ; /pOverlapped = NULL
00401054  |.  68 A0214000   push    004021A0                         ; |pBytesRead = Cruehead.004021A0
00401059  |.  50            push    eax                              ; |BytesToRead => 12 (18.)
0040105A  |.  53            push    ebx                              ; |Buffer => Cruehead.00402008
0040105B  |.  FF35 F5204000 push    dword ptr [4020F5]               ; |hFile = NULL
00401061  |.  E8 30040000   call    <jmp.&KERNEL32.ReadFile>         ; \ReadFile
00401066      833D A0214000>cmp     dword ptr [4021A0], 12  ;比较读出的文件内容是不是18个字节
0040106D  |.^ 75 C8         jnz     short 00401037
0040106F  |.  68 08204000   push    00402008
00401074  |.  E8 98020000   call    00401311;关键,跟下去瞅瞅

下面就是比较文件中的内容了

00401311  /$  33C9          xor     ecx, ecx;清0
00401313  |.  33C0          xor     eax, eax
00401315  |.  8B7424 04     mov     esi, dword ptr [esp+4];文件读出来的内容
00401319  |.  B3 41         mov     bl, 41
0040131B  |>  8A06          /mov     al, byte ptr [esi]
0040131D  |.  32C3          |xor     al, bl;将文件中读出来的第一个字节与41h异或
0040131F  |.  8806          |mov     byte ptr [esi], al
00401321  |.  46            |inc     esi
00401322  |.  FEC3          |inc     bl
00401324  |.  0105 F9204000 |add     dword ptr [4020F9], eax
0040132A  |.  3C 00         |cmp     al, 0
0040132C  |.  74 07         |je      short 00401335;当文件第一个字节为41h时跳
0040132E  |.  FEC1          |inc     cl
00401330  |.  80FB 4F       |cmp     bl, 4F
00401333  |.^ 75 E6         \jnz     short 0040131B
00401335  |>  890D 49214000 mov     dword ptr [402149], ecx
0040133B  \.  C3            retn
00401079  |.  8135 F9204000>xor     dword ptr [4020F9], 12345678
00401083  |.  83C4 04       add     esp, 4
00401086  |.  68 08204000   push    00402008
0040108B  |.  E8 AC020000   call    0040133C
0040133C  /$  8B7424 04     mov     esi, dword ptr [esp+4]           ;  Cruehead.00402008
00401340  |.  83C6 0E       add     esi, 0E
00401343  |.  8B06          mov     eax, dword ptr [esi]
00401345  \.  C3            retn


00401090  |.  83C4 04       add     esp, 4
00401093  |.  3B05 F9204000 cmp     eax, dword ptr [4020F9];将12345678与文件中最后4个字节比较,注意字节在内存中的保存位置
00401099  |.  0F94C0        sete    al;当相等时将al置为1,不相等置为0
0040109C  |.  50            push    eax
0040109D  |.  84C0          test    al, al
0040109F  |.^ 74 96         je      short 00401037;当al为1时不跳,跳就gg了

下面就是找窗口注册窗口的过程了,就不继续分析了,还有一点注意文件中最后四个字节用16进制编译器写入,因为你自己写txt的话写不了12这个值。

这道题刚开始分析还有点难度,但是分析完觉得也不是那么难。。。emmmm毕竟称为新手CM ⊙﹏⊙‖∣

原文地址:https://www.cnblogs.com/Anony-WhiteLearner/p/8659187.html

时间: 2024-08-30 00:54:09

CM--CrueHead.3的相关文章

System Center 2012 R2 CM系列之部署Windows Server Update Services(WSUS)服务器

1. Windows更新服务器(Windows Server Update Service (WSUS))介绍 1) 技术概述: Windows Server Update Services (WSUS) 启用信息技术管理员部署最新的 Microsoft 产品更新.在 Windows Server 2012 中,WSUS 是可安装以管理和分配更新的服务器角色.WSUS 服务器可以作为组织内其他 WSUS 服务器的更新源.充当更新源的 WSUS 服务器被称为上游服务器.在 WSUS 实现过程中,网

System Center 2012 R2 CM系列之配置configuration manager防火墙设置

为了能够正常推送Configuration Manager 2012 R2客户端,必须添加防火墙例外设置,主要包括以下两个:A:文件和打印共享:B: Windows Management Instrumentation (WMI) 1. 打开并登录"BJ-DC-01"服务器,点击工具,打开组策略管理器 2. 右键相关域,点击创建"在这个域中创建GPO并在此处链接" 3. 新建GPO对话框中输入相应的GPO名称 4. 右键新创建的PGO,点击编辑,并打开组策略管理编辑

【WP8】扩展CM的WindowManager

关于WindowManager,一直都很想写一篇博客分享一下,一直在忙别的,今天抽空把这个分享一下 在弹窗在移动开发是一个很常见的交互,很多时候我们都需要进行弹窗,比如我们需要询问用户的一些操作,提供更丰富的交互,又比如我们需要弹出一个框提示用户给我们好评 WP系统提供关于对话框的操作只有一个MessageBox,MessageBox样式简单,并且无法扩展,比如我们需要自定义按钮的文字都不可以,极大限制了我们的发挥,如果我们需要弹窗,还有Popup控件可以用,比如Coding4fun就对Popu

2.重新安装CM服务

步骤1.停止CM服务2.删除CM服务3.添加CM服务4.测试数据库 步骤 1.停止CM服务 2.删除CM服务 没有发现可以单独删除某一项CM服务,必须全部删除 3.添加CM服务 4.测试数据库 如果报这个错误,把相关的jar包放在: /usr/share/java/mysql-connector-java.jar /usr/share/java/oracle-connector-java.jar 注意名字改成一样的,可以写个脚本一分发: list="10.31.1.88 10.31.1.89 1

风云CM - 算法分析 &amp; genkey实现

// 风云CM分析 // 计算用户名 00402D8A |> \8D45 F8 LEA EAX, [LOCAL.2] 00402D8D |. 50 PUSH EAX 00402D8E |. E8 8B060000 CALL <Hash_md5> ; // md5(用户名) 00402D93 |. 8945 F4 MOV [LOCAL.3], EAX 00402D96 |. 8B5D F8 MOV EBX, [LOCAL.2] 00402D99 |. 85DB TEST EBX, EBX

下载Google官方/CM Android源代码自动重新开始的Shell脚本

国内由于某种原因,下载CM或Google官方的Android源代码总容易中断.总看着机器,一中断就重新执行repo sync还太麻烦,所以我特意编写了一段shell脚本(download.sh).通过获取shell最后返回的状态码来决定是否再次执行repo sync命令. #!/bin/bash echo "======start repo sync======" repo sync # 第一次下载android源代码 while [ $? != 0 ]; do echo "

System Center 2012 R2 CM系列之安装Configuration Manager预装软件

安装Configuration Manager 2012 R2 预装软件 本章节主要描述创建Configuration Manager 2012 R2所必须的system container.设计Configuration Manager 2012 R2服务器权限.扩展Active Directory架构以及安装安装Configuration Manager 2012 R2所必须的服务器角色和功能 1. 创建系统管理对象 1) 使用管理员账户登陆"BJ-DC-01" 2) 点击服务器管

自定义CM消息的原因

最近看VCL源码,有个问题,经常需要发送CM_消息去调用某个函数,我就不明白,为什么要这样.直接调用函数名称不是挺好吗,尤其是调用虚函数的话,一样很灵活. 比如:procedure TWinControl.SetBorderWidth(Value: TBorderWidth);begin  if FBorderWidth <> Value then  begin    FBorderWidth := Value;    Perform(CM_BORDERCHANGED, 0, 0); // 这

强大反调试cm的奇葩破解

系统 : Windows xp 程序 : Crackme-xp 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 编写注册机 使用工具 : OD & IDA 可在看雪论坛中查找关于此程序的破文:传送门 这是一个拥有强大反调试机制的cm,无法查询到关键子串.下获取窗口文本的断点没用,设置对按钮下消息断点都没用. 然后用IDA打开后却发现了函数表里有: .................. 这个懂点英文的人都能看出来是 注册按钮的处理函数吧?所以前面那么多防护

从CM刷机过程和原理分析Android系统结构

前面101篇文章都是分析Android系统源代码,似乎不够接地气. 假设能让Android系统源代码在真实设备上跑跑看效果,那该多好.这不就是传说中的刷ROM吗?刷ROM这个话题是老罗曾经一直避免谈的,由于认为没有全面了解Android系统前就谈ROM是不完整的.写完了101篇文章后.老罗认为第102篇文章该谈谈这个话题了,而且选择CM这个有代表性的ROM来谈.目标是加深大家对Android系统的了解. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! <A