- UID
- 1542
注册时间2005-5-10
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 擦汗 2017-9-28 11:05 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
【破文标题】忠诚卫士V1.0简单浮点算法分析
【破文作者】pentalce[PYG][DFCG][OCN][D.4s]
【作者邮箱】
【作者主页】www.chinapyg.com
【破解工具】OD,ECE,Peid
【破解平台】Win9x/NT/2000/XP
【软件名称】忠诚卫士V1.0
【软件大小】1.8M
【原版下载】http://www.dywt.com.cn/vbs/viewFile.asp?BoardID=124&ID=37531
【保护方式】
【软件简介】历经半月.精尽打造.忠诚卫士1.0,欢迎试用.如果注册,感激不尽...
写得不好不要骂人哦...
软件写的很烂的~还收费。。。。。。
------------------------------------------------------------------------
【破解过程】1、用Peid查壳
显示无壳。那好说OD载入吧~
2、算法分析
说实话,偶编程不行。特别是看到VB就头痛。一般看见VB的程序我不会去破解的。
运行试一下。
机器码:-2161713656
注册名:pentacle
注册码:789789
弹出失败窗口
好。OD载入
下断bp MessageBoxA,按上述再来一次
77D5050B > 8BFF MOV EDI,EDI //我们断在这儿。看右下角的堆栈友好提示
0012EC98 10061EA6 返回到 krnln.10061EA6 来自 USER32.MessageBoxA
接下来我们Alt+F9执行到返回。这个时候就到主程序的领空了
0054831D 83C4 28 ADD ESP,28 //返回主程序的领空了
我们往上看
00548283 /74 09 JE SHORT 忠诚卫士.0054828E
00548285 |53 PUSH EBX
00548286 |E8 E9490000 CALL 忠诚卫士.0054CC74
0054828B |83C4 04 ADD ESP,4
0054828E \68 04000080 PUSH 80000004
00548293 6A 00 PUSH 0
00548295 68 A5324000 PUSH 忠诚卫士.004032A5 ; 恭喜...
0054829A 68 01030080 PUSH 80000301
0054829F 6A 00 PUSH 0
005482A1 68 40000000 PUSH 40
005482A6 68 04000080 PUSH 80000004
005482AB 6A 00 PUSH 0
005482AD 68 940D4800 PUSH 忠诚卫士.00480D94 ; 你的软件注册成功...\n\n再次感谢你注册<忠诚卫士>
005482B2 68 03000000 PUSH 3
005482B7 BB 00030000 MOV EBX,300
005482BC E8 BF490000 CALL 忠诚卫士.0054CC80
005482C1 83C4 28 ADD ESP,28
005482C4 68 01000100 PUSH 10001
005482C9 68 B3030106 PUSH 60103B3
005482CE 68 B4030152 PUSH 520103B4
005482D3 68 01000000 PUSH 1
005482D8 BB 60030000 MOV EBX,360
005482DD E8 9E490000 CALL 忠诚卫士.0054CC80
005482E2 83C4 10 ADD ESP,10
005482E5 E9 74000000 JMP 忠诚卫士.0054835E
005482EA 68 04000080 PUSH 80000004
005482EF 6A 00 PUSH 0
005482F1 68 E8324000 PUSH 忠诚卫士.004032E8 ; 不好意思...
005482F6 68 01030080 PUSH 80000301
005482FB 6A 00 PUSH 0
005482FD 68 30000000 PUSH 30
00548302 68 04000080 PUSH 80000004
00548307 6A 00 PUSH 0
00548309 68 C20D4800 PUSH 忠诚卫士.00480DC2 ; 注册码错误.请检查后再注册...
0054830E 68 03000000 PUSH 3
00548313 BB 00030000 MOV EBX,300
00548318 E8 63490000 CALL 忠诚卫士.0054CC80
0054831D 83C4 28 ADD ESP,28
再向上走。
00548096 68 01000000 PUSH 1 ; 下面都是浮点运算了
0054809B BB 64010000 MOV EBX,164
005480A0 E8 DB4B0000 CALL 忠诚卫士.0054CC80
005480A5 83C4 10 ADD ESP,10
005480A8 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
005480AB 8955 EC MOV DWORD PTR SS:[EBP-14],EDX
005480AE DD45 E8 FLD QWORD PTR SS:[EBP-18] ; 真正的机器码
005480B1 DC25 A5374000 FSUB QWORD PTR DS:[4037A5] ; 真正的机器码-39542454
005480B7 DD5D E0 FSTP QWORD PTR SS:[EBP-20] ; 真正的注册码
005480BA DD45 F4 FLD QWORD PTR SS:[EBP-C] ; 假的注册码
005480BD DC65 E0 FSUB QWORD PTR SS:[EBP-20] ; 假注册码-真注册码
005480C0 D9E4 FTST ; 0检测,即检测上面的减法结果是否为0
005480C2 DFE0 FSTSW AX ; 保存标志位
005480C4 F6C4 01 TEST AH,1
005480C7 74 02 JE SHORT 忠诚卫士.005480CB
005480C9 D9E0 FCHS
005480CB DC1D 8C0D4800 FCOMP QWORD PTR DS:[480D8C] ; 消除误差再次比较
005480D1 DFE0 FSTSW AX
005480D3 F6C4 41 TEST AH,41
005480D6 0F84 0E020000 JE 忠诚卫士.005482EA ; 关键跳转,跳就OVER
通过跟踪发现。真正的机器码和注册窗口中显示的机器码不一样~
于是我用ECE来分析一下吧。
晕~这么多窗口。全是默认名称。怎么找呢?
于是我想。这个注册窗口中有五个按钮和三个编辑框,嘿,还没有。
不过找到有三个编辑框的窗口。OK,就是你了~
于是我们来到
00541C2E 55 PUSH EBP ; 机器码得到的地方
00541C2F 8BEC MOV EBP,ESP
00541C31 81EC 18000000 SUB ESP,18
00541C37 68 00000000 PUSH 0
00541C3C BB C4060000 MOV EBX,6C4
00541C41 E8 3AB00000 CALL 忠诚卫士.0054CC80 ; 取硬盘特征字(),易语言的一个命令
00541C46 83C4 04 ADD ESP,4
00541C49 68 01030080 PUSH 80000301
00541C4E 6A 00 PUSH 0
00541C50 50 PUSH EAX
00541C51 68 01000000 PUSH 1
00541C56 BB 64010000 MOV EBX,164
00541C5B E8 20B00000 CALL 忠诚卫士.0054CC80
00541C60 83C4 10 ADD ESP,10
00541C63 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
00541C66 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
00541C69 DD45 F4 FLD QWORD PTR SS:[EBP-C] ; 取回的特征字,即真正的机器码
00541C6C DC25 97484600 FSUB QWORD PTR DS:[464897] ; 真正的机器码-19771227
00541C72 DD5D EC FSTP QWORD PTR SS:[EBP-14] ; 保存结果
00541C75 68 01060080 PUSH 80000601
00541C7A FF75 F0 PUSH DWORD PTR SS:[EBP-10]
00541C7D FF75 EC PUSH DWORD PTR SS:[EBP-14]
00541C80 68 01000000 PUSH 1
00541C85 BB 68010000 MOV EBX,168
00541C8A E8 F1AF0000 CALL 忠诚卫士.0054CC80 ; 这个就是我们看到的机器码
OK。就此程序已经分析的差不多了~
经分析:注册成功后注册信息保存在
C:\windows\system.ini文件中(要是程序一个出错怎么哪?)
在文件尾写如下数据
[zcws]
yhm=pentacle
zcm=-2181484883
易语言注册机源码:
注册码框.内容=到文本(取硬盘特征字()-39542454)
------------------------------------------------------------------------
【破解总结】算法总结:
注册码=机器码+19771227-39542454
附上我的注册信息
机器码:-2161713656
注册名:pentacle
注册码:-2181484883
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢! |
|