- UID
- 13307
注册时间2006-5-16
阅读权限10
最后登录1970-1-1
周游历练
TA的每日心情 | 难过 2016-9-22 16:32 |
---|
签到天数: 4 天 [LV.2]偶尔看看I
|
【文章标题】: PYG 5.4 Cracker 小组 课外练习10 PJ
【文章作者】: hczcyy
【作者邮箱】: [email protected]
【作者QQ号】: 55346577
【软件名称】: PYG 5.4 Cracker 小组 课外练习10
【下载地址】: 上面
【加壳方式】: 无
【保护方式】: 机器码+序列号
【使用工具】: peid,od
【操作平台】: winxp+sp2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
1.下载,运行随便输入87654321,提示输入的注册码不对.
2.用peid查壳,无壳显示ms c++7.0
3.用od载入.查找"输入的注册码不对",双击,来到这里:
004010F8 6A 68 push 68
004010FA FF75 08 push dword ptr ss:[ebp+8]
004010FD E8 CC000000 call <jmp.&USER32.GetDlgItemTextA> //取得假码 "87654321"
00401102 803D 6C304000 0>cmp byte ptr ds:[40306C],0 //比较第一个字符是否为"o",也就是比较是否输入
00401109 74 69 je short Crackme1.00401174 //为空,为空则完
0040110B 68 18304000 push Crackme1.00403018 ; 输入的序列号不正确!
00401110 68 6C304000 push Crackme1.0040306C ; e:\
00401115 E8 F0000000 call <jmp.&KERNEL32.lstrcmpA> //这个call是对假码进行比较,看是否为数字,不是数字则完
0040111A 85C0 test eax,eax
0040111C 74 56 je short Crackme1.00401174
0040111E B8 01000000 mov eax,1 // eax=1
00401123 0FA2 cpuid //获取cpuid ==eax=6b4(我的机器是这个,不同的应该不同)
00401125 8B0D 58304000 mov ecx,dword ptr ds:[403058] //序列号入栈 "ec83e421"
0040112B 33D2 xor edx,edx //清零 edx
0040112D F7E1 mul ecx //eax=eca×eax
0040112F 03C2 add eax,edx //eax=edx+eax (干脆edx清零了,这里怎么成了631?请高手指教)
00401131 50 push eax //结果入栈 "64153365".
00401132 68 3E304000 push Crackme1.0040303E ; %1x //把刚才计算出来的结果转换为字符串
00401137 68 5C304000 push Crackme1.0040305C ; ec83e421 //
0040113C E8 7B000000 call <jmp.&USER32.wsprintfA>
00401141 83C4 0C add esp,0C
00401144 68 6C304000 push Crackme1.0040306C ; e:\ //假码
00401149 68 5C304000 push Crackme1.0040305C ; ec83e421 //真码 ==>> 这里下内存注册机
0040114E E8 B7000000 call <jmp.&KERNEL32.lstrcmpA> //比较函数
00401153 85C0 test eax,eax
00401155 75 1D jnz short Crackme1.00401174 //关键跳转. 75==>>74 爆破
00401157 6A 10 push 10
00401159 E8 7C000000 call <jmp.&USER32.MessageBeep>
0040115E 6A 00 push 0
00401160 68 00304000 push Crackme1.00403000 ; 注册成功
00401165 68 09304000 push Crackme1.00403009 ; 谢谢你的注册!
0040116A FF75 08 push dword ptr ss:[ebp+8]
0040116D E8 6E000000 call <jmp.&USER32.MessageBoxA>
00401172 EB 0F jmp short Crackme1.00401183
00401174 68 18304000 push Crackme1.00403018 ; 输入的序列号不正确!
00401179 6A 68 push 68
0040117B FF75 08 push dword ptr ss:[ebp+8]
0040117E E8 69000000 call <jmp.&USER32.SetDlgItemTextA>
--------------------------------------------------------------------------------
【经验总结】
序列号:ec83e421
注册码:64153365
算法注册机我不会,因为用到了cpuid,估计这个用到了汇编编程.
第一次发文,请大家多多指教.
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG官方论坛, 转载请注明作者并保持文章的完整, 谢谢!
2006年05月22日 18:55:01 |
|