欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

sygate 3.0注册方法文档 (12千字)

sygate 3.0注册方法文档 (12千字)

SyGate3.0破解文档
使用工具
        Softice 3.0
        w32dasm 8.93
破解者:买草帽
SyGate3.0是一个很好的代理服务软件,它把可以让用户用一台modem上网共享。这个软
件有31天的使用限制,也有使用次数的限制,几个并且它好象在注册表中写入了一个啥,
反正我重装不能使用,不爽,兄弟们几个在网上想用一个小猫同时在网上神游的感觉才没
几天就要结束了,可不行.得想想办法.看来得跟Sygate公司请个安了.因为这个软件的注册
必须在网上进行,先拨号上网再输入注册码,这个程序跟注册运算相关的,分别是Serial No
有两个输入文本框,还有一个是Registration文本框.我在它们中输入如下
            Serial No:    18181818 41841888
            Registration:  94189418
为啥这样输入,呵呵.我没钱钱去注册呀,他们要这样拨号验证.当然先去给Sygate公司道个
吉祥.(不是小弟舍不得注册的钱钱,不怕各位笑话,我连真的$都没摸过.哪有钱钱去注册嘛.
等二回我手头有$了一定.....恭喜发财!),先礼...而后在Softice的黑脸下面的断点
      bpx hmemcpy
      然后Ctrl+D切回,按注册按钮,断下了
就按F12回到程序空间.程序先把你输入的
东西转换为其相应的16进制表示的有点像BCD码的相应表示。然后再走一会可以看见如下代码:
:0040F1CE 50                      push eax
:0040F1CF 57                      push edi
* Reference To: SgSrvAd.SgSetLicense, Ord:001Fh
                                  |
:0040F1D0 E883490000              Call 00413B58//这个调用就是调用接口函数在SgSrvAd.dll文件中,完成注册
                                              //下面就要进去追注册了!我跳进这个dll去追注册码
:0040F1D5 8BF0                    mov esi, eax
:0040F1D7 8B442424                mov eax, dword ptr [esp+24]
:0040F1DB 85C0                    test eax, eax//返回eax=0就显示注册成功,
:0040F1DD 7479                    je 0040F258
:0040F1DF 3D37FFFFFF              cmp eax, FFFFFF37
:0040F1E4 7533                    jne 0040F219
* Possible Reference to String Resource ID=02000: "SyGate Message"
                                  |
:0040F1E6 68D0070000              push 000007D0
:0040F1EB 8D4C2414                lea ecx, dword ptr [esp+14]
:0040F1EF E83EC90100              call 0042BB32
*********************************************************************************************         
下面就是在dll中的代码部分判断函数在SgSrvAd.dll中的函数SgSetLicense(),里的漫漫走没多久就可以走到
这里了,让我来一点一点的解读它.
* Referenced by a CALL at Addresses:
|:100056A5  , :10009C85 
|
:10005630 53                      push ebx
:10005631 8B5C240C                mov ebx, dword ptr [esp+0C]
:10005635 57                      push edi
:10005636 8B7C240C                mov edi, dword ptr [esp+0C]
:1000563A 53                      push ebx//第一部分输入的字符长度
:1000563B 57                      push edi//这里是输入的serial No第一部分输入转换成相应16进制BCD码
:1000563C E86FFFFFFF              call 100055B0//马上跟进望下边看,这个调用是验证第一部分输入的有效性和生成第二部分注册码的
:10005641 83C408                  add esp, 00000008
:10005644 85C0                    test eax, eax//回来后这个要为0才让你一路顺风哈
:10005646 753B                    jne 10005683
:10005648 837C241804              cmp dword ptr [esp+18], 00000004
:1000564D 752C                    jne 1000567B
:1000564F 8B442414                mov eax, dword ptr [esp+14]
:10005653 56                      push esi//Registration部分输入的BCD码转换,94189418
:10005654 53                      push ebx//第一部分输入的字符长度
:10005655 57                      push edi//其内是16进制BCD表示的18181818
:10005656 8B30                    mov esi, dword ptr [eax]
:10005658 E8B3FFFFFF              call 10005610//这个也要跟进你先往下跳哈,遇到ret才回来(生成Registration部分注册码)
:1000565D 83C408                  add esp, 00000008
:10005660 3BC6                    cmp eax, esi//这两个要相等,才行哟,哪个为准?当然是eax中的,它才是真的哟!(esi中的94189418Sygate不收哈)
:10005662 5E                      pop esi
:10005663 7516                    jne 1000567B//当然这里可不能跳的哈
:10005665 8B0F                    mov ecx, dword ptr [edi]//还有个机关哟...对18181818这段输入有一个很迷信的要求哈,Sygate公司制订的哈.
:10005667 BA00000040              mov edx, 40000000//第一部分第一个字符,一定不能大于4(看来Sygate确实有点忌讳的哈,输入第一个大于4的话它不高兴的哟),也玩完!!!
:1000566C 81E1000000F0            and ecx, F0000000
:10005672 5F                      pop edi
:10005673 3BD1                    cmp edx, ecx//大于4就是影响S标志
:10005675 5B                      pop ebx
:10005676 1BC0                    sbb eax, eax//这条指令要被S标志影响
:10005678 F7D8                    neg eax//第一个输入字符大于4,就米嘎了
:1000567A C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:1000564D(C), :10005663(C)
|
:1000567B 5F                      pop edi
:1000567C B802000000              mov eax, 00000002
:10005681 5B                      pop ebx
:10005682 C3                      ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10005646(C)
|
:10005683 5F                      pop edi
:10005684 B801000000              mov eax, 00000001
:10005689 5B                      pop ebx
:1000568A C3                      ret
/***************************************************************************/
第二部分生成代码区
* Referenced by a CALL at Address:
|:1000563C 
|
:100055B0 837C240808              cmp dword ptr [esp+08], 00000008//第一部分必须为8个字符
:100055B5 7406                    je 100055BD //不跳就玩完
:100055B7 B801000000              mov eax, 00000001//你不相信到了这里返回eax=1就要洗白
:100055BC C3                      ret//知道了把,为啥输入'18181818',第一部分输入必须是8个字符才让你过哈

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:100055B5(C)
|
:100055BD 56                      push esi
:100055BE 8B742408                mov esi, dword ptr [esp+08]
:100055C2 57                      push edi
:100055C3 8B06                    mov eax, dword ptr [esi]//BCD码18181818注册码第一部分
:100055C5 50                      push eax
:100055C6 E805FFFFFF              call 100054D0//生成注册码第二部分,跟进哈
:100055CB 8BC8                    mov ecx, eax//返回值给ecx
:100055CD 83C404                  add esp, 00000004
:100055D0 8BD1                    mov edx, ecx
:100055D2 C1E834                  shr eax, 34
:100055D5 C1EA28                  shr edx, 28
:100055D8 8D0440                  lea eax, dword ptr [eax+2*eax]
:100055DB 8D1492                  lea edx, dword ptr [edx+4*edx]
:100055DE 03C2                    add eax, edx
:100055E0 8BD1                    mov edx, ecx
:100055E2 C1EA1C                  shr edx, 1C
:100055E5 C1E90E                  shr ecx, 0E
:100055E8 8D3C92                  lea edi, dword ptr [edx+4*edx]
:100055EB 8D147A                  lea edx, dword ptr [edx+2*edi]
:100055EE 5F                      pop edi
:100055EF 03C2                    add eax, edx
:100055F1 03C1                    add eax, ecx
:100055F3 8B4E04                  mov ecx, dword ptr [esi+04]//'34343434'
:100055F6 25FFFF0F00              and eax, 000FFFFF//这个值就是第一部分生成的
                                                  //第二部分,一定要等于esi+04
:100055FB 81E1FFFF0F00            and ecx, 000FFFFF
:10005601 2BC1                    sub eax, ecx
:10005603 5E                      pop esi
:10005604 C3                      ret
/*************************************************************************/
* Referenced by a CALL at Address:
|:100055C6 
|
//算法部分:文本的第二部分跟18181818相匹配的注册码就由这里运算得来,你可以把它当做一个黑箱.在这里外
//界输入只有一个18181818,(当然你也可以把它当做一头奶牛,吃的是18181818,挤出的就是......:),其实程序
//在这里做的也就是做的几个异或加上小学就会的四则混合运算拉,我懒!就不分析了哈,有数学兴趣的漫漫看.
:100054D0 8B4C2404                mov ecx, dword ptr [esp+04] \\ BCD 18181818
:100054D4 56                      push esi
:100054D5 8BC1                    mov eax, ecx
:100054D7 3543512400              xor eax, 00245143
:100054DC 0FAFC1                  imul eax, ecx
:100054DF 0FAFC1                  imul eax, ecx
:100054E2 8BD0                    mov edx, eax
:100054E4 C1E20B                  shl edx, 0B
:100054E7 2BD0                    sub edx, eax
:100054E9 8D1492                  lea edx, dword ptr [edx+4*edx]
:100054EC 8D1490                  lea edx, dword ptr [eax+4*edx]
:100054EF 8D1452                  lea edx, dword ptr [edx+2*edx]
:100054F2 8DB450777A0600          lea esi, dword ptr [eax+2*edx+00067A77]
:100054F9 B865A62573              mov eax, 7325A665
:100054FE 0FAFF1                  imul esi, ecx
:10005501 F7E1                    mul ecx
:10005503 0FAFF1                  imul esi, ecx
:10005506 81EE6E1A0000            sub esi, 00001A6E
:1000550C 0FAFF1                  imul esi, ecx
:1000550F C1EA11                  shr edx, 11
:10005512 8BC2                    mov eax, edx
:10005514 C1E008                  shl eax, 08
:10005517 03C2                    add eax, edx
:10005519 8D0440                  lea eax, dword ptr [eax+2*eax]
:1000551C 8D8406B1110000          lea eax, dword ptr [esi+eax+000011B1]\\第二部分挤出来的在eax中,
:10005523 5E                      pop esi
:10005524 C3                      ret
/**************************************************************************/
/**************************************************************************/
//第三部分生成代码区
10005610 837C240808              cmp dword ptr [esp+08], 00000008//第二次判断你输入是字符数是8吗?
:10005615 7406                    je 1000561D//这里要跳过去哈,不然.....
:10005617 B801000000              mov eax, 00000001
:1000561C C3                      ret// 呵呵~看来Sygate公司跟我们一样,对这样的吉祥数值8也是喜欢哈.但你可不要把代码走到这一行哟!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10005615(C)
|
:1000561D 8B442404                mov eax, dword ptr [esp+04]
:10005621 8B08                    mov ecx, dword ptr [eax]
:10005623 51                      push ecx//根据第一部分生成
10005624 E807FFFFFF              call 10005530//跟进就是生成Registration的算法了哈!
:10005629 83C404                  add esp, 00000004
:1000562C C3                      ret

/***************************************************************************/
//算法部分:文本的第三部分跟18181818相匹配的Registration注册码就由这里运算得来,你可以把它当做一个
//黑箱.在这里外界输入只有一个18181818,(当然你也可以还是把它当做一头奶牛,吃的是18181818,挤出的就是......:),
:10005530 8B4C2404                mov ecx, dword ptr [esp+04]
:10005534 56                      push esi
:10005535 8BC1                    mov eax, ecx//ecx=(BCD码)18181818
:10005537 3545099294              xor eax, 94920945
:1000553C 0FAFC1                  imul eax, ecx
:1000553F 0FAFC1                  imul eax, ecx
:10005542 0FAFC1                  imul eax, ecx
:10005545 0FAFC1                  imul eax, ecx
:10005548 8D14C500000000          lea edx, dword ptr [8*eax+00000000]
:1000554F 2BD0                    sub edx, eax
:10005551 8D1490                  lea edx, dword ptr [eax+4*edx]
:10005554 8DB4D061050000          lea esi, dword ptr [eax+8*edx+00000561]
:1000555B B8CF4D0FC2              mov eax, C20F4DCF
:10005560 F7E1                    mul ecx
:10005562 0FAFF1                  imul esi, ecx
:10005565 8BC1                    mov eax, ecx
:10005567 2BC2                    sub eax, edx
:10005569 D1E8                    shr eax, 1
:1000556B 03C2                    add eax, edx
:1000556D C1E811                  shr eax, 11
:10005570 8BD0                    mov edx, eax
:10005572 C1E204                  shl edx, 04
:10005575 03D0                    add edx, eax
:10005577 8D04D2                  lea eax, dword ptr [edx+8*edx]
:1000557A 8D04C0                  lea eax, dword ptr [eax+8*eax]
:1000557D 03F0                    add esi, eax
:1000557F 0FAFF1                  imul esi, ecx
:10005582 81EE1C82B302            sub esi, 02B3821C
:10005588 0FAFF1                  imul esi, ecx
:1000558B C1E91E                  shr ecx, 1E
:1000558E 81F1FAFAFAFA            xor ecx, FAFAFAFA
:10005594 8D0489                  lea eax, dword ptr [ecx+4*ecx]
:10005597 8D0480                  lea eax, dword ptr [eax+4*eax]
:1000559A 8D0480                  lea eax, dword ptr [eax+4*eax]
:1000559D 8D1480                  lea edx, dword ptr [eax+4*eax]
:100055A0 C1E204                  shl edx, 04
:100055A3 2BD1                    sub edx, ecx
:100055A5 8D8416E3140000          lea eax, dword ptr [esi+edx+000014E3]//挤出来第三部分的就是这个eax的拉!
:100055AC 5E                      pop esi
:100055AD C3                      ret

后记:
      这个软件已经是我很久跟的了,不过它确实很好,现在它的版本也升高了.我这人既笨又懒.新的4.0注册方法
好象是改了,好象不是通过调用dll实现的注册码验证的了.我也不敢去追了,在汇编代码森林里真的好可怕.还是
上街去打望的好,呜呜......

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功