首页
社区
课程
招聘
[已解决]一个简单软件的CrackMe, 破了一半求帮助! 3x
发表于: 2012-12-22 15:37 9699

[已解决]一个简单软件的CrackMe, 破了一半求帮助! 3x

2012-12-22 15:37
9699
1)背景
========
一个国外的小软件, 歧视中国人, 对英文系统不要密钥,
但是, 检测到system locale为 zh_cn 就需要输入密钥(能通过此CrackMe.exe验证的密钥)!
不想每次都改为en_us再重启才能运行.
一气之下, 尝试破解!
限于个人能力, 求帮助破解(zh_cn能用的密钥,或keygen,或算法描述)!
附上自己的研究成果, 一起破解之, 谢谢.

2)使用方法: 命令中带参数运行.
==============================
正确调用方法:  CrackMe.exe  [29位key字串]  [locale字串]

E:\> CrackMe.exe      
invalid number of arguments : 0
Usage:
         CrackMe.exe   key    locale

         available locales
         locale     :    description
         ******     :    ***********
      [1]ja         :    japanese
      [1]ja_jp      :    japanese
         zh_tw      :    Chinese Taiwan
         zh_cn      :    Chinese (PRC)
         zh_hk      :    Chinese (Hong Kong S.A.R)
      [5]ko         :    korean
      [5]ko_kr      :    korean
         es_ar      :    Argentina - Spanish
         en_bz      :    Beliz - English
         pt_br      :    Brazil - Portuguese
         es_bo      :    Bolivia - Spanish
     [10]es_cl      :    Chile - Spanish
         es_co      :    Colombia - Spanish
         es_cr      :    Costa Rica - Spanish
         es_do      :    Dominican Republic - Spanish
         es_ec      :    Ecuador - Spanish
     [15]es_gt      :    Guatemala - Spanish
         en_gy      :    Guyana - English
         es_hn      :    Honduras - Spanish
         es_mx      :    Mexico - Spanish
         es_ni      :    Nicaragua - Spanish
     [20]es_pa      :    Panama - Spanish
         es_pe      :    Peru - Spanish
         es_pr      :    Puerto Rico - Spanish
         es_py      :    Paraguay - Spanish
         es_sv      :    El Salvador - Spanish
     [25]es_uy      :    Uruguay - Spanish
         es_ve      :    Venezuela - Spanish

3)已研究的成果
===============
a. 反编译为c代码,研究出key为29个字符, 形如: XXXXX-XXXXX-XXXXX-XXXXX-XXXXXX
    KEY中每个字符均从如下字符集中取得: '-0123456789BCDFGHJKLMNPQRSTVWXYZ@'
    比如: 一个有效的key为 NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ

b. locale字串如usage输出中描述. 方括号中的标号为locale的ID号.
    比如: 简体中文locale为 "zh_cn", 其locale ID为3.

c. 验证过程如下:
    (1)验证参数个数是否为3.
       否则输出: "ERROR: invalid number of arguments : [参数个数]" 和 usage信息.
    (2)验证输入的key串是否为null.
       否则输出: "ERROR: No Product Key Found\n"
    (3)校验key串的有效性:
       key长度不是29,输出: "ERROR: Invalid Product Key Size"
       key中有字母不在字符集中, 输出: "ERROR: Invalid Character Found In Product Key"
       校验key的checksum值, 错误则输出: "ERROR: Invalid checksum"
    (4)从key中计算是否过期, 并校验:
       过期值!=0, 输出: "ERROR: Expired"
    (5)从key中计算出key类型:
       类型值==1,输出: "Type: Express license\n"
       类型值==2,输出: "Type: Trial (evaluation) license\n"
       类型值==0,输出: "Type: Full-use license\n"
    (6)若key中的locale为CJK编码, 则与系统当前locale(输入的locale串即系统当前locale) 比较:
        系统locale非CJK, 输出: "Product: KeyVer=3 Locale mismatch (%s != ja|ko|zh_tw|zh_cn|zh_hk)\n"
        系统locale为CJK之一, 输出: "Product: Korean Locale\n"
                              或: "Product: Chinese Locale\n"
                              或: "Product: Japanese Locale\n"
        产品类型码==1, 输出: "Product: DB Server\n"
        产品类型码==2, 输出: "Product: Replication Server\n"
    (7)若key中locale非CJK, 则与系统当前locale比较是否匹配:
        首先输出key和系统当前locale值:  "Key: XXXXX-XXXXX-XXXXX-XXXXX-XXXXXX - Locale: zh_cn"
        校验key中locale是否一致, 输出:  "locale Mismatch i.e locale 24, expected locale 3"
        若输入的系统locale不在表中: "Invalid locale Index passed i.e locale 24,expected locale 0"

        说明: 比如系统locale为en_us, 则不需要运行CrackMe.exe去验证, 直接就pass了.
              因此, 在CreakMe.exe 中不包括那些不需验证的locales, 比如 en_us等!

    (8)以上验证均成功pass, 则输出: "OK"

d. 目前已有的一个key为: NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ
             过期日期为: 2011-01-01
          key中locale为: es_sv : El Salvador - Spanish (其locale index为24)
   
    此key验证过程如下:  
      E:> CreakMe.exe  NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ  es_sv
      ERROR: Expired

    将系统时间改为2011-1-1之前, 重新验证通过:
      E:> CreakMe.exe  NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ  es_sv
      Type: Full-use license
      Key: NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ - Locale: es_sv
      OK
    换为其它的locale输入, 不能通过验证:
      E:> CreakMe.exe  NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ  zh_cn
      Type: Full-use license
      Key: NVQSR-8D0X5-5@GPY-SJ@9S-0@0RZ - Locale: zh_cn
      locale Mismatch i.e locale 24, expected locale 3

4)求帮助, 大家来Crack试试看~~
==============================
个人水平太菜, 目前其中的几个关键函数, 移位/异或操作太多, 看不大懂.
求大家帮助!
我把反编译的c代码一并附上, 有时间的话, 高手都来试试~~~

目标:
  a. 希望能得到一个zh_cn下能用的, 没有过期时间的(Full-use license) 的密钥.
  b. 哪位大侠能告知下详细的算法, 或者能写出 keygen, 更加好啦. 谢谢.

欢迎各位大侠指教! 这里真心谢谢了. 留个联系方式:
email: zhw618@zju.edu.cn
QQ: 陆壹捌陆壹壹零

谢谢各位!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
应该介绍下key如何使用。
2012-12-22 18:25
0
雪    币: 6003
活跃值: (3490)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
3
在IDA下面可以看到C源码,,
2012-12-22 18:34
0
雪    币: 2835
活跃值: (2643)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
确实如LZ所说,验证算法很容易找到,但是如何写出逆函数。。这个很蛋疼。
2012-12-22 19:48
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个介绍了啊, 在第 3)部分的 d.小节.

其实就是, 假如key是 XXXXX,
命令行下运行
    CrackMe.exe   XXXXX  zh_cn (回车)

如果key正确, 显示 OK
如果key错误, 会输出错误信息!
2012-12-22 19:54
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是的, 附带的c代码, 就是用IDA 6.1 反编译出来的.

不过里面几个关键函数, 还是看不大懂
还得继续研究, 各位高手也支支招啊...
谢谢
2012-12-22 19:56
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈哈, 终于把算法全部搞懂了...

再请教一下,
写keygen一般用什么语言比较方便快速? 谢谢
2012-12-25 11:14
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
看你会啥,C、VB、VC、Delphi、汇编任你选。

本人习惯VB。
2012-12-25 13:54
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我以前都是用 java写 keygen
这次准备换 c++.net 试试.
2012-12-25 18:57
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
vc.net  太难用了, 又不像c++, 又不像.net
后来还是换 c# 花了2天写好 keygen了.

c#不愧为 win下的高级java,
特别是有跟c一样的各种 位运算符,
加上拖拉即用的图形界面生成器,
以后写keygen就用c#了!
2012-12-27 12:34
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
啥写注册机无所谓,关键是你技术如何。
来个你想看的:


截至目前为止,还不知道软件究竟是干嘛的!
上传的附件:
2012-12-27 20:12
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
F5出来的,你说你看懂了?
2012-12-30 10:16
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个到底是干嘛的??
只是一个简单的 CrackMe??
2012-12-31 23:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个key确实不错. 不过我已经完全看懂了key的验证算法了.
您贴出来的这个key有效期为: 2013年12月27日 13:00:00

不信您系统时间改到2013年12月28号再验证试试看.

不过还是谢谢各位了. 果然看雪上高手很多, 藏龙卧虎啊!

最后, 祝大家元旦快乐!!
2013-1-1 21:23
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
什么"F5出来的" 不懂.

我确实把代码完全看懂了啊. keygen也写好了已经.

祝大家元旦快乐!  
2013-1-1 21:29
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
我干嘛要调整时间,从来打鼻子不打牙。

2013-1-3 19:53
0
游客
登录 | 注册 方可回帖
返回
//