设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 10953|回复: 2
打印 上一主题 下一主题

非明码软件的入门教学--现给算法的入门者

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-23 01:30:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:PowerBoy
非明码软件的入门教学
破解软件:CalcVoice计算器
破解人:PowerBoy
下载地址:电力系统网,“软件下载乐园”
软件介绍:该软件是一个语音计算器,可以进行二进制、十进制、八进制、十六进制的转换和三角函数的
计算,注册保护为软件自生成一个序列号,然后根据序列号算出注册码。(每台机器序列号都不相同)
并且有30次限制所以有2种选择:一种是暴力破解,另外一种是分析出算法写成注册机。
*************************************************************************************************************************
1.爆破
首先用language侦测发现是用aspack加的壳。选择用CASPR脱壳(效果好)。
运行软件弹出要求注册的对话框随便输入注册码弹出:
"对不起!您的注册码不正确,请与作者联系! "
接下来用w32dsam反汇编查找“串式参考”
发现此句,用左键双击来到程序中。
向上查找发现是由00476AE0(C)跳转来得(用右键双击)
查看程序发现如果00476AE0不跳转就可以来到:
"恭喜您,注册成功!谢谢您支持本软件,请保存好序列?
因此将3BC2757OB201改为
      ××7470××  je或
      ××9090××  nop  成功!!!!!!!!!!!!!!!
*************************************************************************************************************************
2.算法分析
因为该软件是非明码比较,这就要求破解者要有一定的算法破解基础了。废话不说了开始!
下断点:BPX HMEMCPY 按F12共N次来到下面...........
这时就要用F10了,并且要求要成用D和?命令查看个寄存器的数值,(要有宁可错杀一千不放过一个的态度才行啊!)
:00476AA3 55                      push ebp
:00476AA4 687D6B4700              push 00476B7D
:00476AA9 64FF30                  push dword ptr fs:[eax]
:00476AAC 648920                  mov dword ptr fs:[eax], esp
:00476AAF 8D55FC                  lea edx, dword ptr [ebp-04]
:00476AB2 8B8634040000            mov eax, dword ptr [esi+00000434]
:00476AB8 E87FFFFBFF              call 00436A3C
:00476ABD 8B45FC                  mov eax, dword ptr [ebp-04]
:00476AC0 83CAFF                  or edx, FFFFFFFF
:00476AC3 E8C41CF9FF              call 0040878C-------------------->经过此CALL后,我们输入的SN变成十六进制,并保存倒EAX中;
:00476AC8 35630AB302              xor eax, 02B30A63---------------->EAX=EAX XOR 0x2B30A63
:00476ACD 35C5AC3703              xor eax, 0337ACC5---------------->EAX=EAX XOR 0x337ACC5
:00476AD2 8B15489D4700            mov edx, dword ptr [00479D48]---->EDX=0x13215B=1253723
:00476AD8 81F2630AB302            xor edx, 02B30A63---------------->EDX=EDX XOR 0x2B30A63//这时EDX的值就是机器码MN;
:00476ADE 3BC2                    cmp eax, edx--------------------->比较EAX和EDX
:00476AE0 7570                    jne 00476B52*********************关键跳转,不相等则跳,跳则死
:00476AE2 B201                    mov dl, 01
:00476AE4 A174CC4600              mov eax, dword ptr [0046CC74]
:00476AE9 E88662FFFF              call 0046CD74
:00476AEE 8BD8                    mov ebx, eax
:00476AF0 BA02000080              mov edx, 80000002
:00476AF5 8BC3                    mov eax, ebx
:00476AF7 E81863FFFF              call 0046CE14
:00476AFC 33C9                    xor ecx, ecx
* Possible StringData Ref from Code Obj ->"\Software\Microsoft\Active Setup\Installed "
                                        ->"Components"
                                  |
:00476AFE BA946B4700              mov edx, 00476B94
:00476B03 8BC3                    mov eax, ebx
:00476B05 E86E63FFFF              call 0046CE78
* Possible StringData Ref from Code Obj ->"1.0"
                                  |
:00476B0A B9D46B4700              mov ecx, 00476BD4
* Possible StringData Ref from Code Obj ->"Version"
                                  |
:00476B0F BAE06B4700              mov edx, 00476BE0
:00476B14 8BC3                    mov eax, ebx
:00476B16 E8F964FFFF              call 0046D014
:00476B1B 8BC3                    mov eax, ebx
:00476B1D E836CAF8FF              call 00403558
:00476B22 6A00                    push 00000000
:00476B24 668B0DE86B4700          mov cx, word ptr [00476BE8]
:00476B2B B202                    mov dl, 02
* Possible StringData Ref from Code Obj ->"恭喜您,注册成功!谢谢您支持本软件,请保存好序列?
                                        ->"庞胱⒉崧?便于作者为您提供服务! "
                                        ->"  联系邮箱:JRYCL@163.COM"
                                  |
:00476B2D B8F46B4700              mov eax, 00476BF4
:00476B32 E85999FBFF              call 00430490
:00476B37 33D2                    xor edx, edx
:00476B39 8B8618040000            mov eax, dword ptr [esi+00000418]
:00476B3F E818FEFBFF              call 0043695C
:00476B44 A18C9C4700              mov eax, dword ptr [00479C8C]
:00476B49 C6802D02000001          mov byte ptr [eax+0000022D], 01
:00476B50 EB15                    jmp 00476B67
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00476AE0(C)
|
:00476B52 6A00                    push 00000000
:00476B54 668B0DE86B4700          mov cx, word ptr [00476BE8]
:00476B5B B201                    mov dl, 01
* Possible StringData Ref from Code Obj ->"对不起!您的注册码不正确,请与作者联系! "
                                        ->"联系邮箱:JRYCL@163.COM"
                                  |
:00476B5D B8646C4700              mov eax, 00476C64
:00476B62 E82999FBFF              call 00430490
*******************************************************************************************************************
算法整理:
这是典型的非明码比较的注册码形式;
1.:00476ADE处比较EAX和EDX.如果相等就注册成功,不相等则注册失败;
  我们来看:EAX中保存着我们输入的假SN变成十六进制形式在经过与常数XOR计算所得的数值,而EDX中保存着MN的十六进制形式;
  如果想注册成功就要使EAX等于EDX;
2.好既然这样我们就令:EAX=EDX;然后,逆推;
(这里我们要知道一些必要的知识即:A XOR B = C 等价于 A XOR C = B 或 B XOR C = A);
如果知道这些就简单了啊!
用MN先与常数0x2B30A63异或,在与常数0x337ACC5异或;
最后,将所得的数变成十进制就是正确的注册码了啊!
例如:
MN=44051256
44051256=0x2A02B38
0x2A02B38 XOR 0x2B30A63 = 0x13215B
0x13215B XOR 0x337ACC5 = 0x3248D9E
0x3248D9E=52727198
SN=52727198
输入52727198显示成功!!!!!!!!
*********************************************************************************************************************
另外这个软件有个缺陷
如果在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components]
建立主键"Version"="1.0"
那么就不用注册就可以成功了啊!
*********************************************************************************************************************
2#
发表于 2010-1-24 14:05:07 | 只看该作者
哈哈,好怕怕~~我每次看帖必回的~~藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 05:39 , Processed in 0.094406 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表