tangxiaodao 发表于 2007-11-26 16:23:00

系统美化专家2007 V6.6.1 简单破解分析(高手路过时指点下)

今天本来想把系统美化一下,就到百度里搜,发现了这款软件,一开始觉得是个软柿子,分析到后来却发现暗桩很多。想在网上找一个破解版的或者注册机吧!好像目前还没有发现有,所以自己分析了一下,能力有限,仅仅能实现假注册!现贴出来与大家分享下,也希望有高人能做出一个注册机或者搞一个破解版出来。下面是我分析时的一些代码!详细过程我就不说了,壳很简单,用ESP就直接脱掉了,主要是软件的暗桩比较多。
       WASM分析:
005EF46C未注册
005D9F30恭喜!软件注册成功!

005D9E44/$55            PUSH EBP
* Possible String Reference to: 'system.ini'
   DEDE分析,找到关键CALL
005D9DC6   .E8 C9020000   CALL xp2003_u.005DA094//关键CALL
005D9DCB   .84C0          TEST AL,AL
005D9DCD   .74 09         JE SHORT xp2003_u.005D9DD8   //在这里修改标志位或改为JNZ
005D9DCF   .8BC3          MOV EAX,EBX
005D9DD1   .E8 6E000000   CALL xp2003_u.005D9E44    //F8到这里 注册成功

算法部分:
005DA094      55            PUSH EBP
005DA095      8BEC          MOV EBP,ESP
005DA097      83C4 E8       ADD ESP,-18
005DA09A      53            PUSH EBX
005DA09B      56            PUSH ESI
005DA09C      33D2          XOR EDX,EDX
005DA09E      8955 E8       MOV DWORD PTR SS:,EDX
005DA0A1      8955 EC       MOV DWORD PTR SS:,EDX
005DA0A4      8955 F4       MOV DWORD PTR SS:,EDX
005DA0A7      8945 FC       MOV DWORD PTR SS:,EAX
005DA0AA      33C0          XOR EAX,EAX
005DA0AC      55            PUSH EBP
005DA0AD      68 93A15D00   PUSH xp2003_u.005DA193
005DA0B2      64:FF30       PUSH DWORD PTR FS:
005DA0B5      64:8920       MOV DWORD PTR FS:,ESP
005DA0B8      33DB          XOR EBX,EBX                              ;EBX=012D8100
005DA0BA      8D55 F4       LEA EDX,DWORD PTR SS:             ;EDX=00000000
005DA0BD      8B45 FC       MOV EAX,DWORD PTR SS:             ;EAX=00000000
005DA0C0      8B80 04030000 MOV EAX,DWORD PTR DS:         ;DS:=012DBCCC   EAX=012D8100
005DA0C6      E8 55CCE6FF   CALL xp2003_u.00446D20
005DA0CB      8B45 F4       MOV EAX,DWORD PTR SS:             ;输入用户名
005DA0CE      E8 35ABE2FF   CALL xp2003_u.00404C08                   ;调用CALL
005DA0D3      8BF0          MOV ESI,EAX                              ;ESI=004B43BC (xp2003_u.004B43BC)
005DA0D5      85F6          TEST ESI,ESI                           ; 在逻辑与操作后,对标志位重新置位ESI=0000000B
005DA0D7      7E 38         JLE SHORT xp2003_u.005DA111
005DA0D9      C745 F0 01000>MOV DWORD PTR SS:,1
005DA0E0      8D45 EC       /LEA EAX,DWORD PTR SS:
005DA0E3      50            |PUSH EAX                              ;EAX=0012E7A4
005DA0E4      B9 01000000   |MOV ECX,1                               ;
005DA0E9      8B55 F0       |MOV EDX,DWORD PTR SS:         ;EDX=00140608
005DA0EC      8B45 F4       |MOV EAX,DWORD PTR SS:            ;EAX不变
005DA0EF      E8 6CADE2FF   |CALL xp2003_u.00404E60
005DA0F4      8B45 EC       |MOV EAX,DWORD PTR SS:
005DA0F7      E8 04ADE2FF   |CALL xp2003_u.00404E00
005DA0FC      8A00          |MOV AL,BYTE PTR DS:                ;逐位取用户名
005DA0FE      25 FF000000   |AND EAX,0FF                           ;EAX与0FF进行AND,EAX=012D1674
005DA103      03D8          |ADD EBX,EAX                           ;EAX=00000074,EBX=00000000
005DA105      81F3 05FA0B00 |XOR EBX,0BFA05                        ;EBX与0BFA05异或,EBX=00000074
005DA10B      FF45 F0       |INC DWORD PTR SS:               ;(Initial CPU selection)
005DA10E      4E            |DEC ESI                                 ;ESI=0000000A
005DA10F    ^ 75 CF         JNZ SHORT xp2003_u.005DA0E0            ;循环
005DA111|>A1 C4056300   MOV EAX,DWORD PTR DS:
005DA116|.8BD0          MOV EDX,EAX
005DA118|.C1E0 04       SHL EAX,4
005DA11B|.03C2          ADD EAX,EDX
005DA11D|.03D8          ADD EBX,EAX
005DA11F|.81C3 D4A31300 ADD EBX,13A3D4
005DA125|.81F3 8DED5900 XOR EBX,59ED8D
005DA12B|.8D55 E8       LEA EDX,DWORD PTR SS:
005DA12E|.8B45 FC       MOV EAX,DWORD PTR SS:
005DA131|.8B80 08030000 MOV EAX,DWORD PTR DS:
005DA137|.E8 E4CBE6FF   CALL xp2003_u.00446D20
005DA13C|.8B45 E8       MOV EAX,DWORD PTR SS:            ;输入注册码
005DA13F|.E8 44F5E2FF   CALL xp2003_u.00409688
005DA144|.8BF3          MOV ESI,EBX
005DA146|.81F6 2473C400 XOR ESI,0C47324
005DA14C|.3BC6          CMP EAX,ESI
005DA14E      74 19         JE SHORT xp2003_u.005DA169
005DA150|.C645 FB 01    MOV BYTE PTR SS:,1
005DA154|.B8 BC056300   MOV EAX,xp2003_u.006305BC
005DA159|.8B55 F4       MOV EDX,DWORD PTR SS:
005DA15C|.E8 43A8E2FF   CALL xp2003_u.004049A4
005DA161|.8935 C0056300 MOV DWORD PTR DS:,ESI
005DA167|.EB 04         JMP SHORT xp2003_u.005DA16D
005DA169|>C645 FB 00    MOV BYTE PTR SS:,0
005DA16D|>33C0          XOR EAX,EAX
005DA16F|.5A            POP EDX
005DA170|.59            POP ECX
005DA171|.59            POP ECX
005DA172|.64:8910       MOV DWORD PTR FS:,EDX
005DA175|.68 9AA15D00   PUSH xp2003_u.005DA19A
005DA17A|>8D45 E8       LEA EAX,DWORD PTR SS:
005DA17D|.E8 CEA7E2FF   CALL xp2003_u.00404950
005DA182|.8D45 EC       LEA EAX,DWORD PTR SS:
005DA185|.E8 C6A7E2FF   CALL xp2003_u.00404950
005DA18A|.8D45 F4       LEA EAX,DWORD PTR SS:
005DA18D|.E8 BEA7E2FF   CALL xp2003_u.00404950
005DA192\.C3            RETN
005DA193   .^ E9 3CA1E2FF   JMP xp2003_u.004042D4
005DA198   .^ EB E0         JMP SHORT xp2003_u.005DA17A
005DA19A   .8A45 FB       MOV AL,BYTE PTR SS:
005DA19D   .5E            POP ESI
005DA19E   .5B            POP EBX
005DA19F   .8BE5          MOV ESP,EBP
005DA1A1   .5D            POP EBP
005DA1A2   .C3            RETN
005DA1A3      90            NOP
005DA1A4   .C705 C4056300>MOV DWORD PTR DS:,xp2003_u.00657>;N
005DA1AE   .C3            RETN


小结,没有什么心得。半成品发上来可能有点有碍观瞻了!望大家见谅才是!^_^

[ 本帖最后由 tangxiaodao 于 2007-11-26 16:41 编辑 ]

lynn 发表于 2007-11-26 18:54:11

005DA094/$55               push ebp                                        ;算法
005DA095|.8BEC               mov ebp,esp
005DA097|.83C4 E8            add esp,-18
005DA09A|.53               push ebx
005DA09B|.56               push esi
005DA09C|.33D2               xor edx,edx
005DA09E|.8955 E8            mov ,edx
005DA0A1|.8955 EC            mov ,edx
005DA0A4|.8955 F4            mov ,edx                               ;存用户名
005DA0A7|.8945 FC            mov ,eax
005DA0AA|.33C0               xor eax,eax
005DA0AC|.55               push ebp
005DA0AD|.68 93A15D00      push dumped_.005DA193
005DA0B2|.64:FF30            push dword ptr fs:
005DA0B5|.64:8920            mov dword ptr fs:,esp
005DA0B8|.33DB               xor ebx,ebx
005DA0BA|.8D55 F4            lea edx,
005DA0BD|.8B45 FC            mov eax,
005DA0C0|.8B80 04030000      mov eax,dword ptr ds:
005DA0C6|.E8 55CCE6FF      call dumped_.00446D20                           ;取用户名,放入lo3
005DA0CB|.8B45 F4            mov eax,
005DA0CE|.E8 35ABE2FF      call dumped_.00404C08                           ;计算字节数
005DA0D3|.8BF0               mov esi,eax
005DA0D5|.85F6               test esi,esi
005DA0D7|.7E 38            jle short dumped_.005DA111
005DA0D9|.C745 F0 01000000   mov ,1
005DA0E0|>8D45 EC            /lea eax,
005DA0E3|.50               |push eax
005DA0E4|.B9 01000000      |mov ecx,1
005DA0E9|.8B55 F0            |mov edx,
005DA0EC|.8B45 F4            |mov eax,                              ;为用户名
005DA0EF|.E8 6CADE2FF      |call dumped_.00404E60
005DA0F4|.8B45 EC            |mov eax,
005DA0F7|.E8 04ADE2FF      |call dumped_.00404E00
005DA0FC|.8A00               |mov al,byte ptr ds:                     ;取单个字符
005DA0FE|.25 FF000000      |and eax,0FF
005DA103|.03D8               |add ebx,eax                                    ;ebx记账的,设循环后结果为N1
005DA105|.81F3 05FA0B00      |xor ebx,0BFA05
005DA10B|.FF45 F0            |inc
005DA10E|.4E               |dec esi
005DA10F|.^ 75 CF            \jnz short dumped_.005DA0E0                     ;根据用户名字节数循环
005DA111|>A1 C4056300      mov eax,dword ptr ds:                   ;放eax,设为N2
005DA116|.8BD0               mov edx,eax
005DA118|.C1E0 04            shl eax,4
005DA11B|.03C2               add eax,edx                                     ;N2 += SHL(N2,4)
005DA11D|.03D8               add ebx,eax                                     ;N1 += N2
005DA11F|.81C3 D4A31300      add ebx,13A3D4                                  ;N1 += 0x13A3D4
005DA125|.81F3 8DED5900      xor ebx,59ED8D                                  ;N1 = N1 XOR 0x59ED8D
005DA12B|.8D55 E8            lea edx,                               ; = 0
005DA12E|.8B45 FC            mov eax,
005DA131|.8B80 08030000      mov eax,dword ptr ds:
005DA137|.E8 E4CBE6FF      call dumped_.00446D20                           ;取假码,放入lo6
005DA13C|.8B45 E8            mov eax,
005DA13F|.E8 44F5E2FF      call dumped_.00409688                           ;EAX=499602D2,很明显根据假码算出来的
005DA144|.8BF3               mov esi,ebx                                     ;N1 放入esi,设为N3 = N1
005DA146|.81F6 2473C400      xor esi,0C47324                                 ;N3 = N3 XOR 0xC47324
005DA14C|.3BC6               cmp eax,esi                                     ;EAX 与 N3比较
005DA14E|.75 19            jnz short dumped_.005DA169                      ;1
005DA150|.C645 FB 01         mov byte ptr ss:,1                     ;设标志位1
005DA154|.B8 BC056300      mov eax,dumped_.006305BC
005DA159|.8B55 F4            mov edx,                               ;用户名
005DA15C|.E8 43A8E2FF      call dumped_.004049A4                           ;要存档了?
005DA161|.8935 C0056300      mov dword ptr ds:,esi                   ;上面这个call得出的esi送入
005DA167|.EB 04            jmp short dumped_.005DA16D
005DA169|>C645 FB 00         mov byte ptr ss:,0                     ;设标志位2,对比1
005DA16D|>33C0               xor eax,eax
005DA16F|.5A               pop edx
005DA170|.59               pop ecx
005DA171|.59               pop ecx
005DA172|.64:8910            mov dword ptr fs:,edx
005DA175|.68 9AA15D00      push dumped_.005DA19A
005DA17A|>8D45 E8            lea eax,
005DA17D|.E8 CEA7E2FF      call dumped_.00404950                           ;清除送入的eax地址的内容
005DA182|.8D45 EC            lea eax,
005DA185|.E8 C6A7E2FF      call dumped_.00404950
005DA18A|.8D45 F4            lea eax,
005DA18D|.E8 BEA7E2FF      call dumped_.00404950
005DA192\.C3               retn
005DA193   .^ E9 3CA1E2FF      jmp dumped_.004042D4
005DA198   .^ EB E0            jmp short dumped_.005DA17A
005DA19A   .8A45 FB            mov al,byte ptr ss:                      ;对应前面的标志位1和2,送入al
005DA19D   .5E               pop esi
005DA19E   .5B               pop ebx
005DA19F   .8BE5               mov esp,ebp
005DA1A1   .5D               pop ebp
005DA1A2   .C3               retn

算法已经很清楚了,再仔细跟进一两个CALL基本上就完美了。

lynn 发表于 2007-11-27 09:18:35

可能还没那么简单,做了个keygen,虽然提示注册成功,但实际是假注册,搞不懂~~~

tangxiaodao 发表于 2007-11-27 12:39:34

咋回事?

俺也实现假注册了,为啥没人给俺加分捏!郁闷ing...
------------------------------------------------
有点怀疑这个版本是个DEMO版的,或许注册以后还会收到什么补丁程序等东西或者注册文件!我跟了好几遍都未果!本来也想写个注册,但假注册发出去觉得对大家不住!呵呵 !

tangxiaodao 发表于 2007-11-27 12:42:41

学习

高人就是高人学习下。。

tangxiaodao 发表于 2007-11-27 12:49:31

回复 3# 的帖子

还应该考虑一下用户名的长度问题    如果用户名小于某个数那么注册窗体会消失,如果大于等于某个数点注册没什么用感觉这个注册方式和PYG CrackMe2007的算法有些相似!

sevenwang 发表于 2007-12-1 13:31:58

哎 我什么都还看不懂也

fghtiger 发表于 2007-12-1 15:40:24

看不懂呀,还要学。

hackercc 发表于 2007-12-1 18:48:40

好多了看不明白啊/:014

105200951 发表于 2008-1-30 00:28:15

貌似看天书,不懂,呵呵,不太明白
页: [1] 2
查看完整版本: 系统美化专家2007 V6.6.1 简单破解分析(高手路过时指点下)