- UID
- 31985
注册时间2007-5-6
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【文章标题】: 2006年PYG作业验证算法分析
【文章作者】: 千里之外
【作者邮箱】: [email protected]
【作者主页】: www.wm5.net.cn
【作者QQ号】: 506398911
【软件名称】: PYG5.4Crackers作业验证之CrackMe
【加壳方式】: UPX
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID OD
【操作平台】: WINXP2
【作者声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
--------------------------------------------------------------------------------
【详细过程】
大家好 我是千里之外 这个CrackMe 字符做了加密处理 可以用DEDE 找到确定按钮 然后找到关键算法
00468100 /. 55 PUSH EBP
00468101 |. 8BEC MOV EBP,ESP
00468103 |. 33C9 XOR ECX,ECX
00468105 |. 51 PUSH ECX
00468106 |. 51 PUSH ECX
00468107 |. 51 PUSH ECX
00468108 |. 51 PUSH ECX
00468109 |. 51 PUSH ECX
0046810A |. 51 PUSH ECX
0046810B |. 51 PUSH ECX
0046810C |. 53 PUSH EBX
0046810D |. 56 PUSH ESI
0046810E |. 8BD8 MOV EBX,EAX
00468110 |. 33C0 XOR EAX,EAX
00468112 |. 55 PUSH EBP
00468113 |. 68 14824600 PUSH PYG5_4Cr.00468214
00468118 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0046811B |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046811E |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
00468121 |. 8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
00468127 |. E8 ECBBFCFF CALL PYG5_4Cr.00433D18 ; 用户名位数
0046812C |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0046812F |. 8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
00468135 |. E8 DEBBFCFF CALL PYG5_4Cr.00433D18
0046813A |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 注册码位数
0046813D |. E8 CABFF9FF CALL PYG5_4Cr.0040410C
00468142 |. 8BF0 MOV ESI,EAX
00468144 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0
00468148 |. 74 7E JE SHORT PYG5_4Cr.004681C8 ; 没填就跳走
0046814A |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
0046814E |. 74 78 JE SHORT PYG5_4Cr.004681C8
00468150 |. 83C6 08 ADD ESI,8 ; esi=用户名位数+8=4+8=c
00468153 |. 83EE 06 SUB ESI,6 ; esi=c-6=6
00468156 |. 8BC6 MOV EAX,ESI ; eax=esi=6
00468158 |. C1E0 0A SHL EAX,0A ; eax左移a=1800
0046815B |. B9 36000000 MOV ECX,36 ; ecx=36
00468160 |. 99 CDQ
00468161 |. F7F9 IDIV ECX ; eax=1800/36取商 71
00468163 |. 8BF0 MOV ESI,EAX ; esi=71
00468165 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00468168 |. 8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
0046816E |. E8 A5BBFCFF CALL PYG5_4Cr.00433D18 ; 注册码位数
00468173 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; 注册码送EAX
00468176 |. 50 PUSH EAX
00468177 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
0046817A |. 8BC6 MOV EAX,ESI ; EAX=71
0046817C |. E8 C3FBF9FF CALL PYG5_4Cr.00407D44 ; 算法CALL
00468181 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
00468184 |. 58 POP EAX ;
00468185 |. E8 CEC0F9FF CALL PYG5_4Cr.00404258 113 真码
0046818A |. 75 1E JNZ SHORT PYG5_4Cr.004681AA
0046818C |. A1 D8A64600 MOV EAX,DWORD PTR DS:[46A6D8]
00468191 |. E8 76C1F9FF CALL PYG5_4Cr.0040430C
00468196 |. 8BD0 MOV EDX,EAX
00468198 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0046819B |. E8 A4BEF9FF CALL PYG5_4Cr.00404044
004681A0 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
004681A3 |. E8 B8F5FBFF CALL PYG5_4Cr.00427760
004681A8 |. EB 3A JMP SHORT PYG5_4Cr.004681E4
004681AA |> A1 D4A64600 MOV EAX,DWORD PTR DS:[46A6D4]
004681AF |. E8 58C1F9FF CALL PYG5_4Cr.0040430C
004681B4 |. 8BD0 MOV EDX,EAX
004681B6 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
004681B9 |. E8 86BEF9FF CALL PYG5_4Cr.00404044
004681BE |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004681C1 |. E8 9AF5FBFF CALL PYG5_4Cr.00427760 ; 注册码错误
004681C6 |. EB 1C JMP SHORT PYG5_4Cr.004681E4
004681C8 |> A1 D0A64600 MOV EAX,DWORD PTR DS:[46A6D0]
第一个CALL
00407D44 56 PUSH ESI ; 71 为字符 q
00407D45 89E6 MOV ESI,ESP
00407D47 83EC 10 SUB ESP,10
00407D4A 31C9 XOR ECX,ECX
00407D4C 52 PUSH EDX
00407D4D 31D2 XOR EDX,EDX
00407D4F E8 A4FFFFFF CALL PYG5_4Cr.00407CF8 ; 113q 算法CALL
00407D54 89F2 MOV EDX,ESI
00407D56 58 POP EAX
00407D57 E8 E0C1FFFF CALL PYG5_4Cr.00403F3C
00407D5C 83C4 10 ADD ESP,10
算法CALL
00407CF8 08C9 OR CL,CL
00407CFA 75 17 JNZ SHORT PYG5_4Cr.00407D13
00407CFC 09C0 OR EAX,EAX
00407CFE 79 0E JNS SHORT PYG5_4Cr.00407D0E
00407D00 F7D8 NEG EAX
00407D02 E8 07000000 CALL PYG5_4Cr.00407D0E
00407D07 B0 2D MOV AL,2D
00407D09 41 INC ECX
00407D0A 4E DEC ESI
00407D0B 8806 MOV BYTE PTR DS:[ESI],AL
00407D0D C3 RETN
00407D0E B9 0A000000 MOV ECX,0A ; ecx=0a
00407D13 52 PUSH EDX
00407D14 56 PUSH ESI ; 每步的商参与下次运算 直到商为0
00407D15 31D2 XOR EDX,EDX ; eax=71
00407D17 F7F1 DIV ECX ; 71/oa 余数送DL=3 1 1
00407D19 4E DEC ESI
00407D1A 80C2 30 ADD DL,30 ; DL=3+30=33(字符3) 1+30=31(字符1) 1+30=31(字符1)
00407D1D 80FA 3A CMP DL,3A
00407D20 72 03 JB SHORT PYG5_4Cr.00407D25
00407D22 80C2 07 ADD DL,7
00407D25 8816 MOV BYTE PTR DS:[ESI],DL ; 字符113 就是真码
00407D27 09C0 OR EAX,EAX
00407D29 ^ 75 EA JNZ SHORT PYG5_4Cr.00407D15
00407D2B 59 POP ECX
00407D2C 5A POP EDX
--------------------------------------------------------------------------------
【经验总结】
我的试练码 hack 123456789
1.用户名长度+8-6后左移a 结果为 1800
2.1800/36 取商 71
3.71/A 商B 余数 3 3+30=33取字符3
B/A 商1 余数 1 1+30=31取字符1
1/A 商0 余数 1 1+30=31取字符1
即每步的商参与下次运算 直到商为0
113 即为注册码
--------------------------------------------------------------------------------
【版权声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
2007年06月04日 20:22:36
[ 本帖最后由 千里之外 于 2007-6-5 08:37 编辑 ] |
|