系统美化专家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 编辑 ] 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基本上就完美了。 可能还没那么简单,做了个keygen,虽然提示注册成功,但实际是假注册,搞不懂~~~
咋回事?
俺也实现假注册了,为啥没人给俺加分捏!郁闷ing...------------------------------------------------
有点怀疑这个版本是个DEMO版的,或许注册以后还会收到什么补丁程序等东西或者注册文件!我跟了好几遍都未果!本来也想写个注册,但假注册发出去觉得对大家不住!呵呵 !
学习
高人就是高人学习下。。回复 3# 的帖子
还应该考虑一下用户名的长度问题 如果用户名小于某个数那么注册窗体会消失,如果大于等于某个数点注册没什么用感觉这个注册方式和PYG CrackMe2007的算法有些相似! 哎 我什么都还看不懂也 看不懂呀,还要学。 好多了看不明白啊/:014 貌似看天书,不懂,呵呵,不太明白
页:
[1]
2