桌面日历秀破解分析
桌面日历秀破解分析天好热啊,找个软件破解玩玩
软件装完后,运行之,提示注册,输入注册码后,联到下面的网上校验
www.XDeskSoft.com/xdc_reg/xdc_checkreg.asp
返回数据为username or passwd err,提示框是中文,所以肯定文字都在本地,再查壳为UPX,脱壳后放OD分析
查找字符串:username or passwd err,在下面就可以看到注册成功,进入后
005E7665 .E8 EEDAE1FF CALL XDeskCal.00405158
005E766A .75 76 JNZ SHORT XDeskCal.005E76E2
005E766C .A1 A4356300 MOV EAX,DWORD PTR DS: ;lwc
005E7671 .8B55 F4 MOV EDX,DWORD PTR SS:
005E7674 .E8 27D7E1FF CALL XDeskCal.00404DA0
005E7679 .8D45 F4 LEA EAX,DWORD PTR SS:
005E767C .E8 CBD6E1FF CALL XDeskCal.00404D4C
005E7681 .8B15 98336300 MOV EDX,DWORD PTR DS: ;hwc
005E7687 .8B12 MOV EDX,DWORD PTR DS:
005E7689 .8B45 FC MOV EAX,DWORD PTR SS:
005E768C .8B80 FC020000 MOV EAX,DWORD PTR DS:
005E7692 .E8 2538E9FF CALL XDeskCal.0047AEBC
005E7697 .8B45 FC MOV EAX,DWORD PTR SS:
005E769A .8B80 F8020000 MOV EAX,DWORD PTR DS:
005E76A0 .B2 01 MOV DL,1
005E76A2 .E8 0537E9FF CALL XDeskCal.0047ADAC
005E76A7 .A1 04316300 MOV EAX,DWORD PTR DS: ;阂c 注意这里
005E76AC .C600 01 MOV BYTE PTR DS:,1 赐值1了
005E76AF .8B45 FC MOV EAX,DWORD PTR SS:
005E76B2 .E8 41A0E9FF CALL XDeskCal.004816F8
005E76B7 .33C9 XOR ECX,ECX
005E76B9 .BA AC7C5E00 MOV EDX,XDeskCal.005E7CAC ;注册成功,感谢您对中国共享软件的支持!
005E76BE .E8 69D80100 CALL XDeskCal.00604F2C
005E76C3 .E8 FCAA0100 CALL XDeskCal.006021C4
005E76C8 .8B45 F0 MOV EAX,DWORD PTR SS:
005E76CB .E8 68C7E1FF CALL XDeskCal.00403E38
005E76D0 .8B45 FC MOV EAX,DWORD PTR SS:
005E76D3 .C780 4C020000>MOV DWORD PTR DS:,1
005E76DD .E9 96000000 JMP XDeskCal.005E7778
005E76E2 >8D45 F8 LEA EAX,DWORD PTR SS:
注册成功后就给633104赐值1了,所以,这是我们的突破口
直接给633104下访问断点,F9,看到停在如下位置
0062BD31 .64:8910 MOV DWORD PTR FS:,EDX
0062BD34 .E9 41020000 JMP XDeskCal.0062BF7A
0062BD39 >E8 9A78FDFF CALL XDeskCal.006035D8
0062BD3E .A1 04316300 MOV EAX,DWORD PTR DS: ;阂c
0062BD43 .C600 00 MOV BYTE PTR DS:,0 赐值为0
0062BD46 .E8 FD9EFDFF CALL XDeskCal.00605C48
0062BD4B .A1 04316300 MOV EAX,DWORD PTR DS: ;阂c
0062BD50 .8038 00 CMP BYTE PTR DS:,0
0062BD53 .75 6C JNZ SHORT XDeskCal.0062BDC1
0062BD55 .8B0D 34326300 MOV ECX,DWORD PTR DS: ;Lc
0062BD5B .8B09 MOV ECX,DWORD PTR DS:
0062BD5D .B2 01 MOV DL,1
0062BD5F .A1 38DF5F00 MOV EAX,DWORD PTR DS:
0062BD64 .E8 2B7AE6FF CALL XDeskCal.00493794
0062BD69 .8B15 282C6300 MOV EDX,DWORD PTR DS: ;XDeskCal.0063758C
0062BD6F .8902 MOV DWORD PTR DS:,EAX
请注意,断下的时候,显示的是DS:=006375E9,也就是说,00633104实际储存的是006375E9这个位置
直接在OD里面定向到00633104也证实了这点:00633104- E9 756300C8
dword 为4个字节,E9756300正过来,就是关键点了
给006375E9下访问断点,F9
发现断在一个CALL上面,进入这个call
00605C48/$55 PUSH EBP
00605C49|.8BEC MOV EBP,ESP
00605C4B|.B9 04000000 MOV ECX,4
00605C50|>6A 00 /PUSH 0
00605C52|.6A 00 |PUSH 0
00605C54|.49 |DEC ECX
00605C55|.^ 75 F9 \JNZ SHORT XDeskCal.00605C50
00605C57|.51 PUSH ECX
00605C58|.33C0 XOR EAX,EAX
00605C5A|.55 PUSH EBP
00605C5B|.68 5B5D6000 PUSH XDeskCal.00605D5B
00605C60|.64:FF30 PUSH DWORD PTR FS:
00605C63|.64:8920 MOV DWORD PTR FS:,ESP
00605C66|.C605 E9756300>MOV BYTE PTR DS:,0 来了,一开始就赐值为0,看来就是这里了,继续往下看
00605C6D|.68 705D6000 PUSH XDeskCal.00605D70 ;tcy
00605C72|.FF35 60776300 PUSH DWORD PTR DS:
00605C78|.FF35 64776300 PUSH DWORD PTR DS:
00605C7E|.68 7C5D6000 PUSH XDeskCal.00605D7C ;lovedongdong
00605C83|.8D45 DC LEA EAX,DWORD PTR SS:
00605C86|.BA 04000000 MOV EDX,4
00605C8B|.E8 3CF4DFFF CALL XDeskCal.004050CC
00605C90|.8B45 DC MOV EAX,DWORD PTR SS:
00605C93|.8D55 E8 LEA EDX,DWORD PTR SS:
00605C96|.E8 918CF7FF CALL XDeskCal.0057E92C
00605C9B|.8D45 E8 LEA EAX,DWORD PTR SS:
00605C9E|.8D55 E0 LEA EDX,DWORD PTR SS:
00605CA1|.E8 FA8CF7FF CALL XDeskCal.0057E9A0
00605CA6|.8B45 E0 MOV EAX,DWORD PTR SS:
00605CA9|.8D55 E4 LEA EDX,DWORD PTR SS:
00605CAC|.E8 B73CE0FF CALL XDeskCal.00409968
00605CB1|.8D45 E4 LEA EAX,DWORD PTR SS:
00605CB4|.BA 945D6000 MOV EDX,XDeskCal.00605D94 ;cfishsoft
00605CB9|.E8 56F3DFFF CALL XDeskCal.00405014
00605CBE|.8B45 E4 MOV EAX,DWORD PTR SS:
00605CC1|.8D55 E8 LEA EDX,DWORD PTR SS:
00605CC4|.E8 638CF7FF CALL XDeskCal.0057E92C
00605CC9|.8D45 E8 LEA EAX,DWORD PTR SS:
00605CCC|.8D55 F8 LEA EDX,DWORD PTR SS:
00605CCF|.E8 CC8CF7FF CALL XDeskCal.0057E9A0
00605CD4|.8B45 F8 MOV EAX,DWORD PTR SS:
00605CD7|.8D55 FC LEA EDX,DWORD PTR SS:
00605CDA|.E8 893CE0FF CALL XDeskCal.00409968
00605CDF|.8D45 FC LEA EAX,DWORD PTR SS:
00605CE2|.8B15 68776300 MOV EDX,DWORD PTR DS:
00605CE8|.E8 27F3DFFF CALL XDeskCal.00405014
00605CED|.8B45 FC MOV EAX,DWORD PTR SS:
00605CF0|.8B15 6C776300 MOV EDX,DWORD PTR DS:
00605CF6|.E8 5DF4DFFF CALL XDeskCal.00405158
00605CFB|.75 09 JNZ SHORT XDeskCal.00605D06
00605CFD|.C605 E9756300>MOV BYTE PTR DS:,1 终于找到了,就是这里,赐值1
00605D04|.EB 2D JMP SHORT XDeskCal.00605D33
00605D06|>B8 60776300 MOV EAX,XDeskCal.00637760
00605D0B|.E8 3CF0DFFF CALL XDeskCal.00404D4C
00605D10|.B8 64776300 MOV EAX,XDeskCal.00637764
00605D15|.E8 32F0DFFF CALL XDeskCal.00404D4C
00605D1A|.B8 68776300 MOV EAX,XDeskCal.00637768
00605D1F|.E8 28F0DFFF CALL XDeskCal.00404D4C
00605D24|.B8 6C776300 MOV EAX,XDeskCal.0063776C
00605D29|.E8 1EF0DFFF CALL XDeskCal.00404D4C
00605D2E|.E8 91C4FFFF CALL XDeskCal.006021C4
00605D33|>33C0 XOR EAX,EAX
00605D35|.5A POP EDX
00605D36|.59 POP ECX
00605D37|.59 POP ECX
00605D38|.64:8910 MOV DWORD PTR FS:,EDX
00605D3B|.68 625D6000 PUSH XDeskCal.00605D62
00605D40|>8D45 DC LEA EAX,DWORD PTR SS:
00605D43|.BA 03000000 MOV EDX,3
00605D48|.E8 23F0DFFF CALL XDeskCal.00404D70
00605D4D|.8D45 F8 LEA EAX,DWORD PTR SS:
00605D50|.BA 02000000 MOV EDX,2
00605D55|.E8 16F0DFFF CALL XDeskCal.00404D70
00605D5A\.C3 RETN
00605D5B .^ E9 6CE8DFFF JMP XDeskCal.004045CC
00605D60 .^ EB DE JMP SHORT XDeskCal.00605D40
00605D62 .8BE5 MOV ESP,EBP
00605D64 .5D POP EBP
00605D65 .C3 RETN
把00605CFB这的跳转NOP掉,保存一下,再运行看看~
大功告成~
网上像这样放内存地址的软件还很多,比如佳宜,各位手痒的话可以拿他练练手
By Lkou 2011.7.7
{:1_890:}天热开空调~ 去试试- - , 看老大的教程感觉就是不一样,谢谢老大的教程 呵呵!我也要去试试!“佳宜”,{:1_918:}你就不要怪我了...................................... 学习来了。 学习一下,试试。 进来学习大牛分析了 以前在PYG学习的时候讲到过这种形式。多谢LZ的精彩帖子。 不错的方法!!!