拆解cytom!c's 的keyFile保护

系统 : Windows xp

程序 : cytom!c‘s

程序下载地址 :http://pan.baidu.com/s/1nulAYBv

要求 : 伪造KeyFile

使用工具 :IDA & OD & Hex Workshop

可在看雪论坛中查找关于此程序的破文:http://bbs.pediy.com/showthread.php?t=30229

IDA载入程序,找出提示破解成功的字串“Valid Key file found!”并定位关键代码:

00426572   .  BA 4C674200   mov     edx, 0042674C                    ;  ASCII "ctm_cm02.key"
00426577   .  8D85 A8FEFEFF lea     eax, dword ptr [ebp+FFFEFEA8]
0042657D   .  E8 3FD8FDFF   call    00403DC1
00426582   .  BA 01000000   mov     edx, 1
00426587   .  8D85 A8FEFEFF lea     eax, dword ptr [ebp+FFFEFEA8]
0042658D   .  E8 1EDCFDFF   call    004041B0
00426592   .  E8 4DC1FDFF   call    004026E4
00426597   .  85C0          test    eax, eax
00426599   .  0F85 66010000 jnz     00426705
0042659F   .  8D85 A8FEFEFF lea     eax, dword ptr [ebp+FFFEFEA8]
004265A5   .  E8 5AD9FDFF   call    00403F04                         ;  CreateFile,并获取长度
004265AA   .  E8 F9C0FDFF   call    004026A8
004265AF   .  8945 FC       mov     dword ptr [ebp-4], eax
004265B2   .  837D FC 00    cmp     dword ptr [ebp-4], 0             ;  长度为0?
004265B6   .  75 15         jnz     short 004265CD
004265B8   .  BA 64674200   mov     edx, 00426764                    ;  ASCII "Key file is empty!"
004265BD   .  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
004265C3   .  E8 CCB6FEFF   call    00411C94
004265C8   .  E9 28010000   jmp     004266F5
004265CD   >  817D FC 00000>cmp     dword ptr [ebp-4], 10000         ;  UNICODE "#envTSLOGsss1964=1032992"
004265D4   .  7E 07         jle     short 004265DD
004265D6   .  C745 FC 00000>mov     dword ptr [ebp-4], 10000         ;  UNICODE "#envTSLOGsss1964=1032992"
004265DD   >  6A 00         push    0
004265DF   .  8D95 FCFFFEFF lea     edx, dword ptr [ebp+FFFEFFFC]
004265E5   .  8B4D FC       mov     ecx, dword ptr [ebp-4]
004265E8   .  8D85 A8FEFEFF lea     eax, dword ptr [ebp+FFFEFEA8]
004265EE   .  E8 71D8FDFF   call    00403E64                         ;  读取文件内容
004265F3   .  E8 B0C0FDFF   call    004026A8
004265F8   .  53            push    ebx
004265F9   .  57            push    edi
004265FA   .  56            push    esi
004265FB   .  8D75 FC       lea     esi, dword ptr [ebp-4]
004265FE   .  8B0E          mov     ecx, dword ptr [esi]
00426600   .  8DB5 FCFFFEFF lea     esi, dword ptr [ebp+FFFEFFFC]
00426606   .  8DBD FBFFFEFF lea     edi, dword ptr [ebp+FFFEFFFB]
0042660C   .  31C0          xor     eax, eax
0042660E   .  83CA FF       or      edx, FFFFFFFF
00426611   .  31DB          xor     ebx, ebx
00426613   .  40            inc     eax                              ;  eax = 1
00426614   .  F7D2          not     edx
00426616   >  8A1C16        mov     bl, byte ptr [esi+edx]           ;  迭代字串
00426619   .  84DB          test    bl, bl                           ;  字符值为0x0?
0042661B   .  74 29         je      short 00426646                   ;  结尾字节设置为0x0才能跳转正确流程
0042661D   .  E8 16000000   call    00426638                         ;  将文件内容写入一段内存
00426622   .  52            push    edx
00426623   .  F7E3          mul     ebx                              ;  eax * 字符值
00426625   .  5A            pop     edx
00426626   .  35 326D5463   xor     eax, 63546D32                    ;  eax 再进行异或
0042662B   .  FEC2          inc     dl                               ;  循环变量自增
0042662D   .  39CA          cmp     edx, ecx                         ;  迭代完毕?
0042662F   .  74 42         je      short 00426673
00426631   .  80FA FF       cmp     dl, 0FF                          ;  迭代了255次?
00426634   .  74 3D         je      short 00426673
00426636   .^ EB DE         jmp     short 00426616
00426638  /$  57            push    edi
00426639  |.  8DBD F4FFFEFF lea     edi, dword ptr [ebp+FFFEFFF4]
0042663F  |.  8B3F          mov     edi, dword ptr [edi]
00426641  |.  881C17        mov     byte ptr [edi+edx], bl
00426644  |.  5F            pop     edi
00426645  \.  C3            retn
00426646   >  E8 EDFFFFFF   call    00426638
0042664B   .  42            inc     edx                              ;  0x0结尾后还要加上4个字节才能跳转正确流程
0042664C   .  83C2 04       add     edx, 4
0042664F   .  39D1          cmp     ecx, edx
00426651   .  75 20         jnz     short 00426673
00426653   .  83EA 04       sub     edx, 4                           ;  还原循环变量
00426656   .  85C0          test    eax, eax
00426658   .  76 02         jbe     short 0042665C
0042665A   .  D1E8          shr     eax, 1
0042665C   >  3B0416        cmp     eax, dword ptr [esi+edx]         ;  与最后的4个字节进行对比
0042665F   .  75 09         jnz     short 0042666A
00426661   .  B8 00000000   mov     eax, 0
00426666   .  8907          mov     dword ptr [edi], eax
00426668   .  EB 10         jmp     short 0042667A
0042666A   >  B8 01000000   mov     eax, 1
0042666F   .  8907          mov     dword ptr [edi], eax
00426671   .  EB 07         jmp     short 0042667A
00426673   >  B8 02000000   mov     eax, 2
00426678   .  8907          mov     dword ptr [edi], eax
0042667A   >  5E            pop     esi
0042667B   .  5F            pop     edi
0042667C   .  5B            pop     ebx
0042667D   .  8A85 FBFFFEFF mov     al, byte ptr [ebp+FFFEFFFB]
00426683   .  2C 01         sub     al, 1                            ;  Switch (cases 0..2)
00426685   .  72 08         jb      short 0042668F
00426687   .  74 4A         je      short 004266D3
00426689   .  FEC8          dec     al
0042668B   .  74 58         je      short 004266E5
0042668D   .  EB 66         jmp     short 004266F5
0042668F   >  BA 80674200   mov     edx, 00426780                    ;  ASCII "Valid Key file found!"; Case 0 of switch 00426683
00426694   .  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
0042669A   .  E8 F5B5FEFF   call    00411C94
0042669F   .  BA A0674200   mov     edx, 004267A0                    ;  ASCII "Registered to: "
004266A4   .  8D85 A4FEFEFF lea     eax, dword ptr [ebp+FFFEFEA4]
004266AA   .  E8 05CCFDFF   call    004032B4
004266AF   .  8D85 A4FEFEFF lea     eax, dword ptr [ebp+FFFEFEA4]
004266B5   .  8B95 F4FFFEFF mov     edx, dword ptr [ebp+FFFEFFF4]
004266BB   .  E8 DCCCFDFF   call    0040339C
004266C0   .  8B95 A4FEFEFF mov     edx, dword ptr [ebp+FFFEFEA4]
004266C6   .  8B83 C0010000 mov     eax, dword ptr [ebx+1C0]
004266CC   .  E8 C3B5FEFF   call    00411C94
004266D1   .  EB 22         jmp     short 004266F5
004266D3   >  BA B8674200   mov     edx, 004267B8                    ;  ASCII "Key file contains wrong serial!"; Case 1 of switch 00426683
004266D8   .  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
004266DE   .  E8 B1B5FEFF   call    00411C94
004266E3   .  EB 10         jmp     short 004266F5
004266E5   >  BA E0674200   mov     edx, 004267E0                    ;  ASCII "Key file is not valid!"; Case 2 of switch 00426683
004266EA   .  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
004266F0   .  E8 9FB5FEFF   call    00411C94
004266F5   >  8D85 A8FEFEFF lea     eax, dword ptr [ebp+FFFEFEA8]    ;  Default case of switch 00426683

总结算法:

1.KeyFile文件名应为“ctm_cm02.key”.

2.KeyFile以用户名开头,用0x0作为用户名的结束符号。若是文件内容为空或者用户名没有用0x0作为结尾,则失败。

3.迭代用户名字串并根据字串的内容生成一个值,将该值与0x0之后的四个字节的数据进行比对,如果相同,则KeyFIle是有效的。

如果用户名为“pediy”,那么相对应的KeyFile内容应该是:

运行效果:

拆解cytom!c's 的keyFile保护

时间: 2024-08-28 22:36:57

拆解cytom!c's 的keyFile保护的相关文章

CM--CrueHead.3

继续160个新手CM系列,今天破的是KeyFile保护的一道题,觉得最坑的就是最后破解成功的提示框,居然写着"Now try the next crackme"...我这英文0级的以为这道题还有后续..就又搞了半天最后发现它的意思是你可以去做其他的题了...⊙﹏⊙|∣ 言归正传,还是先打开程序,结果发现什么都没有,什么输入框了啥的都没有...emmm具体就像下图一样 好吧我们直接打开OD调试. 00401000 >/$ 6A 00 push 0 ; /pModule = NULL

软件保护技术--- 常见保护技巧

(1)序列号保护机制 数学算法一项都是密码加密的核心,但在一般的软件加密中,它似乎并不太为人们关心,因为大多数时候软件加密本身实现的都是一种编程的技巧.但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重似乎是越来越大了.     我们先来看看在网络上大行其道的序列号加密的工作原理.当用户从网络上下载某个shareware--共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用.注册过程一般是用户把自己的私人信息(一般主要指名字)连

保护环境与公司发展并行

在环境保护方面,青岛亮洁奥环保机械有限公司有着自己的理解.认为通过行政手段解决污染问题,并非最佳方法.要真正扭转公众对铅蓄电池行业“污染.有毒”的印象,只有将环保视为企业发展的重中之重,才能打造出属于自己的核心竞争力. 创新研发 减少污染 回收拆解铅酸废旧电池时,酸液对环境造成的污染,一直是行业遭遇的一大诟病.对此,应加大创新研发力度,力求减少污染. 厂房建设 环保先行 在工厂建设初期,应改变传统观念中人们对于电池工厂的看法,将建设成一家完全零排放的工厂. 清洁生产 赢得客户 例Tucker R

拆解探索MagSafe电源接口结构和指示灯变颜色原理

你有没有想过一个Mac的MagSafe接头里面有什么? 控制光线是什么? 在Mac如何知道它是什么样的充电器? 本文探讨的MagSafe连接器内,并回答这些问题. 2006年由苹果公司推出的MagSafe接头十分方便,他靠磁力吸在Mac身上,插拔方便而且有人踢到电源线时会自动断开,而且不分反正. 连接器上的一个小LED灯改变颜色指示充电状态. 下面的图片显示了新的MagSafe 2连接器,很苗条,阵脚这样的排列方法使它可以不用区分反正. 充电器和计算机通过适配器检测引脚连通(也称为充电控制引脚)

5V3A典型方案:CX8825应用于现代车载蓝牙播放器拆解评测

CX8825应用于韩国现代车载蓝牙播放器拆解评测,现代车载蓝牙播放器(QC 3.0快充版) CX8822是出自诚芯微的同步整流降压芯片,它的输入范围达7.5V~32V,支持最大3A持续电流输出.CX8822是专为5V电压输出设计的,当系统输出电压超过6.5V时,芯片会强制停止输出,以避免对后级设备造成损坏. 补充: 芯片边的那颗0.030Ω的大号贴片电阻(RZ1)即为用来检测输出电流的采样电阻.从技术手册中可以推算出这颗CX8822的输出电流被限制在1.5A.考虑到芯片本身支持最大3A的输出,该

人工智能PK透明加密,数据安全保护谁能技高一筹

人工智能一直是全球的一大热点话题,从很久之前谷歌研发的人工智能机器人击败柯洁.李世石等众多围棋高手,到最近特斯拉CEO埃隆o马斯克投资的人工智能研究机构OpenAI研发的机器人击败了国外顶尖Dota 2玩家之一的Danil Ishutin.而重磅消息却是美国电商巨头亚马逊,已准备将人工智能技术用于商业服务中,计划将其用于云存储方面,用于保护用户数据的安全. 亚马逊的这一计划,主要是通过机器学习技术,自动识别.分类和保护用户保存在亚马逊云计算平台上的敏感数据.但引入人工智能技术之后,亚马逊的云存储

如何有效的对PDF文件进行加密保护

PDF是办公中保存资料数据文件不可或缺的一类电子文件工具软件,它的优势在于清晰的位图显示形式和良好的阅读体验,所以很多合同报告.电子书.技术文档.设计图纸等都越来越倾向这种存储方式.和普通的电子文档一样,如Word.Excel,PDF文件也存在信息安全泄漏风险,因此加密保护也是必不可少的.下面就来分享下如何对PDF进行权限设置和PDF文件加密操作. PDF格式的官方编辑器Adobe acrobat 软件为我们提供的口令加密包含"打开文档的口令"和"限制文档编辑打印口令&quo

在win10 LTSB版本中使用UWF组件,实现影子保护功能,提供稳定,高速的开发环境

Win10 LTSB,比win8好用,又没有APP功能,老机运行非常稳定.流畅.安装运行一段时间后,安装了UWF组件,提高安全性和流畅性. Windows UWF(统一写保护)组件,功能: 1.当内存盘用,加强性能,提高速度: 2.省SSD写入: 3.当还原卡用,防熊孩子 开启方法: 1.程序和功能→启用或关闭Windows功能,勾选"统一写入筛选器" 2.UWF设置 手动启动及设定 (要重新启动系统才生效,关机再开是没用的) : 用管理员模式打开控制台,挑选下列可使用命令行 uwfm

.htaccess保护目录与文件

一般来说很多虚拟主机预设是没有开启保护网站主机目录下的文件,其实很危险的,假若你的目录下忘记放置index文件,那很可能您目录就被看光,一个不小心很可能重要资料就被拿走,这是蛮严重的一件事情.如果是Linux主机,我们可以透过简易的.htaccess语法来保护网站主机目录下的文件,让别人无法轻易看见. 平常我们使用的最简单保护目录的方法,莫过于使用「index.php」.「index.html」等等之类的网站index文件,因为主机内预设的设定在目录中预设就是要抓index文件,而index文件